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即可。此时可以避免跨库更新问题。
从:
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
- replicate_do_db和repalicate_wild_do_table跨库同步问题
- 小心使用replicate_do_db和replicate_ignore_db
- 小心使用replicate_do_db和replicate_ignore_db
- 小心使用replicate_do_db和replicate_ignore_db
- 小心使用replicate_do_db和replicate_ignore_db(转)
- 线程和同步问题
- 问题--关于同步和异步
- ajax同步和异步问题
- 进程的同步,互斥和经典进程同步问题
- 关于同步操作和数据同步的问题
- 关于线程和进程的同步问题
- 关于线程和进程的同步问题
- 关于DWR的同步和异步问题!
- 同步和互斥的问题
- rhythmbox 乱码问题 和 歌词显示 同步
- mysql主从数据库同步和字符集问题
- 本地数据库和服务器数据库同步问题
- 关于同步通信和异步通信问题
- Java 基础之(六) final关键字
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- php的empty函数参数不能是一个函数
- 修改CentOs7 上Docker默认文件系统DeviceMapper为OverlayFS
- 函数参数前是否加&的问题
- replicate_do_db和repalicate_wild_do_table跨库同步问题
- Spring4 Bean管理的注解实现
- Mob的ShareSDK
- php递归函数相关知识
- 将外部数据文件导入到hive中
- RxBinding的使用,实现数据和View的绑定
- 303. Range Sum Query - Immutable
- 日志处理方法及系统
- mysql 主从复制配置