06月11, 2020
收藏本站

pt-online-schema-change好用,但不能滥用

使用限制(以row模式,statement更复杂):

  1. 原表上不能有触发器存在;
  2. 主从同步只同步部分表时,从机会出现同步中断,rename找不到临时表;
  3. osc配置不写入binlog时,且同步全部表,同步会出现中断,主机触发的SQL同步到从机会找不到临时表;

binlog_format=row
结论:

  1. 主从都存在trigger时,主库会记录下所有的操作,包含trigger的操作,从库上数据和主库一致.
  2. 主有trigger,从库上没有trigger时,依然不影响主从同步
  3. 主上无trigger,从上有trigger时 ,主从数据依然一致,从库上的trigger没有被触发

binlog_format=statement
结论:

  1. 主从都存在trigger时,主库会记录sql语句,不包含trigger的操作,从库上数据和主库一致..
  2. 主有trigger,从库上没有trigger时,从库上没有trigger时,触发器不会被执行,主从数据不一致
  3. 主上无trigger,从上有trigger时 ,从库上的trigger被触发,主从数据不一致

需要考虑是在主机还是从机上执行,binlog_format、sql_log_bin、是否过滤表,才能执行成功,建议使用pt-osc时还是先在测试环境上执行。

image.png


Comments