结合TDDL的mysql主库的容灾切换方案

背景:mysql主库单点问题

通过业务功能的写入主库通常只能有一个,故障时需要切换到备用主库

结合TDDL的mysql主库的容灾切换方案

共识:1.使用TDDL的业务通常将mysql配置信息放在diamond

           2.TDDL group作用是读写分离

部署步骤:1.mysql实例和mysql-agent比例1:1

                  2.增加和修改diamond配置(包括备库配置,修改group配置)

切换条件:

  • mysql

                  1.mysql异常

                  2.mysql主机死机

                  3.mysql主机宕机

                  4.mysql机器网络异常

  • agent

                  1.agent异常

                  2.agent与mysql通信异常

                  3.agent机器宕机

                  4.agent机器网络异常

示例如下:

1.安装mysql-agent步骤如下:

  • 下载mysql-agent可运行jar包

          <dependency>
                   <groupId>com.gome.architect</groupId>
                   <artifactId>mysql-agent</artifactId>
                   <version>0.0.1</version>
           </dependency>

  • 修改配置,将配置放在conf.properties(名称不限),将mysql-agent和conf.properties放在同一个目录中(配置文件可以放在子目录中)

          #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.多个用逗号分割
          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

  • 启动mysql-agent

          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主库容灾的自动切换

发布了21 篇原创文章 · 获赞 37 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/notOnlyRush/article/details/50442991