关于复制过滤规则,其中一篇文档写得非常详细,参考:[MySQL 复制过滤详解](https://yq.aliyun.com/articles/59268)。详细解读这个文章后,知道复制过滤应该要如果配置,配置后应该注意些哪些点。
如下是总结的配置建议:
1、建议binlog_format配置使用row,主从数据一致性很重要,没有理由不选择(除非特殊业务,会产生特别大的binlog日志)
2、复制过滤使用--replicate-wild-do-table 或者 --replicate-wild-ignore-table,其它复制过滤参数建议不用配置。(无论binlog是row还是statment,都是最安全的)
3、5.7以后版本可使用CHANGE REPLICATION在线调整过滤,不过得记得同步在配置文件中也要添加,避免重启后复制过滤丢失。
这里再在如上的文档中补充一点,关于Create database,drop database,alter database (后称库级别ddl)操作,在配置从库复制过滤规则里需要知道的细节。特别在做drop database操作时,更要三思。
对于库级别的ddl,除了Replicate_Do_DB外,其它复制过滤可能和理解的不一样。
举例1:
Replicate_Ignore_DB:replcation_db
主库执行库级别ddl: create/alter/drop database replcation_db,是能正常同步到从
举例2:
Replicate_Wild_Do_Table:test_db.%
主库执行库级别ddl: create/alter/drop database replcation_db,是能正常同步到从
举例3:
Replicate_Wild_Ignore_Table:replcation_db.%
主库执行库级别ddl: create/alter/drop database replcation_db,是能正常同步到从
如果要只同步某一个库的库级别ddl,只有Replicate_Do_DB是生效的:
Replicate_Do_DB:replcation_db_test
主库执行库级别ddl: create/alter/drop database replcation_db,不能正常同步到从
所以,上游执行库级别ddl时,需要特别注意:
1、确认是否有下游
2、确认是否需要将ddl操作同步到下游
3、确认下游中是否有相应的数据库
最后再举一个真实案例:
在一个多源复制环境下,多源S实例从A,B,C三个源复制数据,但都只是同步ABC中的某一个库。
Replicate_Wild_Do_Table:A_db.%,B_db.%,C_db.%
统计需要,在S实例进行跑相应的数据,结果数据存储在S实例的R_db中。由于历史原因,在C实例中有一个空库R_db,最后在清理无用库时,将C实例的R_db库执行了drop database R_db,导致将S实例的R_db库也drop掉了,最终悲剧发生了,辛好是还有备份,但也只能慢慢等待备份数据恢复,还丢失了部分数据。
文章最后更新时间:
2019年10月16日 11:56:05
Muchas gracias. ?Como puedo iniciar sesion?
naturally like your web sitee however you need to test the spelling on quite a few of yolur posts. Many of them are rife with spelling problems and I to find it verdy troublesome too inform the truth however I will certainly come back again. аккумуляторы varta site автомобильные аккумуляторы
Muchas gracias. ?Como puedo iniciar sesion?
Muchas gracias. ?Como puedo iniciar sesion?
write my essays writemypaper.online
write my essays writemypaper.online
write my essays writemypaper.online