啟用 MariaDB 二進位日誌註釋 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

啟用 MariaDB 二進位日誌註釋

在 MariaDB 資料庫執行個體中,您可以使用Annotate_rows事件,使用導致資料列事件的SQL查詢複本來註釋資料列事件。此方法提供類似功能,以在 RDS for MySQL 資料庫執行個體上啟用 binlog_rows_query_log_events 參數。

您可以建立自訂參數群組,並將 binlog_annotate_row_events 參數設為 1,以全域啟用二進位日誌註釋。您也可以透過呼叫 SET SESSION binlog_annotate_row_events = 1,於工作階段層級啟用註釋。若已啟用二進位日誌,請使用 replicate_annotate_row_events 將二進位日誌註釋複寫至複本執行個體。不需要特殊權限即可使用這些設定。

下列為 MariaDB 中行形式交易的範例。將交易隔離等級設定為專供讀取時,將觸發使用行形式日誌。

CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; BEGIN INSERT INTO square(x, y) VALUES(5, 5 * 5); COMMIT;

若沒有註釋,交易的二進位日誌項目將如下所示:

BEGIN /*!*/; # at 1163 # at 1209 #150922 7:55:57 server id 1855786460 end_log_pos 1209 Table_map: `test`.`square` mapped to number 76 #150922 7:55:57 server id 1855786460 end_log_pos 1247 Write_rows: table id 76 flags: STMT_END_F ### INSERT INTO `test`.`square` ### SET ### @1=5 ### @2=25 # at 1247 #150922 7:56:01 server id 1855786460 end_log_pos 1274 Xid = 62 COMMIT/*!*/;

下列陳述式為此相同交易啟用工作階段等級的註釋,並在完成交易後停用:

CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION binlog_annotate_row_events = 1; BEGIN; INSERT INTO square(x, y) VALUES(5, 5 * 5); COMMIT; SET SESSION binlog_annotate_row_events = 0;

若有註釋,交易的二進位日誌項目將如下所示:

BEGIN /*!*/; # at 423 # at 483 # at 529 #150922 8:04:24 server id 1855786460 end_log_pos 483 Annotate_rows: #Q> INSERT INTO square(x, y) VALUES(5, 5 * 5) #150922 8:04:24 server id 1855786460 end_log_pos 529 Table_map: `test`.`square` mapped to number 76 #150922 8:04:24 server id 1855786460 end_log_pos 567 Write_rows: table id 76 flags: STMT_END_F ### INSERT INTO `test`.`square` ### SET ### @1=5 ### @2=25 # at 567 #150922 8:04:26 server id 1855786460 end_log_pos 594 Xid = 88 COMMIT/*!*/;