replicate_do_db和repalicate_wild_do_table跨库同步问题

来源:互联网 发布:比较好的网红的淘宝店 编辑:程序博客网 时间:2024/06/08 01:14
测试一:
从:
vi /etc/my.cnf
replicate_do_db=hadoop
测试步骤:
主:
mysql> use hadoop;
mysql> select * from test;
+------+
| id   |
+------+
|    1 |
|    3 |
|    2 |
+------+
3 rows in set (0.00 sec)
mysql> use love;
mysql> insert into hadoop.test values(4);
Query OK, 1 row affected (0.00 sec)
mysql> select * from hadoop.test;
+------+
| id   |
+------+
|    1 |
|    3 |
|    2 |
|    4 |
+------+
4 rows in set (0.00 sec)
从:
mysql> use hadoop;
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指定的数据库,从库不会随之更新。




测试二:
从:
vi /etc/my.cnf
replicate_do_db=hadoop
repalicate_wild_do_table=hadoop.%
主:
mysql> use love;
mysql> select * from hadoop.test;
+------+
| id   |
+------+
|    1 |
|    3 |
|    2 |
|    4 |
+------+
4 rows in set (0.00 sec)
mysql> insert into hadoop.test values(5);
mysql> select * from hadoop.test;
+------+
| id   |
+------+
|    1 |
|    3 |
|    2 |
|    5 |
|    4 |
+------+
5 rows in set (0.00 sec)
从:
mysql> use hadoop;
mysql> select * from test;
+------+
| id   |
+------+
|    3 |
|    1 |
|    2 |
+------+
3 rows in set (0.00 sec)
结果:5未插入,同步未成功

结论:即使同时使用这两个参数,同步也会存在问题。


测试三:

从:
vi /etc/my.cnf
replicate_wild_do_table=hadoop.%
主:
mysql> use love;
mysql> select * from hadoop.test;
+------+
| id   |
+------+
|    1 |
|    3 |
|    2 |
|    5 |
|    4 |
+------+
5 rows in set (0.00 sec)
mysql> insert into hadoop.test values(6);
Query OK, 1 row affected (0.00 sec)
mysql> select * from hadoop.test;
+------+
| id   |
+------+
|    1 |
|    3 |
|    6 |
|    2 |
|    5 |
|    4 |
+------+
6 rows in set (0.00 sec)
从:
mysql> use hadoop;
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= hadoop.%或replicate_wild_ignore_table即可。此时可以避免跨库更新问题。
0 0
原创粉丝点击