怎么使用mysqlbinlog rewrite-db选项


本篇内容介绍了“怎么使用mysqlbinlog rewrite-db选项”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!5.7中新mysqlbinlog新增加了rewrite-db选项,在binlog_format=row时,可以转换库的名称:

在binlog_format=row时,不跨库
flush logs;
use tt;

mysql> create table c(id int);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into c values (1);
Query OK, 1 row affected (0.01 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysqlbinlog –rewrite-db=’tt->test’ 1.000002 > /tmp/a.sql
mysqlbinlog 1.000002 > /tmp/b.sql

把/tmp/a.sql /tmp/b.sql进行对比
diff /tmp/a.sql /tmp/b.sql
20c20


> use `tt`/*!*/;
41c41


> #160531 21:57:41 server id 1 end_log_pos 488 CRC32 0x1907f678 Table_map: `tt`.`c` mapped to number 110
46c46


> VZhNVxMBAAAAKgAAAOgBAAAAAG4AAAAAAAEAAnR0AAFjAAEDAAF49gcZ

在binlog_format=statement时,不跨库

mysql> show variables like ‘%binlog_f%’;
+—————+———–+
| Variable_name | Value |
+—————+———–+
| binlog_format | STATEMENT |
+—————+———–+
mysql> use tt;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> drop table c;
Query OK, 0 rows affected (0.00 sec)
mysql> flush logs;
Query OK, 0 rows affected (0.01 sec)
mysql> create table c(id int);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into c values (1);
Query OK, 1 row affected (0.00 sec)

diff /tmp/a.sql /tmp/b.sql
20c20


> use `tt`/*!*/;

看起来也是可以的。

但是对于在一个库中执行另外一个库中的操作 binlog_format=statement就不行了

mysql> show variables like ‘%binlog_f%’;
+—————+———–+
| Variable_name | Value |
+—————+———–+
| binlog_format | STATEMENT |
+—————+———–+
mysql> flush logs;
Query OK, 0 rows affected (0.00 sec)

mysql> create database song;
Query OK, 1 row affected (0.01 sec)

mysql> create table song.a(id int);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into song.a values (1);
Query OK, 1 row affected (0.00 sec)
[root@10-13-38-7data]# mysqlbinlog –rewrite-db=’song->test’ 1.000004 > /tmp/song.sql
[root@10-13-38-7data]# mysqlbinlog 1.000004 > /tmp/song_no.sql
[root@10-13-38-7data]# diff /tmp/song.sql /tmp/song_no.sql

结果是一样的,所以这时的转换是没有效果的
当binlog_format=row时,跨库
mysql> drop database song;
Query OK, 1 row affected (0.00 sec)

mysql> flush logs;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like ‘%binlog_f%’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| binlog_format | ROW |
+—————+——-+
1 row in set (0.00 sec)

mysql> create database song;
Query OK, 1 row affected (0.00 sec)

mysql> create table song.a(id int);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into song.a values (1);
Query OK, 1 row affected (0.00 sec)

[root@10-13-38-7data]# mysqlbinlog –rewrite-db=’song->test’ 1.000005 > /tmp/song.sql
[root@10-13-38-7data]# mysqlbinlog 1.000005 > /tmp/song_no.sql
[root@10-13-38-7data]# diff /开发云主机域名tmp/song.sql /tmp/song_no.sql
48c48


> #160531 22:19:53 server id 1 end_log_pos 652 CRC32 0xb9ccbd3d Table_map: `song`.`a` mapped to number 114
53c53


> iZ1NVxMBAAAALAAAAIwCAAAAAHIAAAAAAAEABHNvbmcAAWEAAQMAAT29zLk=“怎么使用mysqlbinlog rewrite-db选项”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!

相关推荐: 如何查看mysql用户名是什么

这篇文章给大家分享的是有关如何查看mysql用户名是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。不知道MySQL用户名是什么,那你就要想办法查看MySQL用户名。这里说一下MySQL的默认用户名和密码:用户名为root,密码为…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/27 22:05
下一篇 06/27 22:05

相关推荐