環境:mysql主備
主庫上沒有觸發器,備庫上有觸發器。主庫上執行一條更新語句:
[root@hzdbtest ~]# mysql
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 524
Server version: 5.6.19-log MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> update oc_coupon_info set create_time='' where zid=365108;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
結果備庫的觸發器沒有被觸發。
查看主庫的binlog日誌,看看語句執行情況:
[root@test-DBmaster-172-18-19-44 mysql]# mysqlbinlog --no-defaults mysql-bin.017994 > mysql-bin-017994_1.txt
[root@test-DBmaster-172-18-19-44 mysql]# vi mysql-bin-017994_1.txt
#180930 9:22:19 server id 43 end_log_pos 53274831 CRC32 0xf008e0da Table_map: `ordercenter`.`oc_coupon_info` mapped to number 6191
# at 53274831
#180930 9:22:19 server id 43 end_log_pos 53275355 CRC32 0xca1150e3 Update_rows: table id 6191 flags: STMT_END_F
BINLOG '
SyWwWxMrAAAAewAAAM/oLAMAAC8YAAAAAAEAC29yZGVyY2VudGVyAA5vY19jb3Vwb25faW5mbwAW
Aw8PDw8P9vb2Aw8PDw8PDw8DAw8PDyRgAIcAhwCHAIcAEgASABIAPAA8ACwBPAA8ADwAlgCHAIcA
hwD+/z/a4Ajw
SyWwWx8rAAAADAIAANvqLAMAAC8YAAAAAAEAAgAW////////AADENJIFACBmMGZmZWZkNDljNzc0
MThlOGJkN2RiNWM2NjhkYzIzZg5DVDE4MDkyODEwMDAwNw5BQzE4MDkyODEwMDAwNw5DUDE4MDky
OTEwMDA1Mw5NSTE4MDQyNzcwMDI0NoAAAAAAAAAPgAAAAAAAAA+AAAAAAAAAFAEAAAATMjAxOC0w
OS0yOCAwMDowMDowMhMyMDE4LTEwLTI4IDIzOjU5OjU5AAAQNDQ5NzQ3MTYwMDA0MDAwMRMyMDE4
LTA5LTI5IDE1OjM2OjA2AAZTSTIwMDMBAAAAABIxMDA5MzA4LTEzNzg1NDQ4LTECbGQAAMQ0kgUA
IGYwZmZlZmQ0OWM3NzQxOGU4YmQ3ZGI1YzY2OGRjMjNmDkNUMTgwOTI4MTAwMDA3DkFDMTgwOTI4
MTAwMDA3DkNQMTgwOTI5MTAwMDUzDk1JMTgwNDI3NzAwMjQ2gAAAAAAAAA+AAAAAAAAAD4AAAAAA
AAAUAQAAABMyMDE4LTA5LTI4IDAwOjAwOjAyEzIwMTgtMTAtMjggMjM6NTk6NTkAABA0NDk3NDcx
NjAwMDQwMDAxEzIwMTgtMDktMjkgMTU6MzY6MDMABlNJMjAwMwEAAAAAEjEwMDkzMDgtMTM3ODU0
NDgtMQJsZONQEco=
'/*!*/;
# at 53275355
查看主庫binlog模式:
mysql> show variables like 'binlog_format';
+---------------+-----------+
| Variable_name | Value |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set (0.00 sec)
可以看到該語句以row格式的binlog被記錄,並在備庫上執行。這樣備庫觸發器無法被觸發。
修改binlog格式:
mysql> SET global binlog_format = 'STATEMENT';
Query OK, 0 rows affected (0.00 sec)
主庫再次執行相同的語句後查看binlog:
[root@test-DBmaster-172-18-19-44 mysql]# mysqlbinlog --no-defaults mysql-bin.017994 > mysql-bin-017994_2.txt
[root@test-DBmaster-172-18-19-44 mysql]# vi mysql-bin-017994_2.txt
#180930 9:41:35 server id 43 end_log_pos 53530613 CRC32 0xec8483aa Query thread_id=59562894 exec_time=0 error_code=0
use `ordercenter`/*!*/;
SET TIMESTAMP=1538271695/*!*/;
update oc_coupon_info set create_time='3' where zid=365108
此時語句被完整還原出來,備庫的觸發器被觸發。
修改主庫的配置文件,將binglog格式修改爲statement,防止下次重啓的時候變回mixed。