オンプレ環境とAmazon Aurora間のMySQLレプリケーションをインターネット経由でおこなう
技術本部 サービスリライアビリティグループ(SRG)の鬼海(@fat47)です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
なにかの役に立てば幸いです。
概要検証の環境移行元情報移行先移行先(AWS)での準備バックアップ用のS3バケットを作るDBクラスタパラメータグループの作成移行元(オンプレ)での準備XtraBackupによるフルバックアップの取得とS3へのアップロードインターネット経由から移行元サーバにアクセスできるようにする自己署名証明書を作成してMySQLサーバに適用するレプリケーション用のユーザ作成移行先(AWS)でレプリケーション設定までの流れS3のバックアップデータからクラスタを作成レプリケーションを開始するポジションの確認作成したクラスタで証明書ファイルの読み込み作成したクラスタとオンプレ間でレプリケーション開始終わりに
概要
オンプレ環境(プライベートクラウド含む)からAWS環境に移行を行う際、MySQLのレプリケーションを使ってデータベースの移行を行うことがあると思います。
その際、オンプレ環境とAWS間で専用ネットワークを構築するAWS Direct Connectを利用することもあるかと思いますが、
このドキュメントではDirect Connectを使わずに、インターネット経由で安全にMySQLレプリケーションを構築する手順をご紹介します。
検証の環境
移行元情報
サーバOS:CentOS7
データベース:MySQL5.7.41
移行先
AWS Aurora
移行元のMySQLをマスター、Auroraをスレーブとする環境を構築していきます。
移行先(AWS)での準備
バックアップ用のS3バケットを作る
移行先のAWSアカウントで、DBバックアップを置くためのS3バケットを作成しましょう。
DBクラスタパラメータグループの作成
クラスタパラメータグループを作成して、の値にを指定します。
移行元(オンプレ)での準備
XtraBackupによるフルバックアップの取得とS3へのアップロード
PerconaのXtraBackupをつかってフルバックアップを取得し、S3にアップロードしましょう。
フルバックアップでmysqldumpを使わない理由は、データサイズが大きくなると時間がかかりすぎるためです。
XtraBackupのインストール
XtraBackupの実行
AWS CLIをつかってS3にアップロードしているので、AWS CLIから移行先AWS環境にログインできている状態にしておいてください。
その他指定しているオプションについては下記の公式ドキュメントをご確認ください。
インターネット経由から移行元サーバにアクセスできるようにする
インターネットからオンプレ環境にアクセスできるように設定する必要があります。
ご自分のオンプレ環境にてロードバランサー等やFWの設定を変更して設定してください。
FWの設定にはAWS AuroraのグローバルIPを指定して許可する必要がありますが、
これはAuroraのクラスタを作成したあとに作成されるので、後回しにします。
クラスタが作成されたあとに、ライターインスタンスのエンドポイントのIPアドレスを確認しましょう。
例)
自己署名証明書を作成してMySQLサーバに適用する
オンプレ環境のMySQLとAurora間をTLS通信するために自己署名証明書を作っていきます。
CA/server/client鍵を作る時にCNを聞かれますが、それぞれ異なるCNを指定します。ほかにも色々聞かれますが何も入力しなくてEnterで良いです。
my.cnfで証明書ファイルを読み込ませます。
MySQL再起動
証明書が読まれているか確認します。
have_opensslがYESになっていれば大丈夫です。
レプリケーション用のユーザ作成
レプリケーションユーザを作成します。サンプルでは%にしてますが、IPアドレスはちゃんと絞ることを推奨です。
移行先(AWS)でレプリケーション設定までの流れ
S3のバックアップデータからクラスタを作成
AWS CLIからも作成できますが、今回はコンソール上から作成してみます。
AWS RDSを開き、画面下部にある「S3から復元する」を選択します。
バックアップデータがあるバケットを選択します。例では「kikai-test」
Auroraのバージョンも選択します。ここではAurora 2.11.2を選択します。
RDSからS3バケットへのアクセスを許可するIAMロールも自動作成にしています。
必要情報が入力できたらクラスタ作成を押します。
レプリケーションを開始するポジションの確認
クラスタが作成されたら、クラスタをクリックして開き「ログとイベント」タブにある「最近のイベント」を確認します。
ここでバックアップ取得時のbinlogファイル名やポジションが確認できるのでメモしておきます。
作成したクラスタで証明書ファイルの読み込み
クラスタに証明書ファイルを取り込みます。
先の手順で作成した証明書ファイルをAuroraクラスタに読み込ませしょう。
証明書ファイルの内容をメモに書きます。
クラスタに接続して、↑の証明書を読み込ませます。
作成したクラスタとオンプレ間でレプリケーション開始
メモしておいたポジションを指定してオンプレ側とレプリケーションを組みます。
最後の数字1はTLS接続を有効にするという意味なので必須です。
レプリケーションを開始して、ステータス確認します。
これで無事オンプレ→Aurora間でレプリケーションを構築することができました。
終わりに
Direct Connectを利用しなくてもインターネット経由でレプリケーションを構築することができました。
AWS移行時にレプリケーションが利用できると多くのメリットがあるので、いざというとき使えるように素振りしておきましょう。
また、今回の構成で切り戻しを想定した逆方向(Aurora→オンプレ)のレプリケーションについて、別途記事を執筆予定です。
SRG では一緒に働く仲間を募集しています。
ご興味ありましたらぜひこちらからご連絡ください。