Maxwellを使ってMySQLのバイナリログをJSON形式で出力する
Maxwellを利用し、MySQL/Auroraのバイナリログ(binlog)を読み込み、JSON形式で出力することが可能です。
Maxwellのダウンロード
以下のサイトからMaxwellをダウンロードできます。
https://github.com/zendesk/maxwell/releases/download/v1.10.8/maxwell-1.10.8.tar.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
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]"}}
引用
Author And Source
この問題について(Maxwellを使ってMySQLのバイナリログをJSON形式で出力する), 我々は、より多くの情報をここで見つけました https://qiita.com/KevinFQ/items/28da1655a3448e4ca5d5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .