SQL Server 2005复制可用性测试

一、基本的功能测试:
DML操作同步:

  1. 有主键表的增/删/改数据同步(同步正常)
  2. 无主键表的增/删/改数据同步(无主键不能作同步复制,必须将每一张表加主键,否则无法配置到同步环境)
  3. 包含索引的表的增/删/改数据同步(同步正常)
  4. 包含触发器的表的增/删/改数据同步(如果A表包含有触发器,当增加记录时向B表插入数据,备库上会报错)
  5. 包含级连删除/修改数据的表的删/改数据同步 (同步正常)
  6. 包含大对象数据的表增/删/改数据同步(同步正常)


DDL操作同步:

  1. 增加表(不能同步新增加的表及数据,但不会报错)
  2. 删除表出错
    drop  table dbo. test
    消息 3724,级别 16,状态 2,第 1 行
    无法对表 ' dbo.test ' 执行删除,因为它正用于复制。
  3. 修改表名出错
    EXECUTE  sp_rename N ' dbo.test ', N 'test1''OBJECT'
    消息 15051,级别 11,状态 1,过程 sp_rename,第 301 行
    该表已为了复制而被发布,所以无法重命名。)
  4. 增加表索引 (不能同步索引,但不会报错)
  5. 删除表索引 (不能同步索引,但不会报错)
  6. 修改表索引 (不能同步索引,但不会报错)
  7. 增加表字段 (主DB增加字段会同步到复制DB ALTER TABLE dbo.test ADDtestcolumn NVARCHAR(20) null
  8. 删除表字段 (同步正常)
  9. 修改表字段 (同步正常)
  10. 存储程序类同步(有时会报错,需要进一步跟踪原因)

二、稳定性及同步监控测试

  1. 发布服务器断网,sql server服务关闭,重启动,关机的时候,对已经设置好的复制没有多大影响 。中断期间,分发和订阅都接收到没有复制的事务信息。
  2. 分发服务器断网,sql server服务关闭,重启动,关机的时候,对已经设置好的复制有一些影响。中断期间,发布服务器的事务排队堆积起来(如果设置了较长时间才删除过期订阅的选项, 繁忙发布数据库的事务日志可能会较快速膨胀), 订阅服务器会因为访问不到发布服务器,反复重试,我们可以设置重试次数和重试的时间间隔(最大的重试次数是9999, 如果每分钟重试一次,可以支持约6.9天不出错) 。
  3. 分发服务器sql server服务启动,网络接通以后,发布服务器上的堆积作业将按时间顺序作用到订阅机器上: 会需要一个比较长的时间(实际上是生成所有事务的insert,update,delete语句,在订阅服务器上去执行)
  4. 订阅服务器断网,sql server服务关闭,重启动,关机的时候,对已经设置好的复制影响比较大,需要重新初试化。

三、复制配置注意事项

  1. 如果想同步主DB上的非聚集索引,需要在主DB发布属性项目中对表点右键,选择设置所有表项目的属性,将复制非聚集索引设为true
  2. 主DB发布属性项目中增加新的对象后,需要重新初始化快照,才能将新的对象同步。增加新的对象不需要重新初始化订阅
  3. 可以个性化的新建复制DB上的索引,当建立后要注意重新初始化订阅后,需要重新建立这些主DB上不存在的索引
  4. 具体事务复制延迟的时间受网络,事务并发等因素的影响,局域网内的事务复制一般情况下延迟在3、4秒左右,第一次初始化的时间较长,可以利用备份文件初始化。所以对于实时性要求高的业务逻辑不能依赖于复制DB。
  5. 为了降低复制对主DB性能的影响,可以增加筛选仅复制需要的数据和字段;将订阅作为请求式的;独立分发服务器。
  6. 通过使用事务复制或合并复制发布的表不能使用TRUNCATE TABLE语句,只能考虑使用DELETE 语句代替

四、复制DB的应用场景
关于复制数据库的使用,我设想了几种复制DB的应用场景:

  1. 作为开发人员日常查询只读数据库;
  2. 一般分析处理及统计数据的后台;
  3. 数据仓库和报表数据源;
  4. 可在复制DB上个性化的自定义一些索引针对某些应用的查询;
  5. 可以考虑将复制DB作为一些缓存数据或非实时性业务查询的数据源;
  6. 考虑利用复制DB改进每晚一些作业的处理。
  7. 可以考虑根据业务或用户的访问或者访问的实时性,将主数据库划分为多个分布式的数据库,这时复制作为实施分布式数据的一种方法,可以利用复制创建数据的副本

二.应用中遇到的问题
当应用复制一段时间后,碰到了这样一个问题,在插入nvarchar(max)类型的字段值时,报异常”Length of LOB data (92472) to be replicated exceeds configured maximum 65536. The statement has been terminated.” (“要复制的 LOB 数据的长度(92472)超出了配置的最大值 65536。语句已终止。”)
经过查找一番资料,发现服务器配置选项里有一项”Max Text Repl Size”(“最大文本复制大小”),它的默认值为65536,可以通过修改这个值解决上面的问题。
通过SELECT * FROM sys.configurations WHERE NAME LIKE'%repl%'
查询得到max text repl size (B) 最大值为2147483647,可以结合实际情况设置小于等于这个数值的值。

 

原文链接:http://fred.oracle1.com/weblog/2010/05/04/sql-server-2005-replication/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值