达梦主备集群通常指的是采用实时归档的集群,而在配置实时归档的情况下,有高性能和事务一致性两种模式。根据达梦集群归档的同步机制,事务一致性是不存在主备延迟的,即事务一致性的延迟最终体现在集群写入效率上即客户端插入效率上,这种从数据库侧监控比较困难;高性能模式下是存在同步延迟的,即在某些极端条件下在主库的写入commit是无法立刻在备机查询到对应的记录。因此针对达梦实时归档+高性能模式下的集群同步延迟监控做分享。
因此对达梦主备集群的延迟,就可以定义为达梦实时归档+高性能模式机制下,延迟超过合理区间或会影响实际的使用,那么如果两个条件都不满足的话,便可认为达梦主备集群无延迟或者延迟可以忽略,针对其中的两点
1.不会影响实际使用:这个一种较为主观or一种可以通过测试得来的结论,也就是在前期的适配测试中可以发现,因此这种不在本文的讨论中
2.合理区间:主备延迟也就是在规定的时间内,那么本文主要讲解如何对主备延迟进行量化,再根据即时的生产时间制定阈值来进行监控
我们手中的工具有三个视图 VRAPPLY_STAT** 、 **VRLOG 、V$LSN_TIME
https://eco.dameng.com/document/dm/zh-cn/pm/data-watch-appendix.html#17.V$RAPPLY_STAT
https://eco.dameng.com/document/dm/zh-cn/pm/dm8-admin-manual-appendix.html#6.%20%E6%97%A5%E5%BF%97%E7%AE%A1%E7%90%86
select timestampdiff(sql_tsi_second,ifnull(apply_cmt_time,0),ifnull(last_cmt_time,0)) timediff from v$rapply_stat;
select file_lsn from v$rlog;
达梦2023年版本提供了lsn 和 time的转换函数,但是两个函数都需要借助于映射表v$lsn_time ,该映射表每3s收集一次映射关系,在实际的监控种会存在转换报错的问题,即映射表中并没有存储对应的映射关系。
/* lsn 转时间戳 */
SELECT LSN_TO_TIMESTAMP(52317);
/* 时间戳 转 lsn */
SELECT TIMESTAMP_TO_LSN('2023-03-02 11:01:50');
在有了以上的监控手段后,监控延迟的规则就比较清晰了
select timestampdiff(sql_tsi_second,ifnull(apply_cmt_time,0),ifnull(last_cmt_time,0)) timediff from v$rapply_stat;
2.在触发上一个告警的前提下,对比主备库的file_lsn 进行二次检验,即主备的file_lsn差值超过1000即认为延迟存在,小于1000则认为延迟可以恢复
(select file_lsn from v$rlog)主库获取 - (select file_lsn from v$rlog)备库获取 > 1000;
3.如果持续触发120s(2min),则认为延迟存在,即通过持续时间和延迟阈值的方式来双重监控,屏蔽掉因某个突发大事务导致延迟突增后自动恢复的场景
当然我们可以通过持续监控某个
场景描述: 主备集群延迟超过5min且持续2min 未自动恢复
**业务影响:**1)业务整体响应缓慢 2)业务部分模块响应缓慢 3)业务方暂无反馈,但主备延迟持续升高
预期目标: 1)定位延迟升高的原因 2)降低业务响应时间 3)主备延迟缩短,并预估达到一致的时间
**可能原因:**1)业务层有大量的数据持续进行写入 2)主备机的磁盘写入效率不同,备机略差于主机 3)网络延迟,备机接收日志存在延迟
可采取的处理方式:
1)排除网络延迟,提高备机硬件资源提高重演效率
2)将备机提出集群,(这种情况下如果主机归档被清理,那么备机加入集群后无法进行历史数据恢复)
## 前台启动对应集群的监视器 ./dmmoitor dmmonitor.ini ## 使用SSYDBA用户进行登录 login ##将制定备库实例分离出守护集群 detach database 备库实例名 ##待写入量降低后,将分离出的实例重新加入守护集群 attach database 备库实例名
3)在磁盘未满负载情况下,可以开启备机并行重演 (开启备机重演后备机查询为脏读对备机查询会带来性能损耗,因此同时限制用户对备机进行查询)
## 使用SSYDBA用户进行在集群所有节点执行 sp_set_para_value(2,'REDOS_PARALLEL_NUM',8); sp_set_para_value(2,'REDOS_ENABLE_SELECT',0); 重启数据库后生效
文章
阅读量
获赞