このトピックでは、Percona XtraBackup を使用して、物理バックアップファイルから自己管理 MySQL データベースに ApsaraDB RDS for MySQL インスタンスのデータを復元する方法について説明します。
背景情報
ApsaraDB RDS for MySQL では、バックアップファイルから自己管理データベースに RDS インスタンスのデータを復元できます。物理バックアップファイルからの復元や論理バックアップファイルからの復元など、さまざまな復元方法がサポートされています。データ復元方法の選択方法の詳細については、「復元」をご参照ください。
RDS インスタンスのバックアップ方法を確認するには、次の操作を実行します。ApsaraDB RDS コンソール にログインし、RDS インスタンスの詳細ページに移動します。インスタンス詳細ページの左側のナビゲーションウィンドウで、バックアップと復元 をクリックします。表示されるページで、[ベースバックアップ] > [データバックアップ] を選択します。
物理バックアップファイルが作成されていない場合は、このトピックで説明されている操作を実行する前に、手動で物理バックアップファイルを作成できます。詳細については、「ApsaraDB RDS for MySQL インスタンスを手動でバックアップする」をご参照ください。
シナリオ
RDS インスタンスを長期間使用しない場合、またはリリースされた RDS インスタンスの物理バックアップファイルをダウンロードした場合は、物理バックアップファイルから自己管理 MySQL データベースに RDS インスタンスのデータを復元できます。このようにして、RDS インスタンスのデータを保持できます。
前提条件
RDS インスタンスが次の要件を満たしていること。
RDS インスタンスで MySQL 8.0、MySQL 5.7、MySQL 5.6、または MySQL 5.5 が実行されている。
RDS インスタンスで RDS High-availability Edition が実行されている。
RDS インスタンスでプレミアムローカル SSD が使用されている。
説明RDS インスタンスの 基本情報 ページに移動して、上記の情報を取得できます。
物理バックアップファイルは、RDS インスタンスで RDS High-availability Edition が実行されている場合にのみダウンロードできます。RDS インスタンスで RDS Basic Edition が実行されている場合は、その他のよくある質問 に記載されている手順に基づいて RDS インスタンスのデータを復元できます。
RDS インスタンスのテーブルは、透過的データ暗号化 (TDE) を使用して暗号化されていません。詳細については、「TDE を構成する」をご参照ください。
重要TDE を使用して一部のテーブルが暗号化されている場合、リストア中にエラーが発生します。 RDS インスタンスのバックアップファイルをダウンロードする前に、暗号化されたテーブルを復号化する必要があります。 詳細については、「TDE を構成する」をご参照ください。
TDE が有効になっているかどうかを確認するには、次の操作を実行します。RDS インスタンスの [データセキュリティ] ページに移動します。次に、[TDE] タブをクリックします。
RDS インスタンスにログインするために使用する RAM ユーザーには、バックアップファイルをダウンロードするための権限が付与されています。 RAM ユーザーに権限を付与する方法の詳細については、「読み取り専用の権限を持つ RAM ユーザーにバックアップファイルのダウンロードを承認する」をご参照ください。
制限事項
このトピックで説明されている復元方法は、ローカルディスクを使用する RDS インスタンスにのみ適しています。クラウドディスクを使用する RDS インスタンスのデータをスナップショットバックアップファイルを使用して復元する場合は、「スナップショットバックアップファイルを使用して ApsaraDB RDS for MySQL インスタンスのデータを自己管理 MySQL インスタンスに復元する」をご参照ください。
このトピックで説明されている復元方法は、バックアップファイルの完全データを復元します。特定のデータベースとテーブルのデータのみを復元する場合は、「論理バックアップファイルから自己管理 MySQL インスタンスに ApsaraDB RDS for MySQL インスタンスのデータを復元する」に記載されている手順に従ってください。
RDS インスタンスのデータを物理バックアップファイルから復元できるのは、Linux 上で実行されている自己管理 MySQL データベースのみです。
このソリューションは、MySQL グループレプリケーション (MGR) モードを使用する RDS クラスタのデータ復元には適していません。
影響
自己管理 MySQL データベースで他のサービスが実行されている場合、物理バックアップファイルから自己管理 MySQL データベースに RDS インスタンスのデータを復元した後、これらのサービスは使用できなくなります。
このトピックで説明されている復元方法は、RDS インスタンスのデータを自己管理 MySQL データベースの新しいデータディレクトリに復元するために使用されます。これは、自己管理データベースの元のデータには影響しません。
実装
このセクションでは、物理バックアップファイルからデータを復元するために実行する必要がある手順について説明します。
RDS インスタンスで物理バックアップ全体を実行します。
物理バックアップファイルをコンピュータにダウンロードし、
qpress
ツールを使用してファイルを解凍します。Percona XtraBackup
を使用して、解凍したバックアップファイルから自己管理 MySQL データベースのデータディレクトリにデータを復元します。自己管理 MySQL データベースを再起動します。その後、自己管理 MySQL データベースで RDS インスタンスのデータを表示できます。
使用上の注意
ダウンロード URL は、生成されてから 1 時間のみ有効です。ダウンロード URL の有効期限が切れた場合は、ページを更新して最新のダウンロード URL を取得できます。
物理バックアップファイルを変更または削除しないでください。そうしないと、ファイルが破損し、復元できなくなる可能性があります。RDS インスタンスの物理バックアップファイルを変更する必要がある場合は、まず物理バックアップファイルから自己管理 MySQL データベースに RDS インスタンスのデータを復元してから、ファイルを修正してください。
課金ルール
手動バックアップを実行する必要がある場合は、手動バックアップファイルを保存するために使用されるバックアップストレージに注意してください。バックアップストレージの使用量が無料枠を超えた場合、超過したバックアップストレージの使用量に対して課金されます。
自己管理 MySQL データベースがオンプレミスマシンにデプロイされている場合は、インターネット経由でバックアップファイルをダウンロードする必要があります。バックアップファイルのダウンロード時に発生するトラフィックが無料枠を超えた場合、超過したインターネットトラフィックに対して課金されます。
説明自己管理 MySQL データベースが、RDS インスタンスと同じリージョンおよび仮想プライベートクラウド (VPC) 内にある Elastic Compute Service (ECS) インスタンスにデプロイされている場合は、内部ネットワーク経由でバックアップファイルをダウンロードできます。この場合、トラフィック料金は発生しません。
準備
環境の準備
ツールの準備
ステップ 1: バックアップファイルをダウンロードする
ApsaraDB RDS コンソールにログインし、インスタンス ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンス ID をクリックします。
左側のナビゲーションウィンドウで、バックアップと復元 をクリックします。
表示されるページで、基本バックアップリスト > [データバックアップ] を選択します。ダウンロードする物理バックアップファイルを見つけて、[アクション] 列の [インスタンスバックアップのダウンロード] をクリックします。
物理バックアップファイルがない場合は、手動バックアップを実行して物理バックアップファイルを作成できます。詳細については、「ApsaraDB RDS for MySQL インスタンスを手動でバックアップする」をご参照ください。
[詳細ダウンロード] ページが表示された場合は、RDS インスタンスでクラウドディスクが使用されており、「スナップショットバックアップファイルを使用して ApsaraDB RDS for MySQL インスタンスのデータを自己管理 MySQL インスタンスに復元する」に記載されている手順に基づいてのみ RDS インスタンスのデータを復元できます。
[インスタンスバックアップセットのダウンロード] ダイアログボックスで、[内部 URL のコピー] または [パブリック URL のコピー] をクリックします。
重要内部 URL を使用してバックアップファイルをダウンロードする場合は、ログインしているサーバーと RDS インスタンスが同じ VPC に存在することを確認してください。サーバーと RDS インスタンスがリージョンをまたがる VPC に存在する場合、またはサーバーがクラシックネットワークに存在し、RDS インスタンスが VPC に存在する場合は、内部 URL を使用してバックアップファイルをダウンロードすることはできません。
外部 URL を使用してバックアップファイルをダウンロードする場合、消費した超過インターネットトラフィックに対して課金されます。詳細については、「課金ルール」をご参照ください。
ダウンロード URL は、生成されてから 1 時間のみ有効です。ダウンロード URL の有効期限が切れた場合は、ページを更新して最新のダウンロード URL を取得できます。
物理バックアップファイルは変更または削除しないことをお勧めします。物理バックアップファイルを変更または削除すると、ファイルが破損し、復元できなくなる可能性があります。物理バックアップファイルを変更する必要がある場合は、RDS インスタンスのデータを物理バックアップファイルから自己管理 MySQL データベースに復元してから、ファイルを修正することをお勧めします。
自己管理 MySQL データベースが存在する Linux サーバーにログインし、次のコマンドを実行して物理バックアップファイルをダウンロードします。
wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp
説明コマンドの
https://****.bak.rds.aliyuncs.com/****_xb.qp?****
をコピーしたダウンロード URL に置き換えます。バックアップファイルをダウンロードしたら、ファイルを保存し、機密性を保持してください。コマンドでは、
test_xb.qp
は保存するファイルの新しい名前を指定します。カスタムファイル名を指定できますが、ファイル名拡張子はダウンロード URL で指定されたものと同じである必要があります。ダウンロードした ApsaraDB RDS for MySQL バックアップファイルの名前は、
_xb.qp
または_qp.xb
拡張子で終わります。バックアップファイルの拡張子は、ダウンロード URL で確認できます。RDS インスタンスで MySQL 5.5 が実行されている場合、物理バックアップファイルのファイル名拡張子は
tar.gz
です。
ファイルダウンロードに関するよくある質問
ステップ 2: バックアップファイルを解凍する
次のいずれかのメソッドを使用して、ダウンロードしたバックアップ ファイルをファイルの拡張子に基づいて解凍します。
コマンドを実行する前に、自己管理 MySQL データベースが存在するサーバーに Percona XtraBackup
と qpress
がインストールされていることを確認してください。詳細については、「準備」をご参照ください。
解凍に関する FAQ
ステップ 3: データを復元する
自己管理 MySQL データベースにデータをリストアする前に、データベースを停止してください。
ps -ef | grep '[m]ysql'
コマンドを実行して、MySQL
関連のプロセスが存在するかどうかを確認できます。MySQL 関連のプロセスが存在する場合は、sudo kill -9 <PID>
コマンドを実行してプロセスを終了できます。
MySQL 8.0 を実行する RDS インスタンスのデータをリストアする
リストアを準備します。
/u01/xtrabackup80/bin/xtrabackup --defaults-file=/var/mysql_bkdata/backup-my.cnf --prepare --target-dir=/var/mysql_bkdata/
パラメーター
パラメーター
説明
--defaults-file
デフォルトの MySQL 設定を含む構成ファイルのディレクトリ。
物理バックアップファイルを解凍すると、
backup-my.cnf
という名前のファイルが取得され、バックアップ解凍ディレクトリ(この例では/var/mysql_bkdata/
)に保存されます。--prepare
Percona XtraBackup を準備するために使用するコマンド。
--target-dir
バックアップ解凍ディレクトリ(この例では
/var/mysql_bkdata/
)。自己管理 MySQL データベースの datadir パラメーターを変更します。
データベースの構成ファイルを変更します。
sudo vim /etc/my.cnf
構成ファイルのディレクトリのクエリ方法の詳細については、「準備」をご参照ください。
i
を押して挿入モードに入り、datadir パラメーターの値を/var/mysql_newdata
に変更します。datadir = /var/mysql_newdata
mysql_newdata
は、自己管理 MySQL データベースの新しいデータディレクトリを指定します。詳細については、「準備」をご参照ください。新しいデータディレクトリの所有権を変更します。
chown -R mysql:mysql /var/mysql_newdata
Esc
キーを押して編集モードを終了し、:wq
と入力してファイルを保存して終了します。
データをリストアします。
sudo xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/var/mysql_bkdata/
パラメーター
パラメーター
説明
--defaults-file
my.cnf
ファイルのディレクトリ。構成ファイルの datadir パラメーターから、データがリストアされるデータディレクトリを取得できます。--copy-back
Percona XtraBackup によって実行されるリストアコマンド。
--target-dir
バックアップ解凍ディレクトリ(この例では
/var/mysql_bkdata/
)。 Percona XtraBackup は、このディレクトリ内のデータを自己管理 MySQL データベースのデータディレクトリにリストアします。
MySQL 5.7 を実行する RDS インスタンスのデータをリストアする
リストアを準備します。
innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
パラメーター
パラメーター
説明
--defaults-file
デフォルトの MySQL 設定を含む構成ファイルのディレクトリ。
物理バックアップファイルを解凍すると、
backup-my.cnf
という名前のファイルが取得され、バックアップ解凍ディレクトリ(この例では/var/mysql_bkdata/
)に保存されます。--apply-log
Percona XtraBackup を準備するために使用するコマンド。
このパラメーターの後には、バックアップ解凍ディレクトリ(この例では
/var/mysql_bkdata/
)が続きます。バックアップ解凍ディレクトリには、バックアップファイルが保存されます。自己管理 MySQL データベースの
my.cnf
構成ファイルを変更します。データベースの構成ファイルを変更します。
sudo vim /etc/my.cnf
構成ファイルのディレクトリのクエリ方法の詳細については、「準備」をご参照ください。
i
を押して挿入モードに入り、datadir パラメーターの値を/var/mysql_newdata
に変更します。datadir = /var/mysql_newdata
mysql_newdata
は、自己管理 MySQL データベースの新しいデータディレクトリを指定します。詳細については、「準備」をご参照ください。次のコンテンツを
my.cnf
ファイルに追加します。innodb_undo_tablespaces=2 innodb_undo_directory=/var/mysql_newdata
重要innodb_undo_tablespaces パラメーターの値は、
/var/mysql_bkdata/backup-my.cnf
ファイルの値と同じでなければなりません。cat /var/mysql_bkdata/backup-my.cnf | grep innodb_undo_tablespaces
コマンドを実行して、値をクエリできます。Esc
キーを押して編集モードを終了し、:wq
と入力してファイルを保存して終了します。
データをリストアします。
sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/
パラメーター
パラメーター
説明
--defaults-file
my.cnf
ファイルのディレクトリ。構成ファイルの datadir パラメーターから、データがリストアされるデータディレクトリを取得できます。--copy-back
Percona XtraBackup によって実行されるリストアコマンド。
このパラメーターの後には、バックアップ解凍ディレクトリ(この例では
/var/mysql_bkdata/
)が続きます。 Percona XtraBackup は、ディレクトリ内のデータを自己管理 MySQL データベースのデータディレクトリにリストアします。
MySQL 5.6 を実行する RDS インスタンスのデータをリストアする
リストアを準備します。
innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
パラメーター
パラメーター
説明
--defaults-file
デフォルトの MySQL 設定を含む構成ファイルのディレクトリ。
物理バックアップファイルを解凍すると、
backup-my.cnf
という名前のファイルが取得され、バックアップ解凍ディレクトリ(この例では/var/mysql_bkdata/
)に保存されます。--apply-log
Percona XtraBackup を準備するために使用するコマンド。
このパラメーターの後には、バックアップ解凍ディレクトリ(この例では
/var/mysql_bkdata/
)が続きます。バックアップ解凍ディレクトリには、バックアップファイルが保存されます。自己管理 MySQL データベースの datadir パラメーターを変更します。
データをリストアします。
sudo innobackupex --defaults-file=/usr/my.cnf --copy-back /var/mysql_bkdata/
パラメーター
パラメーター
説明
--defaults-file
my.cnf
ファイルのディレクトリ。構成ファイルの datadir パラメーターから、データがリストアされるデータディレクトリを取得できます。--copy-back
Percona XtraBackup によって実行されるリストアコマンド。
このパラメーターの後には、バックアップ解凍ディレクトリ(この例では
/var/mysql_bkdata/
)が続きます。 Percona XtraBackup は、ディレクトリ内のデータを自己管理 MySQL データベースのデータディレクトリにリストアします。
MySQL 5.5 を実行する RDS インスタンスのデータをリストアする
リストアを準備します。
innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
パラメーター
パラメーター
説明
--defaults-file
デフォルトの MySQL 設定を含む構成ファイルのディレクトリ。
物理バックアップファイルを解凍すると、
backup-my.cnf
という名前のファイルが取得され、バックアップ解凍ディレクトリ(この例では/var/mysql_bkdata/
)に保存されます。--apply-log
Percona XtraBackup を準備するために使用するコマンド。
このパラメーターの後には、バックアップ解凍ディレクトリ(この例では
/var/mysql_bkdata/
)が続きます。バックアップ解凍ディレクトリには、バックアップファイルが保存されます。自己管理 MySQL データベースの
my.cnf
構成ファイルを変更します。データベースの構成ファイルを変更します。
sudo vim /etc/my.cnf
構成ファイルのディレクトリのクエリ方法の詳細については、「準備」をご参照ください。
i
を押して挿入モードに入り、datadir パラメーター設定を追加します。datadir = /var/mysql_newdata
mysql_newdata
は、自己管理 MySQL データベースの新しいデータディレクトリを指定します。詳細については、「準備」をご参照ください。次のコンテンツを
my.cnf
ファイルに追加します。innodb_log_file_size=1048576000
重要innodb_log_file_size パラメーターの値は、
/var/mysql_bkdata/backup-my.cnf
ファイルの値と同じでなければなりません。cat /var/mysql_bkdata/backup-my.cnf | grep innodb_log_file_size
コマンドを実行して、値をクエリできます。Esc
キーを押して編集モードを終了し、:wq
と入力してファイルを保存して終了します。
データをリストアします。
sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/
パラメーター
パラメーター
説明
--defaults-file
my.cnf
ファイルのディレクトリ。構成ファイルの datadir パラメーターから、データがリストアされるデータディレクトリを取得できます。--copy-back
Percona XtraBackup によって実行されるリストアコマンド。
このパラメーターの後には、バックアップ解凍ディレクトリ(この例では
/var/mysql_bkdata/
)が続きます。 Percona XtraBackup は、ディレクトリ内のデータを自己管理 MySQL データベースのデータディレクトリにリストアします。
データ復旧に関するよくある質問
ステップ 4: データベースを起動する
MySQL 8.0 または MySQL 5.7
オプション。ApsaraDB RDS コンソールにログインし、ApsaraDB RDS for MySQL インスタンスのパラメータを表示するに記載されている手順に従って、lower_case_table_names パラメータの値を確認します。値が の場合は、自己管理 MySQL データベースの 構成ファイルを修正する必要があります。
データベースの構成ファイルを修正します。
sudo vim /etc/my.cnf
構成ファイルのディレクトリのクエリ方法の詳細については、「準備」をご参照ください。
i
を押して挿入モードに入り、ファイルに次の内容を追加します。lower_case_table_names=1
Esc
キーを押して編集モードを終了し、:wq
と入力してファイルを保存して終了します。
トラブルシューティング
sudo chown -R mysql:mysql /var/mysql_newdata
次のコマンドを実行して MySQL プロセスを起動します。
sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &
パラメータ
パラメータ
説明
--defaults-file
自己管理 MySQL データベースの構成ファイルのディレクトリ。この例では、
/etc/my.cnf
を使用しています。準備 セクションに基づいて構成ファイルのディレクトリを取得できます。--user
データベースを起動したユーザー。値は mysql に固定されています。
--datadir
データベースの起動に使用する データ ディレクトリ
/var/mysql_newdata
準備。この例では、 を使用しています。 セクションに基づいてデータディレクトリを取得できます。
MySQL 5.6
オプション。ApsaraDB RDS コンソールにログインし、lower_case_table_namesApsaraDB RDS for MySQL インスタンスのパラメータを表示するに記載されている手順に従って、
1
my.cnf
パラメータの値を確認します。 値が の場合は、自己管理 MySQL データベースの 構成ファイルを修正する必要があります。データベースの構成ファイルを修正します。
sudo vim /usr/my.cnf
構成ファイルのディレクトリのクエリ方法の詳細については、「準備」をご参照ください。
i
を押して挿入モードに入り、ファイルに次の内容を追加します。lower_case_table_names=1
Esc
キーを押して編集モードを終了し、:wq
と入力してファイルを保存して終了します。
信頼性の向上: に権限を付与します。
sudo chown -R mysql:mysql /var/mysql_newdata
次のコマンドを実行して MySQL プロセスを起動します。
sudo mysqld --defaults-file=/usr/my.cnf --user=mysql --datadir=/var/mysql_newdata &
パラメータ
説明
--defaults-file
自己管理 MySQL データベースの構成ファイルのディレクトリ。この例では
/usr/my.cnf
を使用しています。「準備」セクションに基づいて構成ファイルのディレクトリを取得できます。--user
データベースを起動したユーザー。値は mysql に固定されています。
--datadir
データベースの起動に使用する データ ディレクトリ
/var/mysql_newdata
準備。この例では を使用しています。「」セクションに基づいてデータディレクトリを取得できます。
MySQL 5.5
データ ディレクトリに対する権限を付与します。
sudo chown -R mysql:mysql /var/mysql_newdata
次のコマンドを実行して MySQL プロセスを起動します。
sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &
パラメータ
説明
--defaults-file
自己管理 MySQL データベースの構成ファイルのディレクトリ。この例では、
/etc/my.cnf
を使用しています。「準備」セクションに基づいて構成ファイルのディレクトリを取得できます。--user
データベースを起動したユーザー。値は mysql に固定されています。
--datadir
データベースの起動に使用するデータディレクトリ。 この例では、
/var/mysql_newdata
を使用しています。「準備」セクションに基づいてデータディレクトリを取得できます。
起動に関するよくある質問
手順 5: データベースに接続してリストアを確認する
次のコマンドを実行して自己管理 MySQL データベースにログインし、MySQL が実行されていることを確認します。
mysql -u<RDS インスタンスへの接続に使用するアカウントのユーザー名> -p<上記のアカウントのパスワード>
説明このコマンドは、リストアが成功したかどうかを確認するために使用されます。テーブル内のデータのクエリのみを実行する場合は、テーブルに対する権限を持つアカウントを使用してコマンドを実行できます。
アカウントまたはパスワードを忘れた場合は、コマンドに
--skip-grant-tables
オプションを追加して権限チェックを無視します。これにより、アカウントとパスワードを入力しなくてもデータベースにログインできます。データベースにログインした後に、アカウントとパスワードをリセットできます。
次の SQL 文を実行して、RDS インスタンス内のデータベースが存在するかどうかを確認します。
SHOW DATABASES;
接続と検証に関するよくある質問
次の手順
RDS インスタンスのバックアップファイルを使用して、RDS インスタンスの完全データまたは個々のデータベースとテーブルを別の RDS インスタンスまたは新しい RDS インスタンスにリストアする方法の詳細については、「完全データのリストア」または「個々のデータベースとテーブルのリストア」をご参照ください。
データ復旧メソッドの詳細については、「データ復旧メソッドの概要」をご参照ください。