概要
- 運用中のAurora MySQLをAurora Serverless v2に移行するのにbinlogレプリケーションを試した
- ドキュメントの通りに進めたら取得できると書いてあった情報が表示されない事態になる
- サポートによると設定に問題がなくてもドキュメントにある方法でbinlogデータが取れないケースがあるとのこと
- 2022/07時点での挙動で、今後修正されそう
やりたかったこと
Aurora MySQL 5.7系のクラスターとAurora Serverless v2でバイナリログレプリケーションを実施したかった。
最終的にはAurora Serverless v2だけにしてDB関連のメンテを楽にしたかった。
実施した内容
以下のドキュメントのステップに沿って実施。
作業対象がバイナリログレプリケーションをサポートするクラスターであることは確認済み。
- パラメータグループのbinlog_formatをMIXEDに設定しbinlogを有効化
- バイナリログの保持タイムフレームを設定
- スナップショットの取得
- スナップショットの復元
ここまで実施、以降の作業はドキュメントには以下のとおり書いてあったが、binlogの情報が最近のイベントに出てこない。
コンソールで、[データベース] を選択し、復元された Aurora DB クラスターのプライマリインスタンス (書き込み) を選択してその詳細を表示します。
[最近のイベント] までスクロールします。
binlog ファイル名と場所を含むイベントメッセージが表示されます
Binlog position from crash recovery is binlog-file-name binlog-position
(余談)うまくいかない事を受けてのServerless化対応
最終的にはServerless v2にするのが目的だったので、レプリケーションはせずにServerlessへの移行を実施した。
Aurora MySQL v3であればインスタンスの変更からAurora Serverless v2に移行することが可能。
実施直後はインスタンスに接続できたが、数分するとMySQL のCan't connectエラーが発生するようになる(ダウンタイムの発生)。
今回は1インスタンス実施して10min程度でインスタンスへの接続が可能になった。
サポート問い合わせ
ドキュメント通りに実施したのにbinlog情報が出ない旨を問い合わせ。
返信要約
- DBクラスター / インスタンスの設定に問題がない状況でも、Auroraでは binlog 情報がスナップショットからの復元時にイベントに表示されないことがある
- ソース DB クラスターで binlog の出力を有効化した後に、バイナリログが出力されるような操作を実施していない場合、スナップショットの復元時にバイナリログの情報がコンソールに表示されない/エラーログに記録されない場合がある
- binlog出力の有効化した後にバイナリログが出力される操作を実施してからスナップショットの取得をすること
とのことなので場合によっては今回の状態になることが分かった。
現状での対応策
サポートの返信によると以下でbinlogの情報を取得できるとのこと。
- クラスターの復元後、RDSコンソールから対象クラスターのプライマリインスタンスを選択する
- 最も古いエラーログを確認する (error/mysql-error-running.log)
- ログの中から復元時の binlog のポジションとファイル名を確認する
確かに /aws/rds/cluster/hogefuga-cluster/error
で binlog
フィルターをかけるとファイル名とポジションらしき情報が出てくる。
(ただしドキュメントのフォーマットと少々異なる模様)
この現象については「担当部署もすでに把握しており対応を検討している状況」だそうなので今後修正されることを期待。