🚀

RDSのブルーグリーンデプロイ前にレプリケーション状態を確認する

に公開

最近、RDSのブルーグリーンデプロイを使う機会がありました。
切り替え前には、レプリケーションがちゃんとできているかを確認する必要があり、
その際に SHOW REPLICA STATUS\G コマンドを使って状態をチェックしていました。

そのときに確認していたポイントをまとめていこうと思います。

レプリケーション確認時に見ていたポイント

前提として、今回は Aurora MySQLを使用していて、8.0.mysql_aurora.3.08.2 → 8.0.mysql_aurora.3.09.0 への切り替えというシンプルなものとなっています。

  • bg-deployment-1(ブルーグリーンデプロイ構成のトップ)
    • Blue(現行環境)
      • クラスター:dg-deploy-database-1
        • バージョン:8.0.mysql_aurora.3.08.2
      • インスタンス:dg-deploy-database-1-instance-1
    • Green(新環境)
      • クラスター:dg-deploy-database-1-green
        • バージョン:8.0.mysql_aurora.3.09.0
      • インスタンス:dg-deploy-database-1-instance-1-green

ブルーグリーンデプロイ環境を作成したあと、本番とちゃんと同期しているか気になったので、
SHOW REPLICA STATUS\G コマンドでレプリケーションの状態を確認していました。

$ mysql -h [Endpoint] -P 3306 -u [User] -p
mysql> SHOW REPLICA STATUS\G

具体的に見ていたのは、以下のあたりです:

  • Replica_IO_State: "Waiting for source to send event" になっていれば、ソース(本番側)からのイベント待機中で、接続が安定している状態。
  • Seconds_Behind_Source: 0 に近い(または 0)なら、同期がほぼリアルタイムで進んでいると判断。
  • Replica_IO_Running / Replica_SQL_Running: 両方とも Yes であること。
  • Last_IO_ErrorLast_SQL_Error: 空や0であればエラーなし。

このあたりを確認して、
「これなら切り替えても大丈夫そうだな」と判断できるかを見ていました。

まとめ

ブルーグリーンデプロイでの切り替え前に、あらかじめレプリケーションの状態を確認しておくことで切り替え可否の判断材料の1つになると思いました。
以上、ありがとうございました!

参考

13.7.7.35 SHOW REPLICA | SLAVE STATUS ステートメント

Discussion