二、IDC间的mysql数据复制
按照 mysql master-->middle slave-->slave的实施策略,其它3个IDC的mysql都去和IDC A的mysql slave进行数据复制同步。
需要明确的是其它3个IDC的mysql都并不是一个空的数据库,而是原本就和IDC A的库表结构、规模相同、相当的。我们在实施另外3个IDC mysql与IDC A的mysql slave进行数据复制时,仍然需要使用Replicate-do-table功能来设置过滤条件,仅允许指定的部分表可以同步数据。
与此同时,其它3个IDC的数据库中未参与到主从复制中的那些库表,仍然需要继续被自己集群内的业务应用进行读、写。
这里就不再重复主从配置方法了,请参照前面即可。该方案实施后,在现有网络条件下、现有数据量条件下,运行良好。
在对以上方案进行反复测试的过程中,我也发现mysql服务并不会去检查slave上表的数据是否真得与master上在各个方面都是完全一致的。你完全可以在不影响到主从复制间发生表主键冲突的条件下,向slave上的表中插入数据。
而且,在仅同步mysql主从间的一部分表的条件下,无论是master上还是slave上的那些没参与到主从数据复制任务中的库表,仍然可以像往常一样得读写,而不会相互影响或制约。