ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 为什么HDR Secondary会丢失已经提交的交易

为什么HDR Secondary会丢失已经提交的交易

原创 Linux操作系统 作者:lenx2000 时间:2012-08-22 21:46:12 0 删除 编辑

http://www-31.ibm.com/support/techdocs/cn/viewdoc/detail?DocId=2697869H05000

[为什么HDR Secondary会丢失已经提交的交易]

内容提要:在HDR 环境中,很多客户都配置了手工切换。但是当Primary因为各种原因非正常关闭时,如果DBA没有直接将Secondary切换成Primary或者Standard,而是直接重启Secondary。在Secondary中的从上次checkpoint点以后的交易都将丢失。

说明:上述情况并非故障或者异常,而是HDR设计原理。该现象可以通过下述步骤重现。

1,建议HDR复制环境(使用手工切换,复制周期DRINTVAL设为1秒)

2,在Primary上创建数据库(Buffered logging 或者Unbuffered logging 没有实质影响)和表

3,在Primary使用简单的insert into向表中插入数据。如果是Buffered logging数据库,那么当Logical log Buffer被写满时数据才会被复制,并且有部分数据因驻留在Logical log buffer中没有被复制。如果是Unbuffered logging数据库,则Primary 与 Secondar数据一致。

无论使用哪种日志模式。由于使用insert into语句,所有数据插入交易都是马上提交的。所以Secondary上看到的数据都是已经提交的数据。

4,kill -9 将Primary杀掉。

5,在Secondary上执行select county(*) from。确认数据仍然存在。

6,onmode -ky;oninit 重启Secondary。

7,select count(*) from 发现表中数据条数是0。

总结:造成该现象的原因是在HDR环境中,Secondary数据一定要与Primary上一致,而Primary 和 Secondary之间同步的点是checkpoint。当Primary被kill掉后,Primary无法给Secondary发送信号,而Secondary在DRTIMEOUT之前都认定Primary是存在的。这时如果直接重启Secondary,它会认定需要从上一个一致点,也就是最后一次checkpoint重新进行复制。因此,将已经提交的数据丢弃掉。

经过分析可以发现,DBA应该正确判断情况采取正确处理措施。上述现象不会对数据和生产造成任何问题。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11134849/viewspace-741622/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-19

  • 博文量
    153
  • 访问量
    477283