Amazon RDS MySQL DB インスタンスのバイナリログファイルを Amazon S3 にアップロードするようにスケジュールする方法を教えてください。

最終更新日: 2020 年 6 月 9 日

Amazon Relational Database Service (Amazon RDS) MySQL DB インスタンスのバイナリログファイルを Amazon Simple Storage Service (Amazon S3) にバックアップする必要があります。ファイルのダウンロードと S3 バケットへの同期はどのようにスケジュールできますか?

簡単な説明

デフォルトでは、Amazon RDS MySQL DB インスタンスから、選択した S3 バケットにバイナリログファイルをコピーすることはできません。代わりに、バイナリログファイルを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにダウンロードします。次に、cron ジョブを使用して S3 バケットにファイルを同期します。

解決方法

1.    MySQL バイナリログにアクセスできるように、RDS DB インスタンスのバイナリログファイルの保持を有効にします。次の例では、保持期間を 24 時間に設定します。

mysql> call mysql.rds_set_configuration('binlog retention hours', 24);

2.   RDS 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) をインストールし、まだ設定していない場合は 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 スクリプトを実行します。

$ rds-binlog-to-s3.sh

11.   バイナリログファイルを S3 バケットに同期するように cron ジョブを設定します。

$ crontab -e
0 0  * * * /home/ec2-user/scheduler/RDS-binlog-to-s3.sh

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合