MariaDB 바이너리 로그 주석 활성화
MariaDB DB 인스턴스에서, Annotate_rows
이벤트를 사용하여 행 이벤트로 인해 발생한 SQL 쿼리의 복사본으로 해당 행 이벤트에 주석을 달 수 있습니다. 이 접근 방식은 RDS for MySQL DB 인스턴스에서 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/*!*/;