我是ac#程序员,而不是DBA,而且我有(财)数据库pipe理任务。 所以在回答这个问题时请记住这一点。
我所要做的是在两个数据库之间创build一个实时双向镜像,并在它们之间build立一个10M的连接。 所以当改变它更新另一个。 这不是一个标准的数据镜像/故障转移任务,其中一个数据库是主数据库,另一个是备份数据库 – 两者都是实时的,每个数据库都需要立即反映对另一个数据库所做的更改。
在我的脑海里,这听起来像是一个很高的命令,甚至可能是不可能的 – 毕竟在瞬息万变的环境中,有很多的用户,这将是大量的资源密集型的,并在各处造成锁和队列。
可能吗? 如果是这样,任何人都可以给我一些基本的指示和/或指向我在一些地方开始我的阅读和研究?
干杯,马特
你会看到某种forms的复制 – 合并或交易。 有很多指导select哪种types最适合您的环境。
当然,如果从字面上理解,业务倾向于要求的东西往往是不可能的,例如,他们总是始终希望100%一致,没有延迟,对于任何types的查询都没有处罚。 你将不得不pipe理一些期望。 这永远不会是免费的。
复制也倾向于要求模式更改(例如将rowguidcol列添加到事务发布的表)。 如果你确实下了复制路线,我build议你先尝试在一些小练习数据库上进行设置,以了解它是如何工作的,以及在这个过程中可能遇到的问题。
这听起来像是在合并复制之后。 这并不简单,需要您的应用程序知道这是如何工作的。
合并复制通常会导致头痛,很多深夜,错过最后期限,如果您没有经验丰富的DBA人员来确保设置正确,则会导致停机。 即使如此 – 我有客户报告错误,“不能发生”,因为稍微错误configuration的环境。
我强烈build议看看基本要求是什么,而不是盲目追随合并复制path。
根据我的经验,我发现在大多数情况下,我通常能够逃避日志传送和/或SQL镜像。
为了实现这个目标,你需要testing的确实是复制,而不是任何forms: 事务性对等复制 (对等是从SQL 2005版本引入的)。 我不是说这没有麻烦,而且会很容易…你需要一个懂DBA的人,否则你将会对你不了解的东西负责:)
合并复制可以合并在复制中的每个参与服务器上完成的修改,但不是实时合并的。 每个服务器都是自主的,直到解决冲突。 合并发生时您有计划。 这不是实时的。
事务性对等复制通过在多个服务器实例(也称为节点)上维护数据副本来提供横向扩展和高可用性解决scheme。 build立在事务复制的基础上,点对点复制近乎实时地传播事务性一致的变化。 这使得需要横向扩展读取操作的应用程序能够跨越多个节点分配来自客户端的读取。 由于数据在几乎实时的节点间进行维护,因此对等复制可提供数据冗余,从而提高了数据的可用性。
请考虑阅读下面的文件,祝你好运。 它可以是有趣的:)
http://www.sql-server-performance.com/articles/dba/PeertoPeer_Replication_in_SQL_Server_2008_p2.aspx