• 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
  • 相关阅读:
    广州公交百态之座位
    遍地大头者,岂尽聪明人
    小和尚
    c++中调用其他应用程序的方法(winexec shellexecute createprocess)
    MFC Is MVC
    Dialog Data Exchange
    MFC Extension dll VS Regular Dll
    Don't optimize prematurely
    Menu Basic
    Don't pessimize prematurely
  • 原文地址:https://www.cnblogs.com/igoodful/p/14550598.html
Copyright © 2020-2023  润新知