オンプレからAWS環境にMySQLを移行したあとに切り戻せる状態にする方法

技術本部 サービスリライアビリティグループ(SRG)の鬼海(@fat47)です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
本記事は、SRG 内にある DBWG(DBワーキンググループ)が全社内向けに提供しているデータベースに関する資料を公開します。
なにかの役に立てば幸いです。
 

概要


オンプレ環境とAmazon Aurora間でレプリケーションを貼りAWS移行を行うという内容でしたが、
実際の移行時には問題があったときにオンプレ環境に切り戻しを行えるように考慮する必要があります。
今回の記事ではAmazon Aurora環境をマスター、オンプレ環境をスレーブの状態にして切り戻しを迅速に行える方法を確認します。
 

環境


移行元情報

サーバOS:CentOS7
データベース:MySQL5.7.41

移行先

AWS Aurora
 
先日の記事と同じ環境です。
サービスメンテナンスを実施中に移行元のオンプレ環境から、Auroraに移行した直後を想定しています。
このAuroraからオンプレ環境に切り戻しを行える状態を構築します。
今回の手順では、アプリケーションからMySQLへの書き込みは停止している状態と仮定します。

全体の流れ


  • オンプレ環境→AWS Aurora環境のレプリケーションを停止する
  • Auroraのレプリケーション情報をリセットする
  • Auroraのbinlogポジションを確認する
  • Auroraに接続するための証明書バンドルを取得する
  • オンプレ側のMySQLでCHANGE MASTERしてAuroraをマスターにする
 
 

手順詳細


オンプレ環境→AWS Aurora環境のレプリケーションを停止する

AWS環境に切り替えでは、オンプレ環境とAurora環境の間のレプリケーションを停止します。
Auroraのレプリケーション停止
 
本当に停止したか一応確認します。

Auroraのレプリケーション情報をリセットする

Auroraに残ったレプリケーション情報は不要なのでリセットしてしまいます。
 
これできれいになりました。

Auroraのbinlogポジションを確認する

Aurora→オンプレのレプリケーションを構築するために、Auroraのbinlogポジションをメモしておきます。
 
Auroraでbinlogポジションを確認する

Auroraに接続するための証明書バンドルを取得する

AuroraのTLS接続するためにはAWSの証明書が必要となります。
 
証明書はリージョンごとにわかれていますので、今回はをダウンロードして、オンプレ側においてください。

オンプレ側のMySQLでCHANGE MASTERしてAuroraをマスターにする

オンプレのMySQLでCHANGE MASTERを実行します。LOG_FILEやPositionはさきほどメモしておいたやつを指定します。
Aurora側でフェイルオーバー等が発生すると、オンプレとのレプリケーションが止まってしまう点はご留意ください。
 
レプリケーションをスタートして確認します。

注意点


AuroraにMySQL clientで接続するときMySQL8.0のClientを使用しない

Aurora v2(MySQL5.7)には独自実装で一部MySQL8.0の機能を取り込んでいます。
それがオンプレ環境のMySQL5.7にレプリケートされるとエラーでレプリケーションが停止するというものです。
詳細は過去記事にて紹介しています。
 

Aurora側へのTLS接続はAWSが用意している証明書バンドルが必要

オンプレをマスターとしてレプリケーション構築したときは、自己署名証明書を使いましたが、
Auroraがマスターになる場合は自己署名証明書は利用できないので、AWSが用意している証明書バンドルを使用しましょう。
 

終わりに


今回はMySQLのAWS移行時で何かあったときに切り戻せる方法をご紹介しました。
事前検証などを入念に行って切り戻しが起きないことが一番いいのですが、万が一に備えて切り戻せるような手順を作っておくことは大切です。
 
SRG では一緒に働く仲間を募集しています。 ご興味ありましたらぜひこちらからご連絡ください。
 
このエントリーをはてなブックマークに追加