1.
从:
vi /etc/my.cnf
replicate_do_db=quyou
测试步骤:
主:
mysql> use quyou;
mysql> select * from test;
+------+
| id |
+------+
| 1 |
| 3 |
| 2 |
+------+
3 rows in set (0.00 sec)
mysql> use changyou;
mysql> insert into quyou.test values(4);
Query OK, 1 row affected (0.00 sec)
mysql> select * from quyou.test;
+------+
| id |
+------+
| 1 |
| 3 |
| 2 |
| 4 |
+------+
4 rows in set (0.00 sec)
从:
mysql> use quyou;
mysql> select * from test;
+------+
| id |
+------+
| 3 |
| 1 |
| 2 |
+------+
3 rows in set (0.00 sec)
结果:数值4未同步过来
原因分析:
对于基于语句级的复制(或mixed级别),replicate_do_db这个参数指的是默认的数据库,即当前使用的数据库(use database),在默认数据库下更新replicate_do_db指定的数据库,从库不会随之更新。
2.
从:
vi /etc/my.cnf
replicate_do_db=quyou
repalicate_wild_do_table=quyou.%
主:
mysql> use changyou;
mysql> select * from quyou.test;
+------+
| id |
+------+
| 1 |
| 3 |
| 2 |
| 4 |
+------+
4 rows in set (0.00 sec)
mysql> insert into quyou.test values(5);
mysql> select * from quyou.test;
+------+
| id |
+------+
| 1 |
| 3 |
| 2 |
| 5 |
| 4 |
+------+
5 rows in set (0.00 sec)
从:
mysql> use quyou;
mysql> select * from test;
+------+
| id |
+------+
| 3 |
| 1 |
| 2 |
+------+
3 rows in set (0.00 sec)
结果:5未插入,同步未成功
结论:即使同时使用这两个参数,同步也会存在问题。
3.
从:
vi /etc/my.cnf
replicate_wild_do_table=quyou.%
主:
mysql> use changyou;
mysql> select * from quyou.test;
+------+
| id |
+------+
| 1 |
| 3 |
| 2 |
| 5 |
| 4 |
+------+
5 rows in set (0.00 sec)
mysql> insert into quyou.test values(6);
Query OK, 1 row affected (0.00 sec)
mysql> select * from quyou.test;
+------+
| id |
+------+
| 1 |
| 3 |
| 6 |
| 2 |
| 5 |
| 4 |
+------+
6 rows in set (0.00 sec)
从:
mysql> use quyou;
mysql> select * from test;
+------+
| id |
+------+
| 3 |
| 1 |
| 2 |
| 6 |
+------+
4 rows in set (0.00 sec)
结果:6同步成功
结论:对于binlog_format=statement或mixed,只在从库设置replicate_wild_do_table= quyou.%或replicate_wild_ignore_table即可。此时可以避免跨库更新问题。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26366371/viewspace-2077745/ ,如需转载,请注明出处,否则将追究法律责任。