Maxwell을 사용하여 MySQL 바이너리 로그를 JSON 형식으로 출력

Maxwell을 이용하여 MySQL/Aurora의 바이너리 로그(binlog)를 읽어 JSON 형식으로 출력할 수 있습니다.

Maxwell 다운로드



다음 사이트에서 Maxwell을 다운로드할 수 있습니다.
htps : // 기주 b. 이 m/전으로 sk/마x우우 l/레아아세 s/도 w응아 d/v1.10.8/마x우우l-1.10.8. r. gz
$ curl -sLo - https://github.com/zendesk/maxwell/releases/download/v1.10.8/maxwell-1.10.8.tar.gz | tar zxvf -

MySQL/Aurora측 설정



1. 바이너리 로그 형식을 "ROW"(행 기반 로깅)로 변경합니다.
$ vi my.cnf

[mysqld]
server-id=1
log-bin=master
binlog_format=row

RDS를 사용하는 경우 매개 변수 그룹을 변경합니다.


2. MySQL/Aurora에서 Maxwell 사용자를 만들고 권한을 부여합니다.
mysql> CREATE USER 'maxwell' identified by 'password';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell' identified by 'password';
mysql> GRANT ALL on maxwell.* to 'maxwell';

Maxwell 시작



다음 명령을 사용하여 STDOUT(표준 출력) 모드에서 Maxwell을 시작합니다.
$ cd maxwell-1.10.8
$ bin/maxwell --user='maxwell' --password='password' --host='xxxxxxxx.rds.amazonaws.com' --producer=stdout

JSON 형식 binlog 출력



동작 확인으로서 MySQL측 이하의 SQL을 발행합니다.
mysql> INSERT INTO user_info VALUES (0, 'admin', 'password', '[email protected]');
Query OK, 1 row affected (0.01 sec)

mysql> update user_info set username='user', email='[email protected]';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> delete from user_info;
Query OK, 1 row affected (0.01 sec)

다음 JSON이 출력됩니다.
{"database":"test_db","table":"user_info","type":"insert","ts":1508315079,"xid":929,"commit":true,"data":{"id":0,"username":"admin","password":"password","email":"[email protected]"}}
{"database":"test_db","table":"user_info","type":"update","ts":1508315160,"xid":1012,"commit":true,"data":{"id":0,"username":"user","password":"password","email":"[email protected]"},"old":{"username":"admin","email":"[email protected]"}}
{"database":"test_db","table":"user_info","type":"delete","ts":1508315171,"xid":1018,"commit":true,"data":{"id":0,"username":"user","password":"password","email":"[email protected]"}}

인용

좋은 웹페이지 즐겨찾기