

# MariaDB 바이너리 로그 주석 활성화
<a name="USER_LogAccess.MariaDB.BinarylogAnnotation"></a>

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/*!*/;
```