zoukankan      html  css  js  c++  java
  • mysql主从切换选择

    ######################

    前提:

    1,架构:lvs+kingshard+mysql主从

    2,将mysql集群的拓扑结构更改为:旧主库M1<<--新主库M2<<-- 其他从库S1、S2、S3等

    一、先将主库设置成只读模式,等新主库完全追上旧主库后,再通过kingshard中间件切换主库:最佳选择方案:优点是简单快速安全:缺点是会有几秒主库不可写:

    1,变更kingshard中间件从库的流量:先将中间件配置的从库更换到新主库的所有从库:此时从库就是新主库的所有从库。

    2,将旧主库M1配置成只读模式:set global  read_only=1;        新主库配置成可读写模式:set global  read_only=0;   然后在旧主库上执行show master statusG; 在新主库上执行show slavestatusG;直到新主库追上旧主库,便可执行下面步骤:

    3,变更kingshard中间件的主库流量:将中间件配置的主库更换到新主库:

    二、更改旧主库和新主库的步长:其他步骤和一差不多,在步骤2有差异,不同的是,不再将旧主库设置为只读了。优点是主库一直可读写:缺点是麻烦不安全且容易搞出问题:

    1,变更kingshard中间件从库的流量:先将中间件配置的从库更换到新主库的所有从库:此时从库就是新主库的所有从库。

    2,更改步长:但需要让连接生效:老的连接并不会立马生效,因此需要将sleep的连接杀掉一次:

    # ################################

        # show variables like '%auto_inc%';

        # 旧主库更改为:set global auto_increment_increment=2;set global auto_increment_offset=2;set global read_only=0;

         # pt-kill --host=旧主库 --port=3306  --user=UUU --password=XXX  --match-command Sleep  --kill  --victims all --interval 10 --print

        # show variables like '%auto_inc%';

        ################################ 旧主库执行汇总如下:

        # set global sync_binlog=1; set global innodb_flush_log_at_trx_commit=1; flush logs; set global long_query_time=0; set global auto_increment_increment=2;set global auto_increment_offset=2;set global read_only=0;

        ################################### 新主库执行:

        # show variables like '%auto_inc%';

        # 新主库更改为:set global auto_increment_increment=2;set global auto_increment_offset=1;set global read_only=0;

        # pt-kill --host=新主库 --port=3306 --user=UUU --password=XXX  --match-command Sleep  --kill  --victims all --interval 10 --print

        # show variables like '%auto_inc%';

        ################################### 新主库执行汇总:

        # set global sync_binlog=1; set global innodb_flush_log_at_trx_commit=1; flush logs;set global auto_increment_increment=2;set global auto_increment_offset=1;set global read_only=0;

    3,主从切换。

    4,再次更改新主库的步长,恢复原来的步长。

    5,执行如下命令让更改步长生效:不然业务那边insert的数据,还是不连续的自增id。目的就是处理自增值offset生效问题。

    # flush tables;

    # flush logs;

    ######################

    igoodful@qq.com
  • 相关阅读:
    ABA问题怎么解:AtomicStampedReference和AtomicMarkableReference
    原子类型累加器
    Spring Boot使用嵌入式容器,那怎么配置自定义Filter呢
    痞子衡嵌入式:语音处理工具pzh-speech诞生记
    痞子衡嵌入式:串口调试工具pzh-com诞生记(6)- 打包发布(PyInstaller3.3.1)
    痞子衡嵌入式:串口调试工具pzh-com诞生记(5)- 软件优化
    痞子衡嵌入式:串口调试工具pzh-com诞生记(4)- 联合调试(vspd, sscom, PyCharm2018.2)
    痞子衡嵌入式:串口调试工具pzh-com诞生记(3)- 串口功能实现(pySerial)
    痞子衡嵌入式:串口调试工具pzh-com诞生记(2)- 界面构建(wxFormBuilder3.8.0)
    痞子衡嵌入式:极易上手的可视化wxPython GUI构建工具(wxFormBuilder)
  • 原文地址:https://www.cnblogs.com/igoodful/p/14550598.html
Copyright © 2011-2022 走看看