Amazon Relational Database Service (Amazon RDS) for MySQL DB インスタンスのバイナリログファイルを Amazon Simple Storage Service (Amazon S3) にバックアップする必要があります。ファイルのダウンロードと S3 バケットへの同期はどのようにスケジュールできますか?
簡単な説明
デフォルトでは、Amazon RDS for MySQL DB インスタンスから、選択した S3 バケットにバイナリログファイルをコピーすることはできません。代わりに、バイナリログファイルを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにダウンロードします。次に、cron ジョブを使用して S3 バケットにファイルを同期します。
解決方法
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください。
1. MySQL バイナリログにアクセスできるように、RDS DB インスタンスのバイナリログファイルの保持を有効にします。この例では、保持期間を 24 時間に設定します。
mysql> call mysql.rds_set_configuration('binlog retention hours', 24);
2. Amazon RDS for MySQL DB インスタンスで次のコマンドを実行します。バイナリログ保持時間のパラメータが正しく 24 (1 日) に設定されていることを確認します。
mysql> call mysql.rds_show_configuration;
期待される出力:
+------------------------+-------+-----------------------------------------------------------------------------------------------------------+
| name | value | description |
+------------------------+-------+-----------------------------------------------------------------------------------------------------------+
| binlog retention hours | 24 | binlog retention hours specifies the duration in hours before binary logs are automatically deleted. |
| source delay | 0 | source delay specifies replication delay in seconds between current instance and its master. |
| target delay | 0 | target delay specifies replication delay in seconds between current instance and its future read-replica. |
+------------------------+-------+-----------------------------------------------------------------------------------------------------------+
3. mysql および mysqlbinlog コマンドの EC2 インスタンスに MySQL をインストールします。
$ sudo yum update
$ sudo yum install mysql57
4. 次のコマンドを実行して、ユーティリティが正しくインストールされたことを確認します。
$ rpm -qa|grep mysql
期待される出力:
mysql57-server-5.7.21-2.6.amzn1.x86_64
mysql57-common-5.7.21-2.6.amzn1.x86_64
mysql57-errmsg-5.7.21-2.6.amzn1.x86_64
mysql57-5.7.21-2.6.amzn1.x86_64
5. S3 バケットと AWS Identity and Access Management (IAM) ユーザーアカウントを作成します。
6. S3 バケットへのアクセス権限を IAM ユーザーに付与します。
7. AWS コマンドラインインターフェイスをインストールし、まだ設定していない場合は AWS CLI を設定します。
8. GitHub ウェブサイトから rds-binlog-to-s3 スクリプトをダウンロードします。このスクリプトは、バイナリログファイルをダウンロードし、S3 バケットにファイルをアップロードします。
9. スクリプトのアクセス許可を変更します。
$ chmod 744 rds-binlog-to-s3.sh
10. AWS CLI を使用して EC2 インスタンスで rds-binlog-to-s3 スクリプトを実行します。スクリプト内の mysqlbinlog コマンドを変更して、追加する mysqlbinlog オプションを含めます。
$ rds-binlog-to-s3.sh
11. バイナリログファイルを S3 バケットに同期するように cron ジョブを設定します。
$ crontab -e
0 0 * * * /home/ec2-user/scheduler/RDS-binlog-to-s3.sh
関連情報
MySQL データベースのログファイル