签到成功

知道了

CNDBA社区CNDBA社区

TDSQL 集群 主备切换的 判断标准 和 常见因素

2021-08-20 20:07 3058 0 原创 TDSQL
作者: dave

1 主备切换的判断标准

TDSQL 集群中在主库异常的情况下,会自动触发主备库的切换,实际上这里是有一个心跳在后台一直运行的。

http://www.cndba.cn/dave/article/4668
http://www.cndba.cn/dave/article/4668
http://www.cndba.cn/dave/article/4668

agent进程每隔1s会向DB插入一条心跳数据来探测DB是否正常存活,比如:

replace into SysDB.StatusTableForHb set tid=’7f3ac4ff9700’,ts =from_unixtime(1544778177),ip=’100.71.78.29’,port=4022http://www.cndba.cn/dave/article/4668http://www.cndba.cn/dave/article/4668http://www.cndba.cn/dave/article/4668

当心跳插入执行时间超过10s会返回超时错误,也算作插入失败。 http://www.cndba.cn/dave/article/4668

http://www.cndba.cn/dave/article/4668

这里要注意心跳插入不受主备强同步的影响。http://www.cndba.cn/dave/article/4668

当agent持续20s向DB插入心跳失败会触发主备切换,这里这里的切换不一定成功。

[dave@www.cndba.cn ~]# mysql -htdsql1 -udave -pdave -P15001
Welcome to the MariaDB monitor.  Commands end with ; or /g.
Your MySQL connection id is 2339
Server version: 5.7.33-V2.0R681D005-v17-20210125-2105-log Source di                                                   stribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others                                                   .

Type 'help;' or '/h' for help. Type '/c' to clear the current input                                                    statement.

MySQL [(none)]> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| mysql               |
| performance_schema  |
| sys                 |
| sysdb               |
| tdsqlpcloud         |
| tdsqlpcloud_monitor |
+---------------------+
7 rows in set (0.00 sec)

MySQL [(none)]> use sysdb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MySQL [sysdb]> show tables;
+------------------------+
| Tables_in_sysdb        |
+------------------------+
| statustable            |
| statustableforhb       |
| usercheck_meta_history |
+------------------------+
3 rows in set (0.00 sec)

MySQL [sysdb]> select * from statustableforhb;
+--------------+-------------+------+---------------------+
| tid          | ip          | port | ts                  |
+--------------+-------------+------+---------------------+
| 7f1d4dffb700 | 10.206.0.7  | 4001 | 2021-08-19 14:11:41 |
| 7f1d4effd700 | 10.206.0.7  | 4001 | 2021-08-19 14:11:42 |
| 7f1d4ffff700 | 10.206.0.7  | 4001 | 2021-08-19 14:11:40 |
| 7fa26a7fc700 | 10.206.0.13 | 4001 | 2021-08-19 13:11:42 |
| 7fa26b7fe700 | 10.206.0.13 | 4001 | 2021-08-19 13:11:40 |
| 7fa27d7fa700 | 10.206.0.13 | 4001 | 2021-08-19 13:11:41 |
| 7fe67cff9700 | 10.206.0.7  | 4001 | 2021-08-20 19:38:06 |
| 7fe67dffb700 | 10.206.0.7  | 4001 | 2021-08-20 19:38:04 |
| 7fe67e7fc700 | 10.206.0.7  | 4001 | 2021-08-20 19:38:05 |
+--------------+-------------+------+---------------------+
9 rows in set (0.00 sec)

MySQL [sysdb]>

2 触发主备切换的常见因素

上面提到的心跳只是判断标准,导致心跳异常的,主要有如下几个因素:http://www.cndba.cn/dave/article/4668

  1. DB意外重启
  2. 内核BUG引起系统hang住等
  3. 磁盘故障,文件系统故障等
  4. 资源竞争引起agent心跳写入超时, 这里的竞争包括:
  • IO 100%
  • Innodb并发线程池耗尽
  • Binlog写入竞争

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2261
    原创
  • 3
    翻译
  • 578
    转载
  • 191
    评论
  • 访问:7968931次
  • 积分:4346
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ