命令记不住

登陆

Mysql 半同步和过滤复制

Mysql半同步和过滤复制

主从数据一致性问题

1.半同步复制工作原理的变化

  • 1、 主库执行新的事务,commit时,更新 show master status\G ,触发一个信号给
  • 2、 binlog dump 接收到主库的 show master status\G信息,通知从库日志更新了
  • 3、 从库IO线程请求新的二进制日志事件
  • 4、 主库会通过dump线程传送新的日志事件,给从库IO线程
  • 5、 从库IO线程接收到binlog日志,当日志写入到磁盘上的relaylog文件时,给主库ACK_receiver线程
  • 6、 ACK_receiver线程触发一个事件,告诉主库commit可以成功了
  • 7、 如果ACK达到了我们预设值的超时时间,半同步复制会切换为原始的异步复制.

2.配置半同步复制
加载插件

主:

    INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

从:

    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

查看是否加载成功:

show plugins;
启动:

主:

    SET GLOBAL rpl_semi_sync_master_enabled = 1;

从:

    SET GLOBAL rpl_semi_sync_slave_enabled = 1;

重启从库上的IO线程

STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;

查看是否在运行

主:

    show status like 'Rpl_semi_sync_master_status';

从:

    show status like 'Rpl_semi_sync_slave_status';

3.过滤复制

3.1主库过滤

Binlog_Do_DB
Binlog_Ignore_DB
3.2从库过滤

Replicate_Do_DB: 
Replicate_Ignore_DB: 

Replicate_Do_Table: 
Replicate_Ignore_Table: 


Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: