使用限制(以row模式,statement更复杂):
- 原表上不能有触发器存在;
- 主从同步只同步部分表时,从机会出现同步中断,rename找不到临时表;
- osc配置不写入binlog时,且同步全部表,同步会出现中断,主机触发的SQL同步到从机会找不到临时表;
binlog_format=row
结论:
- 主从都存在trigger时,主库会记录下所有的操作,包含trigger的操作,从库上数据和主库一致.
- 主有trigger,从库上没有trigger时,依然不影响主从同步
- 主上无trigger,从上有trigger时 ,主从数据依然一致,从库上的trigger没有被触发
binlog_format=statement
结论:
- 主从都存在trigger时,主库会记录sql语句,不包含trigger的操作,从库上数据和主库一致..
- 主有trigger,从库上没有trigger时,从库上没有trigger时,触发器不会被执行,主从数据不一致
- 主上无trigger,从上有trigger时 ,从库上的trigger被触发,主从数据不一致
需要考虑是在主机还是从机上执行,binlog_format、sql_log_bin、是否过滤表,才能执行成功,建议使用pt-osc时还是先在测试环境上执行。
Comments