Aurora(MySQL互換)のバイナリログを確認する方法
|
Auroraのバイナリログは、データベースの変更履歴を記録し、障害復旧やデータの再構築に役立つ重要な情報源です。この記事では、バイナリログを確認する方法についてメモします。
バイナリログ確認手順
バイナリログ名と設定の確認
Auroraのクラスターに接続後、SHOW BINARY LOGS
コマンドでbinlog名とファイルサイズを確認できます。
mysql> SHOW BINARY LOGS;
+----------------------------+-----------+
| Log_name | File_size |
+----------------------------+-----------+
| mysql-bin-changelog.000095 | 14498981 |
+----------------------------+-----------+
下記のようなエラーが返ってきた場合、binlogが存在しないので、binlogを有効にする必要があります。
mysql> SHOW BINARY LOGS;
ERROR 1381 (HY000): You are not using binary logging
mysql> SHOW GLOBAL VARIABLES LIKE 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
↓バイナリログの保持期間の確認。valueカラムがNULLの場合、デフォルトの設定(1日の保持期間)。
mysql> call mysql.rds_show_configuration;
+------------------------+-------+------------------------------------------------------------------------------------------------------+
| name | value | description |
+------------------------+-------+------------------------------------------------------------------------------------------------------+
| binlog retention hours | NULL | binlog retention hours specifies the duration in hours before binary logs are automatically deleted. |
+------------------------+-------+------------------------------------------------------------------------------------------------------+
バイナリログのダウンロード
Auroraに接続した状態でSHOW BINLOG EVENTS
を実行して確認することが可能です。しかし接続した状態で確認するのは大変なので、クライアント側にダウンロードし、lessコマンドなどで確認するのが良いです。
ダウンロードするにはmysqlbinlog
コマンドを使います。
mysqlbinlog \
--read-from-remote-server \
--host='${HOST_NAME}' \
--port=3306 \
--user='${USER_NAME}' \
--password='${PASSWORD}' \
--verbose \
--result-file=/tmp/binlog_test \
mysql-bin-changelog.000029
AWSのドキュメントには--raw
というオプションを有効にしたコマンドが例として記載されていますが、これをつけると生のバイナリデータで保存されます。
バイナリログを開く
lessコマンドなどで開けば確認できます。
まとめ
バイナリログを確認しないといけない状況はかなり稀ですし、そもそもバイナリログを確認しなくて良い設計・運用にすべきなのでしょうが、万が一の復旧作業に役立つかもしれません。