ApsaraDB RDS for MySQL は、ネイティブレプリケーションインスタンスの作成をサポートしています。これらのインスタンスを使用して、自己管理 MySQL データベース用に、クラウド上に高可用性の読み取り専用セカンダリデータベースを構築できます。このトピックでは、ネイティブレプリケーションインスタンスを作成し、自己管理データベースから RDS for MySQL ネイティブレプリケーションインスタンスへのデータレプリケーションリンクを構成する方法について説明します。
前提条件
ネイティブレプリケーションをサポートする RDS インスタンスが必要です。新規作成するか、既存のものをアップグレードすることができます。インスタンスは次の条件を満たす必要があります。これらの条件は、インスタンスの [基本情報] ページで確認できます。
データベースバージョン: MySQL 5.7 (マイナーバージョン 20240930 以降) または 8.0 (マイナーバージョン 20250531 以降)
製品シリーズ: Basic Edition
課金方法: サブスクリプションおよび従量課金
説明サーバーレスの ネイティブレプリケーションインスタンス を使用するには、まず従量課金インスタンスを作成し、ネイティブレプリケーションを有効にしてから、課金方法をサーバーレスに変更する必要があります。
サポートされているリージョン: 中国 (上海)、中国 (北京)、中国 (深圳)、中国 (広州)、および中国 (成都)
重要ApsaraDB RDS ネイティブレプリケーションは、現在上記のリージョンでのみ利用可能です。他のリージョンへのサポートは順次展開されています。他のリージョンでこの機能が必要な場合は、チケットを送信してください。
RDS for MySQL インスタンスの 特権アカウント を作成済みであること。
自己管理 MySQL データベースと RDS for MySQL インスタンス間のネットワーク接続が確立されていること。詳細については、「ネットワーク構成」をご参照ください。
ワークフローの概要
RDS ネイティブレプリケーションを使用してクラウドベースのセカンダリデータベースを作成するプロセスには、3 つのステップが含まれます。
自己管理 MySQL データベースの完全バックアップを実行します。
自己管理 MySQL データベースの完全バックアップを RDS for MySQL ネイティブレプリケーションインスタンスにインポートします。
MySQL コマンドを使用して、自己管理 MySQL データベースから RDS for MySQL ネイティブレプリケーションインスタンスへのレプリケーションリンクを設定します。
ソリューション 1: XtraBackup ストリームバックアップ、Object Storage Service、およびネイティブレプリケーションインスタンスへのデータインポート
利点
RDS for MySQL ネイティブレプリケーションインスタンスは、XtraBackup 物理バックアップと完全に互換性があり、次の機能をサポートしています。
バックアップファイル内の GTID を自動的に検出し、レプリケーションリンク設定用のオフセットを調整します。
バックアップファイルを Object Storage Service (OSS) にアップロードし、サーバ側暗号化を有効にしてデータセキュリティを確保できます。
選択したバックアップセットからネイティブレプリケーションインスタンスを再構築でき、複雑なレプリケーション中断の問題を解決するのに役立ちます。
課金
ネイティブレプリケーションを有効にして新しいインスタンスを作成すると、インスタンス料金 が課金されます。既存のインスタンスをネイティブレプリケーションインスタンスにアップグレードしても、追加料金は発生しません。
自己管理データベースのバックアップを Object Storage Service (OSS) にアップロードして完全データをインポートする場合、OSS にバックアップファイルを保存するために OSS ストレージ料金 が発生します。
手順
XtraBackup をインストールし、自己管理データベースでバックアップを実行する
XtraBackup のインストール:
CentOS へのインストール
MySQL 5.7
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpmMySQL 8.0
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
Ubuntu へのインストール
XtraBackup のインストール
MySQL 5.7
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpmMySQL 8.0
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
qpress のインストール: Ubuntu にインストールされた XtraBackup には qpress が含まれていないため、別途インストールする必要があります。
sudo apt-get install -y qpress
バックアップの実行:
以下の 3 つの圧縮方法は、
XtraBackupコマンドに基づいており、主に InnoDB エンジンを使用するインスタンスに適しています。データベースに MyISAM テーブルが含まれている場合は、innobackupexコマンドを使用してください。方法 1: デフォルトの qpress 圧縮
xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<user_of_self-managed_MySQL> \ --password=<password> \ --stream=xbstream \ --compress > ./<backup_file_name_such_as_backup_1206.xb>方法 2: QuickLZ 圧縮
この方法では、XtraBackup バージョン 8.0.34-29 以前を使用する必要があります。詳細については、「公式 Percona XtraBackup チュートリアル」をご参照ください。
xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<user_of_self-managed_MySQL> \ --password=<password> \ --stream=xbstream \ --compress > ./<backup_file_name_such_as_backup_1206_qp.xb>方法 3: 外部 ZSTD 圧縮
xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<user_of_self-managed_MySQL> \ --password=<password> \ --stream=xbstream \ | zstd -q - > ./<backup_file_name_such_as_backup_1206.xb.zstd>
自己管理データベースのバックアップを OSS にアップロードする
ossutil や OSS SDK (ソフトウェア開発キット) など、さまざまなツールを使用してバックアップファイルをアップロードできます。このトピックでは、ossutil を例として使用します。
重要ターゲット OSS バケットが RDS MySQL インスタンスと同じリージョンにあることを確認してください。そうしないと、RDS はアップロード中に OSS バックアップファイルを取得できません。
ossutil をインストールします。
yum install -y unzip sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash ossutil configバックアップデータを OSS にアップロードします。
ossutil -e <OSS_Endpoint> -i <your_AccessKeyId> -k <your_AccessKeySecret> cp <backup_file_name> oss://<Bucket_name>/
OSS から RDS にバックアップファイルをインポートし、レプリケーションリンクを自動的に設定する
RDS インスタンスリストに移動し、リージョンを選択して、ターゲットインスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、[ネイティブレプリケーション] をクリックします。
[ネイティブレプリケーション] ページで、[完全データのインポート] をクリックし、パラメーターを構成して、[OK] をクリックします。
構成カテゴリ
パラメーター
説明
バックアップアップロード方法 (必須)
MySQL バージョン
システムは自動的に 5.7 または 8.0 を表示します。構成は不要です。
方法
[OSS からダウンロード] を選択します。
OSS バケット
自己管理データベースのバックアップファイルが保存されている OSS バケットを選択します。OSS バケットの詳細については、「ファイルのアップロード」をご参照ください。
OSS ファイル名
OSS バケットから自己構築データベースのバックアップファイルを選択します。バックアップファイルが OSS バケットのサブディレクトリに保存されている場合は、完全なパスを手動で入力して検索する必要があります。次の 3 つのバックアップファイル形式がサポートされています:
XtraBackup によって直接生成された
xbstreamファイル。XtraBackup の組み込み quicklz 圧縮を使用して生成された
_qp.xbファイル。zstd で圧縮された
xbstreamファイル (.xb.zstサフィックス付き)。
自動レプリケーション設定を有効にすることをお勧めします。システムは、以下の構成に基づいてデータレプリケーションリンクを自動的に設定します。自動レプリケーション設定を有効にしない場合は、完全データをインポートした後に 手動でレプリケーションリンクを設定する必要があります。
自動レプリケーションリンク構成 (オプション)
自動レプリケーション設定
スイッチをオンにして、自己管理 MySQL データベースから ApsaraDB RDS for MySQL インスタンスへのレプリケーション関係を自動的に設定します。
レプリケーションソース IP
ソースの自己管理データベースの IP アドレスを入力します。
レプリケーションソースポート
ソースの自己管理データベースのポート番号を入力します。
レプリケーションソースアカウント
ソースの自己管理データベースのアカウントを入力します。ソースアカウントには、
REPLICATION CLIENTおよびREPLICATION SLAVE権限が必要です。レプリケーションアカウントのパスワード
ソースの自己管理データベースのアカウントのパスワードを入力します。
レプリケーションステータスの表示
RDS インスタンスの [ネイティブレプリケーション] ページに戻り、データレプリケーションリンク情報を表示します。レプリケーションステータスが [実行中] の場合、データレプリケーションリンクが確立されます。
ソリューション 2: XtraBackup ストリームバックアップ、直接ストリームバックアップ転送、およびネイティブレプリケーションインスタンスへのデータインポート
利点
コンソールベースの操作と自動レプリケーションリンク設定による高いユーザビリティ。
課金
ネイティブレプリケーションを有効にして新しいインスタンスを作成すると、インスタンス料金 が課金されます。既存のインスタンスをネイティブレプリケーションインスタンスにアップグレードしても、追加料金は発生しません。
手順
XtraBackup をインストールし、自己管理データベースでバックアップを実行する
XtraBackup のインストール:
CentOS へのインストール
MySQL 5.7
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpmMySQL 8.0
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
Ubuntu へのインストール
XtraBackup のインストール
MySQL 5.7
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpmMySQL 8.0
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
qpress のインストール: Ubuntu にインストールされた XtraBackup には qpress が含まれていないため、別途インストールする必要があります。
sudo apt-get install -y qpress
バックアップの実行:
以下の 3 つの圧縮方法は、
XtraBackupコマンドに基づいており、主に InnoDB エンジンを使用するインスタンスに適しています。データベースに MyISAM テーブルが含まれている場合は、innobackupexコマンドを使用してください。方法 1: デフォルトの qpress 圧縮
xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<user_of_self-managed_MySQL> \ --password=<password> \ --stream=xbstream \ --compress > ./<backup_file_name_such_as_backup_1206.xb>方法 2: QuickLZ 圧縮
この方法では、XtraBackup バージョン 8.0.34-29 以前を使用する必要があります。詳細については、「公式 Percona XtraBackup チュートリアル」をご参照ください。
xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<user_of_self-managed_MySQL> \ --password=<password> \ --stream=xbstream \ --compress > ./<backup_file_name_such_as_backup_1206_qp.xb>方法 3: 外部 ZSTD 圧縮
xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<user_of_self-managed_MySQL> \ --password=<password> \ --stream=xbstream \ | zstd -q - > ./<backup_file_name_such_as_backup_1206.xb.zstd>
自己管理データベースのバックアップを RDS に転送する
自己管理データベースに backup-helper ツールをインストールし、バックアップ転送プロセスを確立する
# backup-helper ツールをインストール wget -O backup-helper https://mysql-backup-helper.oss-cn-beijing.aliyuncs.com/v1.0.0-alpha/backup-helper && chmod +x backup-helper # ツールを使用してバックアップ転送プロセスを確立します (環境で MySQL が実行されており、自己管理データベースのバージョンに基づいて対応するバージョンの XtraBackup がインストールされていることを確認してください) ./backup-helper --backup --mode=stream --host=<MySQL_IP> --port=<MySQL_port> --user=<MySQL_account> --password=<MySQL_password>RDS にデータをインポートする
ApsaraDB RDS コンソールにログインし、ページ上部でリージョンを選択して、インスタンス ID をクリックします。
左側のナビゲーションウィンドウで、[ネイティブレプリケーション] をクリックします。
[ネイティブレプリケーション] ページで、[完全データのインポート] をクリックし、パラメーターを構成して、[OK] をクリックします。
構成カテゴリ
パラメーター
説明
バックアップアップロード方法 (必須)
MySQL バージョン
システムは自動的に 5.7 または 8.0 を表示します。構成は不要です。
方法
[直接ストリームバックアップ] を選択します。
バックアップソース IP
バックアップ転送用の IP アドレスを入力します。
バックアップソースポート
バックアップ転送用のポートを入力します。デフォルトは 9999 です。
自動レプリケーション設定を有効にすることをお勧めします。システムは、以下の構成に基づいてデータレプリケーションリンクを自動的に設定します。自動レプリケーション設定を有効にしない場合は、完全データをインポートした後に 手動でレプリケーションリンクを設定する必要があります。
自動レプリケーションリンク構成 (オプション)
自動レプリケーション設定
スイッチをオンにして、自己管理 MySQL データベースから ApsaraDB RDS for MySQL インスタンスへのレプリケーション関係を自動的に設定します。
レプリケーションソース IP
ソースの自己管理データベースの IP アドレスを入力します。
レプリケーションソースポート
ソースの自己管理データベースのポート番号を入力します。
レプリケーションソースアカウント
ソースの自己管理データベースのアカウントを入力します。ソースアカウントには、
REPLICATION CLIENTおよびREPLICATION SLAVE権限が必要です。レプリケーションアカウントのパスワード
ソースの自己管理データベースのアカウントのパスワードを入力します。
レプリケーションステータスの表示
RDS インスタンスの [ネイティブレプリケーション] ページに戻り、データレプリケーションリンク情報を表示します。レプリケーションステータスが [実行中] の場合、データレプリケーションリンクが確立されます。
ソリューション 3: mysqldump 論理バックアップ、DMS データインポート、および SQL ベースのレプリケーションリンク設定
利点
コンソールベースの操作による高いユーザビリティ。
課金
新しい RDS for MySQL インスタンスを作成すると、RDS インスタンス料金とストレージ料金 が発生します。
手順
mysqldump を使用して、自己管理 MySQL データベースの論理バックアップを実行し、SQL ファイルを取得します。コマンドは次のとおりです。
mysqldump --all-databases \ --single-transaction \ --order-by-primary \ --set-gtid-purged=off \ --master-data=2 \ -u local_user \ -p local_password \ -h 127.0.0.1 -P 3306 > data.sqlRDS for MySQL は
SET GTID_PURGEDを変更する権限を付与しないため、このパラメーターを有効にすると SQL 再生エラーが発生します。したがって、コマンドでset-gtid-purged=offを設定する必要があります。mysqldumpを使用してセカンダリデータベースを設定する場合、--master-data=2オプションを追加します。このオプションは、CHANGE MASTER TO文を含むコメントを自動的に生成します。これにより、プライマリデータベースからバイナリロギングファイル名と位置を手動でクエリしてレプリケーションオフセットを入力することなく、簡単に取得できます。例:
DMS を使用して論理バックアップをインポートします。
DMS を使用して RDS for MySQL データベースにログインします (特権アカウントを使用)。
DMS コンソールの左上隅にある
アイコンをクリックし、 を選択します。説明コンソールを非ストリームラインモードで使用している場合は、上部のメニューバーから を選択します。
[データ変更チケット申請] ページで、[一括データインポート] を選択し、ターゲットの RDS for MySQL データベースを指定して、論理バックアップ SQL ファイルをアップロードします。他の構成パラメーターの詳細については、「データインポート」をご参照ください。
DMS でコマンドを実行してレプリケーションリンクを設定します。
重要DMS を使用して論理バックアップをインポートすると、クラウドベースのセカンダリデータベースに個別のバイナリログと GTID が生成されます。このセカンダリデータベースをプライマリノードに切り替えると、これらの余分な GTID が他のノードにレプリケートされ、レプリケーションが中断される可能性があります。この問題を回避するには、次のいずれかの措置を講じます。
レプリケーションを設定する前に、ネイティブレプリケーションを無効にしてから再度有効にします。この操作により
RESET MASTERが実行されます。レプリケーショントポロジ内の他のノードに空のトランザクションを挿入して、冗長な GTID を上書きします。これはプレースホルダーとして機能します。
# レプリケーションの設定 CHANGE MASTER TO MASTER_HOST = '<source_host_IP>', MASTER_USER = '<replication_user>',MASTER_PASSWORD ='<replication_password>', MASTER_PORT = 3306,MASTER_LOG_FILE = '<binlog_file_name>',MASTER_LOG_POS = 190; # レプリケーションの開始 START SLAVE; # レプリケーションステータスの確認 SHOW SLAVE STATUS\G