mysql主備--觸發器trigger

環境: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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章