Amazon Relational Database Service (Amazon RDS) for MySQL データベースインスタンスをオンプレミスサーバーにコピーしたいと考えています。
簡単な説明
Amazon RDS for MySQL からオンプレミスのデータベースサーバーにデータを移行するには、まず AWS でリードレプリカを作成します。次に、レプリケーションターゲットを Amazon RDS for MySQL リードレプリカからオンプレミスサーバーに切り替えます。
GTID ベースのレプリケーションを使用する場合は、「外部のソースインスタンスを使用したバイナリログファイル位置のレプリケーションの設定」を参照してください。
解決策
1.レプリケートする DB インスタンスの自動バックアップが有効になっていることを確認します。この例では、DB インスタンスは RDS-activeです。
**注:**バックアップの最小保持期間は 1 日です。
2.同じ設定を使用して DB インスタンスのリードレプリカを作成します。この例では、レプリカはRDS-standbyです。
3.RDS-standby DB インスタンスにログインし、レプリカが RDS-activeに追従していることを確認します。
mysql> show slave status \G
**注:**seconds_behind_master は 0 にする必要があります。つまり、レプリカのラグが発生しないようにします。
4.RDS-standby で レプリケーションを停止します。
mysql> call mysql.rds_stop_replication;
5.レプリカからデータを記録し、-log_file および -log_position パラメータを書き留めます。
mysql> show slave status \G
注:****-log\ _file は Relay_Master_Log_File の値で、-log_position は Exec_Master_Log_Pos の値です。
6.ターミナルを終了し、mysqldump (または同様のユーティリティ) を使用して、ターゲットサーバーに複製される RDS-Standby のバックアップを作成します。この例では、ターゲットのオンプレミスサーバーは MySQL-target です。
$ mysqldump -h hostname -u username -p dbname > backup_file_name.sql
7.バックアップを作成したら、MySQL-target にログインして、バックアップファイルをターゲットのオンプレミスサーバーに転送します。
8.新しいデータベースを作成し、dumpfile を使用してデータベースを新しい外部 DB インスタンスに復元します。
$ mysql -h hostname -u username -p dbname < backup_file_name.sql
9.RDS-active DB インスタンスにログインし、レプリケーションユーザーを設定して、そのユーザーに必要な権限を付与します。repl\ _user を必ず独自のレプリケーションユーザー名に置き換えてください。
mysql> create user repl_user@'%' identified by 'repl_user';
mysql>grant replication slave, replication client on *.* to repl_user@'%';
mysql>show grants for repl_user@'%';
**注:**詳細については、「Aurora と MySQL との間、または Aurora と別の Aurora DB クラスターとの間のレプリケーション (バイナリログレプリケーション)」を参照してください。
10.ターゲット DB インスタンスにログインし、MySQL サーバーを停止します。
11.my.cnf ファイルのパラメータを変更して、独自のサーバー ID と DB インスタンスからレプリケートするデータベースの名前を指すようにします。たとえば、server_id=2 および replicate-do-db=test です。
12.ファイルを保存します。
13.MySQL-target で MySQL サーバーを再起動します。
14.RDS-active DB インスタンスへの接続を確立します。これを行うには、MySQL-target で以下のコマンドを実行します。
mysql> change master to master_host='rds-endpoint',master_user='repl_user', master_password='password', master_log_file='mysql-bin.000001', master_log_pos= 107;
15.MySQL-target が RDS-active に接続できることを確認します。
**注:**Amazon Elastic Compute Cloud (Amazon EC2) を外部 MySQL インスタンスとして使用する場合は、RDS-active DB インスタンスのセキュリティグループ内にあるセキュリティグループまたは IP アドレスからの接続を許可します。外部の MySQL サーバーを使用する場合は、telnet を実行して接続をテストします。詳細については、「Amazon RDS DB インスタンスに接続する際の問題を解決するにはどうすればよいですか?」を参照してください。
RDS-Endpoint は RDS-active DB インスタンスのエンドポイントです。ユーザー名とパスワードは、ステップ 9 で作成したユーザー名とパスワードと同じです。MASTER_LOG_FILE および MASTER_LOG_POS はステップ 5 で記録した値です。
16.MySQL-target にログインし、レプリケーションを開始します。
mysql> start slave;
レプリケーションが RDS-active と MySQL-target 間で同期されていることを確認します。
mysql> Show slave status\G
17.マスターの遅延秒数がゼロになったら、RDS-standby DB インスタンスを削除できます。
関連情報
AWS DMS を使用して Amazon RDS または Aurora MySQL 互換エディション DB インスタンスに移行する方法を教えてください。
レプリケーションを使用した MySQL DB インスタンスからのデータのエクスポート