通过业务功能的写入主库通常只能有一个,故障时需要切换到备用主库
共识:1.使用TDDL的业务通常将mysql配置信息放在diamond
2.TDDL group作用是读写分离
部署步骤:1.mysql实例和mysql-agent比例1:1
2.增加和修改diamond配置(包括备库配置,修改group配置)
切换条件:
1.mysql异常
2.mysql主机死机
3.mysql主机宕机
4.mysql机器网络异常
1.agent异常
2.agent与mysql通信异常
3.agent机器宕机
4.agent机器网络异常
示例如下:
1.安装mysql-agent步骤如下:
#mysql相关配置。用于检测mysql健康状态
#mysql.db.type:druid atom plain
mysql.db.type= plain
mysql.jdbc.url = jdbc:mysql://10.58.50.110:3306/test
mysql.jdbc.username = root
mysql.jdbc.password =
mysql.jdbc.encKey =
#测试zk地址。把mysql健康状态汇集到zk.多个用逗号分割(生产zk地址为: 10.58.50.125:2181,10.58.50.52:2181,10.58.50.83:2181)
zkServers = 10.126.53.168:2181,10.126.53.169:2181,10.126.53.170:2181
#agent mysql健康检查参数设置 ,以下都是可选参数
#mysql健康检查时间间隔30s
#mysql.heartbeat.interval = 30
#初次检查宕机之后详细检查次数
#mysql.confirm.check.time = 5
# 初次检查宕机之后详细检查时间间隔1s
#mysql.confirm.check.interval = 1
nohup java -jar mysql-agent-0.0.1.jar config.properties &
2.假设已经增加了备库配置
3.修改group配置,添加主库的备库
以group_sample_0的配置为例
切换过程:
数据库qatest_normal_0_bac由于没有配置读写比例r/w所以不参与业务逻辑,配置成b作为主库的备库标识
当主库qatest_normal_0出现异常情况,qatest_normal_0_bac与qaest_normal_0交换配置qatest_normal_0_bac成为新的主库
业务方的diamond客户端感知配置变化,从而重新初始化数据源,完成mysql主库容灾的自动切换