积极答复者
SQL Server 2005 实时数据同步方案?

问题
答案
-
p2p replication 不太适合每个节点都可能同时更新同一条记录的情况, 冲突不好控制.
合并复制会的冲突处理更好一些.
当然, 复制是异步的, 这点在之前就有提了
- 已标记为答案 Nai-dong Jin - MSFTModerator 2010年10月4日 2:50
全部回复
-
p2p replication 不太适合每个节点都可能同时更新同一条记录的情况, 冲突不好控制.
合并复制会的冲突处理更好一些.
当然, 复制是异步的, 这点在之前就有提了
- 已标记为答案 Nai-dong Jin - MSFTModerator 2010年10月4日 2:50
-
sqlserver 数据库同步方式,一般可以考虑以下方案
1:sql server 自带的工具
2:第三方同步工具
3:编码方式实现(等同于第三方同步工具)
我们项目中,就使用了一个通用的数据库访问组件,可以实现数据实时同步到从节点;当然,也可以配置成通过sql server 自带的同步方式,或者使用第三方同步工具同步;
如下,是一个数据库切分方案配置规则表
<?xml version="1.0" encoding="UTF-8" ?>
<DbLoadBalanceConfig allowCheckDbStatus="true" checkDbStatusSpanSeconds="5" weightCalType="Lztech.DbLoadBalance.WeightCalculationRoundRobin, Lztech.DbLoadBalance">
<adminEmails emails="xxx@xxx.com|xxx@xxx.com" status="true" type="Lztech.AdministratorNotice.SendEmail,Lztech.AdministratorNotice" />
<adminMobilePhones mobilePhones="13800008888|13900008888" status="true" type="Lztech.AdministratorNotice.SendSMS,Lztech.AdministratorNotice" />
<DbLoadBalanceConfigs>
<DatabaseConfigInfo uniqueDbAlias="UserMark_Base" desc="测试库">
<splitPoints>
<Point masterConnName="User_MasterDb" masterDbName="User_MasterDb" masterCanRead="true" masterCanWrite="true" masterStatus="true" pointBegin="0" pointEnd="0" allowSyncDataByProgram="true">
<slaves>
<Slave connName="User_SlaveDb1" dbName="User_SlaveDb1" canRead="true" status="true" weight="1" />
<Slave connName="User_SlaveDb2" dbName="User_SlaveDb2" canRead="true" status="true" weight="1" />
</slaves>
</Point>
</splitPoints>
<tableNameRules>
<TableNameRule prefix="tbUser" allowSplitTable="false" splitType="NULL" format="0" />
<TableNameRule prefix="tbAuth" allowSplitTable="false" splitType="NULL" format="0" />
</tableNameRules>
</DatabaseConfigInfo>
</DbLoadBalanceConfigs>
</DbLoadBalanceConfig>实际项目中,可以根据数据规模及生产环境,做出正确的选择;因为每种方式都有利有弊。
而且做了主从结构后,一般的工作模式是,需要定期维护的;否则,都有可能存在数据不一致的情况。
只是提出个人看法,楼主可以参考。