replicate_do_db和repalicate_wild_do_table跨库同步问题

本文探讨了在数据库同步中,使用replicate_do_db和replicate_wild_do_table参数可能出现的问题。测试结果显示,即使同时配置这两个参数,也可能会导致同步异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试一:
从:
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即可。此时可以避免跨库更新问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值