MySQL的复制(Replication),实际上就是通过将Master端的Binlog利用IO线程通过网络复制到Slave端,然后再通过SQL线程解析Binlog中的日志并应用到数据库中来实现的
所以,Binlog量的大小对IO线程及Msater和Slave端之间的网络都会产生直接的影响
MySQL中Binlog的产生量是没办法改变的,只要Query改变了数据库中的数据,就将对应的Event记录到Binlog中。但有8个参数可以让我们控制,指定要复制或要忽略的DB或Table
Binlog_Do_DB:设定哪些数据库(Schema)需要记录Binlog;
Binlog_Ignore_DB:设定哪些数据库(Schema)不要记录Binlog;
Replicate_Do_DB:设定要复制的数据库(Schema),多个DB用逗号(“,”)分隔;
Replicate_Ignore_DB:设定可以忽略的数据库(Schema);
Replicate_Do_Table:设定要复制的Table;
Replicate_Ignore_Table:设定可以忽略的Table;
Replicate_Wild_Do_Table:功能同Replicate_Do_Table,但可以带通配符来进行设置;
Replicate_Wild_Ignore_Table:功能同Replicate_Ig-nore_Table,可带通配符设置
上面这8个参数中的前面两个是设置在Master端的,后面6个参数则是设置在Slave端的
通过上面这8个参数,可以将从Master到Slave的Binlog量尽可能减少,从而减小网络流量和IO线程的IO量,还能减少SQL线程的解析与应用SQL的数量,最终达到改善Slave上的数据延时问题