共計 3234 個字符,預計需要花費 9 分鐘才能閱讀完成。
本篇內容介紹了“怎么使用 mysqlbinlog rewrite-db 選項”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
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 `test`/*!*/;
—
use `tt`/*!*/;
41c41
#160531 21:57:41 server id 1 end_log_pos 488 CRC32 0x1907f678 Table_map: `test`.`c` mapped to number 110
—
#160531 21:57:41 server id 1 end_log_pos 488 CRC32 0x1907f678 Table_map: `tt`.`c` mapped to number 110
46c46
VZhNVxMBAAAALAAAAOgBAAAAAG4AAAAAAAEABHRlc3QAAWMAAQMAAXj2Bxk=
—
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 `test`/*!*/;
—
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-7 data]# mysqlbinlog –rewrite-db= song- test 1.000004 /tmp/song.sql
[root@10-13-38-7 data]# mysqlbinlog 1.000004 /tmp/song_no.sql
[root@10-13-38-7 data]# 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-7 data]# mysqlbinlog –rewrite-db= song- test 1.000005 /tmp/song.sql
[root@10-13-38-7 data]# mysqlbinlog 1.000005 /tmp/song_no.sql
[root@10-13-38-7 data]# diff /tmp/song.sql /tmp/song_no.sql
48c48
#160531 22:19:53 server id 1 end_log_pos 652 CRC32 0xb9ccbd3d Table_map: `test`.`a` mapped to number 114
—
#160531 22:19:53 server id 1 end_log_pos 652 CRC32 0xb9ccbd3d Table_map: `song`.`a` mapped to number 114
53c53
iZ1NVxMBAAAALAAAAIwCAAAAAHIAAAAAAAEABHRlc3QAAWEAAQMAAT29zLk=
—
iZ1NVxMBAAAALAAAAIwCAAAAAHIAAAAAAAEABHNvbmcAAWEAAQMAAT29zLk=
“怎么使用 mysqlbinlog rewrite-db 選項”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!