本記事では、ApsaraDB RDS for MySQL のネイティブレプリケーションインスタンスを作成またはアップグレードする方法について説明します。また、この機能の権限と制限事項についても解説します。
前提条件
新しいネイティブレプリケーションインスタンスを作成、または既存のインスタンスをスペックアップするには、インスタンスが次の要件を満たす必要があります。インスタンスの詳細は、基本情報 ページで確認できます。
-
データベースバージョン: MySQL 5.7 (マイナーバージョン 20240930 以降) または MySQL 8.0 (マイナーバージョン 20250531 以降)
-
プロダクトシリーズ: Basic Edition
-
課金方法:サブスクリプション、従量課金
説明Serverless ネイティブレプリケーションインスタンスを使用するには、まず従量課金インスタンスを作成してネイティブレプリケーションを有効にした後、課金方法を Serverless に変更する必要があります。
-
サポート対象リージョン: 中国 (上海)、中国 (北京)、中国 (深圳)、中国 (広州)、中国 (成都)
重要ApsaraDB RDS のネイティブレプリケーションは、現在上記のリージョンでのみ利用可能です。他のリージョンでのサポートは、将来的に追加される予定です。他のリージョンでこの機能が必要な場合は、チケットを送信してください。
課金
-
新しいインスタンスの購入時にネイティブレプリケーションを有効にした場合、新しいインスタンスには標準料金が課金されます。既存のインスタンスをネイティブレプリケーションインスタンスにアップグレードしても、追加料金は発生しません。
-
ApsaraDB RDS for MySQL インスタンスへのフルデータインポート中に、自己管理データベースのバックアップを Object Storage Service (OSS) にアップロードしてから RDS にダウンロードする場合、バックアップが OSS に保存されている間、OSS ストレージ料金が発生します。
ネイティブ レプリケーションの権限
ApsaraDB RDS for MySQL ネイティブレプリケーションインスタンスの特権アカウントは、標準の ApsaraDB RDS for MySQL インスタンスでは利用できない権限を持っています。
レプリケーションコマンドの権限
ネイティブレプリケーションインスタンスでは、特権アカウントは以下のネイティブ MySQL レプリケーションコマンドを実行できます。
-
ソースデータベースとレプリカデータベース間のレプリケーションを設定する:
CHANGE MASTER TO。詳細については、「CHANGE MASTER TO」をご参照ください。 -
レプリケーションプロセスを開始する:
START SLAVE;。詳細については、「START SLAVE」をご参照ください。 -
レプリケーションプロセスを停止する:
STOP SLAVE;。詳細については、「STOP SLAVE」をご参照ください。 -
レプリカデータベースの状態をリセットして、ソースデータベースからのレプリケーションプロセスを再開する:
RESET SLAVE;。詳細については、「RESET SLAVE」をご参照ください。
パラメーター変更権限
ネイティブレプリケーションインスタンスでは、特権アカウントは以下の SQL ステートメントを実行して実行時パラメーターを変更できます。
-
データベースサーバーの読み取り専用モードを設定します。
SET GLOBAL read_only = ON/OFF;ON に設定すると、サーバーは読み取り専用モードになります。OFF に設定すると、読み取り専用モードが無効になり、読み書き操作が許可されます。
-
現在のセッションで実行された SQL ステートメントをバイナリログに書き込むかどうかを制御します。
SET SESSION sql_log_bin = ON/OFF;ON に設定すると、セッション内の SQL 操作がバイナリログに記録されます。OFF に設定すると、セッションで実行された SQL ステートメントはバイナリログに記録されません。
-
次のグローバルトランザクション識別子 (GTID) を設定します。
SET SESSION GTID_NEXT = "your_gtid_value";
インスタンス移行や仕様変更などのメンテナンス操作中、ネイティブレプリケーションコマンドの実行権限とパラメーター変更権限は一時的に取り消されます。これはインスタンスのレプリケーションプロセスには影響しません。メンテナンス作業が完了すると、システムは権限を復元します。
注意事項
ApsaraDB RDS for MySQL ネイティブレプリケーションインスタンスには、以下の制限事項があります。
制限事項
-
インスタンスは読み取り専用になります。
-
メジャーバージョンアップグレードはサポートされていません。
-
プロダクトシリーズのアップグレード (例:Basic Edition から High-availability Edition または Cluster Edition へ) はサポートされていません。
-
Virtual Private Cloud (VPC) の切り替えはサポートされていません。
-
データベースとテーブルのリカバリーはサポートされていません。
-
既存のインスタンスをネイティブレプリケーションインスタンスにアップグレードする際、約 30 秒の一時的な接続障害が発生する可能性があります。この操作はオフピーク時間に実行し、アプリケーションに再接続メカニズムが備わっていることを確認することを推奨します。
権限の制限
-
特権アカウントの制限
ネイティブレプリケーションに必要な一部の SUPER 権限は、ApsaraDB RDS for MySQL インスタンスの特権アカウントにのみ付与されます。
CHANGE MASTERやSTART SLAVEなどのネイティブコマンドは、特権アカウントのみが実行できます。 -
レプリケーション権限許可リスト
ネイティブレプリケーションが外部のバイナリログイベントを適用する際、まず権限をチェックします。RDS は以下のリストを超える権限を必要とする操作を適用せず、レプリケーションが停止します。
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO XXX; -
システムデータベースの制限
mysql、sys、information_schema、performance_schema、__recyclebin__を含む、システムデータベースに対するすべての操作は無視されます。説明RDS は、CREATE USER や GRANT など、間接的にシステムデータベースを変更する操作を無視しません。ただし、SQL ステートメントはレプリケーション権限許可リストに準拠する必要があります。
GRANT super on *.* to xxx;のような権限昇格操作は、レプリケーションを停止させます。 -
GTID の制限
MySQL のネイティブレプリケーション構成では、ソースデータベースとレプリカデータベースは同じグローバルトランザクション識別子 (GTID) モードを使用する必要があり、両方とも有効または両方とも無効にする必要があります。ApsaraDB RDS for MySQL は GTID モードの無効化をサポートしていません。したがって、ApsaraDB RDS for MySQL インスタンスを外部ソースデータベースのレプリカとして使用する場合、互換性のために外部ソースデータベースで GTID モードを有効にする必要があります。
レプリケーションを設定する前に、外部ソースデータベースで
SHOW VARIABLES LIKE 'gtid_mode';を実行して GTID モードが有効になっているかを確認します。有効になっていない場合は、SET GLOBAL gtid_mode=ON;を実行して有効にします。
ネイティブレプリケーションインスタンスへのアップグレード
新規インスタンス
新しい ApsaraDB RDS for MySQL インスタンスを購入する (標準作成ページ) 際、ページ下部の その他の設定 を展開し、ネイティブレプリケーション スイッチを有効にします。 なお、ネイティブレプリケーションオプションは、インスタンスが 前提条件 を満たしている場合にのみ表示されます。
既存のインスタンス
既存のインスタンスをネイティブレプリケーションインスタンスにアップグレードする際、約 30 秒の一時的な接続障害が発生する可能性があります。この操作はオフピーク時間に実行し、アプリケーションに再接続メカニズムが備わっていることを確認することを推奨します。
-
RDS インスタンス リストに移動し、リージョンを選択し、ターゲットインスタンスの ID をクリックします。 ターゲットインスタンスは、前提条件を満たす必要があります。
-
左側のナビゲーションバーで ネイティブレプリケーション をクリックし、ページで ネイティブレプリケーションを有効化 をクリックします。
-
ダイアログボックスの情報を注意深く読み、決定 をクリックします。
説明公式の ApsaraDB RDS サービスアカウントに、ご利用の OSS バケットへのアクセス、およびアカウント内での Elastic Network Interface (ENI) の作成とアタッチを許可していない場合は、対応するチェックボックスを選択して権限を付与してください。
ステップ 2:データレプリケーションの設定
-
自己管理データベースに Percona XtraBackup をインストールし、バックアップを実行する
-
Percona 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.rpm -
MySQL 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 へのインストール
-
Percona XtraBackup をインストールします。
-
MySQL 5.7
# 1. Percona リポジトリパッケージをダウンロードします。 wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb # 2. リポジトリパッケージをインストールします。 sudo dpkg -i percona-release_latest.generic_all.deb # 3. パッケージリストを更新します。 sudo apt-get update # 4. Percona XtraBackup をインストールします。 sudo apt-get install -y percona-xtrabackup-24 -
MySQL 8.0
# 1. Percona リポジトリパッケージをダウンロードします (前のステップで実行していない場合)。 wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb # 2. リポジトリパッケージをインストールします。 sudo dpkg -i percona-release_latest.generic_all.deb # 3. パッケージリストを更新します。 sudo apt-get update # 4. Percona XtraBackup をインストールします。 sudo apt-get install -y percona-xtrabackup-80
-
-
qpress をインストールします。Ubuntu 用の Percona XtraBackup には qpress が含まれていないため、別途インストールする必要があります。
sudo apt-get install -y qpress
-
-
バックアップを作成します。
以下の 3 つの圧縮方法は
xtrabackupコマンドに基づいており、主に InnoDB ストレージエンジンを使用するインスタンスに適しています。データベースに MyISAM テーブルが含まれている場合は、innobackupexコマンドを使用してください。デフォルトの qpress 圧縮
xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<your_user> \ --password=<your_password> \ --stream=xbstream \ --compress > ./<your_backup.xb>QuickLZ 圧縮
この方法には Percona XtraBackup 8.0.34-29 以前が必要です。詳細については、Percona XtraBackup の公式ドキュメントをご参照ください。
xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<your_user> \ --password=<your_password> \ --stream=xbstream \ --compress > ./<your_backup_qp.xb>外部 ZSTD 圧縮
xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<your_user> \ --password=<your_password> \ --stream=xbstream \ | zstd -q - > ./<your_backup.xb.zstd>
-
-
完全なデータをインポートし、データレプリケーションを自動的に設定する
説明データをインポートする前に、ネットワーク接続が自己管理 MySQL データベースと ApsaraDB RDS for MySQL インスタンスの間に存在することを確認してください。
OSS からのダウンロード
-
自己管理データベースのバックアップを OSS にアップロードする
ossutil ツールや OSS SDK など、さまざまなツールを使用してバックアップファイルをアップロードできます。このトピックでは ossutil を例として使用します。
重要送信先の OSS バケットと ApsaraDB RDS for 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 <your_oss_endpoint> -i <your_accesskey_id> -k <your_accesskey_secret> cp <your_backup_file> oss://<your_bucket_name>/
-
-
バックアップファイルを OSS から RDS にインポートし、レプリケーションリンクを自動的に設定する
-
[RDS インスタンス] リストに移動してリージョンを選択し、宛先インスタンスの ID をクリックします。
-
左側のナビゲーションバーで、ネイティブレプリケーション をクリックします。
-
ネイティブレプリケーションページで、全データのインポート をクリックし、次のパラメーターを設定して、決定 をクリックします。
カテゴリ
パラメーター
説明
バックアップインポート設定 (必須)
MySQLバージョン
システムは 5.7 または 8.0 を自動的に表示します。構成は不要です。
メソッド
OSS からインポート を選択します。
OSS バケット
自己管理データベースのバックアップファイルが保存されている OSS バケットを選択してください。OSS バケットの詳細については、「ファイルのアップロード」をご参照ください。
OSS オブジェクト名
OSS バケットから自己管理データベースのバックアップファイルを選択します。バックアップファイルが OSS バケットのサブディレクトリにある場合は、完全なパス名を手動で入力して検索する必要があります。以下の 3 つのバックアップファイル形式がサポートされています。
-
Percona XtraBackup によって生成された
xbstreamファイル。 -
Percona XtraBackup の組み込み QuickLZ 圧縮を使用して生成された
_qp.xbファイル。 -
zstd を使用して圧縮された
xbstreamファイルで、.xb.zstファイル拡張子を持つもの。
自動レプリケーション設定を有効にすることをお勧めします。システムが以下の構成に基づいてデータレプリケーションリンクを自動的にセットアップします。自動レプリケーション設定を有効にしない場合、完全データをインポートした後、レプリケーションリンクを手動でセットアップする必要があります。
自動レプリケーション設定 (任意)
レプリケーション自動構築
このスイッチをオンにすると、自己管理 MySQL データベースから ApsaraDB RDS for MySQL インスタンスへのレプリケーション関係が自動的に確立されます。
ソース IP
ソースの自己管理データベースの IP アドレスを入力します。
ソースポート
ソースの自己管理データベースのポート番号を入力します。
ソースアカウント
ソースの自己管理データベースのユーザー名を入力します。ユーザーは
REPLICATION CLIENTおよびREPLICATION SLAVE権限を持っている必要があります。ソースアカウントのパスワード
ソースユーザーアカウントのパスワードを入力します。
-
-
バックアップの直接ストリーミング
-
自己管理データベースに 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 が実行中で、対応するバージョンの Percona XtraBackup がインストールされていることを確認してください。 ./backup-helper --backup --mode=stream --host=<mysql_ip> --port=<mysql_port> --user=<mysql_user> --password=<mysql_password> -
データを RDS にインポートする
-
ApsaraDB RDS コンソールにログインし、リージョンを選択して、宛先インスタンスの ID をクリックします。
-
左側のナビゲーションバーで、ネイティブレプリケーション をクリックします。
-
ネイティブレプリケーションページで、全データのインポート をクリックし、次のパラメーターを設定して、決定 をクリックします。
カテゴリ
パラメーター
説明
バックアップインポート設定 (必須)
MySQLバージョン
システムは自動的に 5.7 または 8.0 を表示します。構成は不要です。
メソッド
ストリームバックアップからインポート を選択します。
バックアップソース IP
バックアップ転送に使用する IP アドレスを入力します。
バックアップソースポート
バックアップ転送に使用するポートを入力します。デフォルトのポートは 9999 です。
自動レプリケーション設定を有効にすることを推奨します。システムは、以下の構成に基づいてデータレプリケーションリンクを自動的に設定します。自動レプリケーション設定を有効にしない場合は、完全データをインポートした後にレプリケーションリンクを手動で設定する必要があります。
自動レプリケーション設定 (任意)
レプリケーション自動構築
このスイッチをオンにすると、自己管理 MySQL データベースから ApsaraDB RDS for MySQL インスタンスへのレプリケーション関係が自動的に確立されます。
ソース IP
ソースの自己管理データベースの IP アドレスを入力します。
ソースポート
ソースの自己管理データベースのポート番号を入力します。
ソースアカウント
ソースの自己管理データベースのユーザー名を入力します。ユーザーは
REPLICATION CLIENTおよびREPLICATION SLAVE権限を持っている必要があります。ソースアカウントのパスワード
ソースユーザーアカウントのパスワードを入力します。
-
完全データをインポートした際にレプリケーション自動構築を選択しなかった場合、または自動レプリケーションリンクで問題が発生して回復できない場合は、次のステップを参照して、自己管理 MySQL データベースから ApsaraDB RDS for MySQL インスタンスへのデータレプリケーションリンクを手動で確立できます。
-
-
レプリケーションステータスの確認
RDS インスタンス詳細のネイティブレプリケーション ページに戻り、データレプリケーションリンク情報を表示します。 レプリケーションステータスが [実行中] の場合、データレプリケーションリンクが正常に確立されたことを示します。
ネイティブレプリケーションの無効化
-
[RDS インスタンス] リストに移動してリージョンを選択し、次にターゲットインスタンスの ID をクリックします。インスタンスはネイティブレプリケーションインスタンスである必要があります。
-
左側のナビゲーションバーで、ネイティブレプリケーション をクリックし、次に ネイティブレプリケーションの無効化 をクリックします。
-
決定 をクリックします。
重要[はい] をクリックすると、自己管理 MySQL データベースと ApsaraDB RDS for MySQL ネイティブレプリケーションインスタンス間のレプリケーション関係が終了します。その後、インスタンスは標準の ApsaraDB RDS for MySQL インスタンスに戻り、読み取り専用モードから読み書きモードに切り替わり、書き込み操作を実行できるようになります。
関連コンテンツと API
-
ApsaraDB RDS for MySQL ネイティブレプリケーションインスタンスを作成するには、CreateDBInstance API オペレーションを呼び出すことができます。次の点にご注意ください。
-
インスタンスの基本構成は、前提条件を満たす必要があります。その他のパラメーターは、必要に応じて設定できます。
-
ExternalReplication パラメーターを ON に設定します。
-
-
既存のインスタンスにネイティブレプリケーションリンクを設定するには、ImportUserBackupFile API オペレーションを呼び出すことができます。
付録:ネットワーク構成
ネットワーク接続の問題の詳細については、「接続とネットワーキング」をご参照ください。
|
シナリオ |
ユースケース |
設定方法 |
料金 |
|
同じ VPC 内のリソース間のアクセス |
Elastic Compute Service (ECS) インスタンス上の自己管理 MySQL データベース |
同じ VPC 内では、ネットワーク接続はデフォルトで利用でき、追加の構成は必要ありません。RDS インスタンスの IP アドレスから ECS インスタンスのセキュリティグループへのポート 3306 でのインバウンドトラフィックを許可するには、セキュリティグループを構成するだけで済みます。 ApsaraDB RDS for MySQL ネイティブレプリケーションインスタンスに接続した後、 |
なし |
|
異なる VPC 内のリソース間のアクセス |
Alibaba Cloud 上のクロス VPC およびクロスリージョンデータ同期 |
|
|
|
オンプレミスデータセンターとクラウドベースの RDS インスタンス間のアクセス |
データセンター内の自己管理データベースから RDS ネイティブレプリケーションインスタンスへのレプリケーション |
VPN Gateway または Express Connect を使用して、データセンターのネットワークを RDS ネイティブレプリケーションインスタンスが存在する VPC に接続できます。 |
料金は使用する方法によって異なります。詳細については、公式ドキュメントをご参照ください。 |
|
クラウド間アクセス |
他のクラウド上のデータベースから RDS ネイティブレプリケーションインスタンスへのレプリケーション |
マルチクラウド環境では、アクセスにはクラウド間のネットワーク接続が必要です。RDS がソースで、他のクラウド上のデータベースが宛先である RDS ネイティブレプリケーションシナリオでは、VPN や専用線など、他のクラウドが提供するネットワークサービスを使用してネットワーク接続を確立できます。 |
料金は使用する方法によって異なります。詳細については、公式ドキュメントをご参照ください。 |
|
パブリックネットワークアクセス (非推奨) |
該当なし |
RDS ネイティブレプリケーションインスタンスは、インターネット経由での外部ノードへのアクセスをサポートしています。ただし、セキュリティリスクのため、この方法は推奨しません。 |
料金は使用する方法によって異なります。詳細については、公式ドキュメントをご参照ください。 |