このトピックでは、Percona XtraBackupを使用して、ApsaraDB RDS for MySQLインスタンスのデータを物理バックアップファイルから自己管理型MySQLデータベースに復元する方法について説明します。
背景情報
ApsaraDB RDS for MySQLを使用すると、RDSインスタンスのデータをバックアップファイルから自己管理データベースに復元できます。 物理バックアップファイルからの復元や論理バックアップファイルからの復元など、さまざまな復元方法がサポートされています。 データ復元方法の選択方法の詳細については、「データ復元方法の概要」をご参照ください。
次の操作を実行して、RDSインスタンスのバックアップ方法を確認できます。ApsaraDB RDSコンソールにログインし、RDSインスタンスの詳細ページに移動します。 インスタンスの詳細ページの左側のナビゲーションウィンドウで、バックアップと復元 をクリックします。 表示されるページで、[基本バックアップ] > [データバックアップ] を選択します。
物理バックアップファイルが作成されていない場合は、このトピックで説明する操作を実行する前に、手動で物理バックアップファイルを作成できます。 詳細については、「ApsaraDB RDS For MySQLインスタンスの手動バックアップ」をご参照ください。
シナリオ
今後、RDSインスタンスを長期間使用しない場合は、RDSインスタンスのデータを物理バックアップファイルから自己管理型MySQLデータベースに復元できます。 これにより、RDSインスタンスのデータを保持できます。
RDSインスタンスがリリースされ、取得できませんが、インスタンスの物理バックアップファイルをダウンロードした場合、RDSインスタンスのデータを物理バックアップファイルから自己管理MySQLデータベースに復元できます。
前提条件
RDSインスタンスは次の要件を満たしています。
RDSインスタンスは、MySQL 8.0、MySQL 5.7、MySQL 5.6、またはMySQL 5.5を実行します。
RDSインスタンスはRDS High-availability Editionを実行します。
RDSインスタンスはローカルディスクを使用しています。
説明RDSインスタンスの 基本情報 ページに移動して、上記の情報を取得できます。
物理バックアップファイルは、RDSインスタンスがRDS High-availability Editionを実行している場合にのみダウンロードできます。 RDSインスタンスがRDS Basic Editionを実行している場合、その他のFAQに記載されている手順に基づいて、RDSインスタンスのデータを復元できます。
RDSインスタンスのテーブルは、透過的データ暗号化 (TDE) を使用して暗号化されません。 詳細については、「TDEの設定」をご参照ください。
重要TDEを使用して一部のテーブルを暗号化すると、復元中にエラーが発生します。 RDSインスタンスのバックアップファイルをダウンロードする前に、暗号化されたテーブルを復号化する必要があります。 詳細については、「TDEの設定」をご参照ください。
次の操作を実行して、TDEが有効になっているかどうかを確認できます。RDSインスタンスの [データセキュリティ] ページに移動します。 次に、[TDE] タブをクリックします。
RDSインスタンスへのログインに使用するRAMユーザーには、バックアップファイルをダウンロードする権限が付与されます。 RAMユーザーに権限を付与する方法の詳細については、「読み取り専用権限を持つRAMユーザーにバックアップファイルのダウンロード権限を付与する」をご参照ください。
制限事項
このトピックで説明する復元方法は、ローカルディスクを使用するRDSインスタンスにのみ適しています。 スナップショットバックアップファイルを使用してクラウドディスクを使用するRDSインスタンスのデータを復元する場合は、「スナップショットバックアップファイルを使用してApsaraDB RDS for MySQLインスタンスのデータを自己管理型MySQLインスタンスに復元する」の手順に従ってください。
このトピックで説明する復元方法は、バックアップファイル内の完全なデータを復元します。 特定のデータベースとテーブルのデータのみを復元する場合は、「ApsaraDB RDS for MySQLインスタンスのデータを論理バックアップファイルから自己管理型MySQLインスタンスに復元する」の手順に従ってください。
RDSインスタンスのデータは、物理バックアップファイルからのみ、Linuxで実行される自己管理型MySQLデータベースに復元できます。
このソリューションは、MySQLグループレプリケーション (MGR) モードを使用するRDSクラスターのデータ復元には適していません。
影響
自己管理型MySQLデータベースで他のサービスが実行されている場合、RDSインスタンスのデータを物理バックアップファイルから自己管理型MySQLデータベースに復元すると、サービスは利用できなくなります。
このトピックで説明する復元方法は、RDSインスタンスのデータを自己管理MySQLデータベースの新しいデータディレクトリに復元するために使用されます。 これは、自己管理データベースの元のデータには影響しません。
実装
セクションでは、物理バックアップファイルからデータを復元するために実行する必要がある手順について説明します。
ApsaraDB RDSコンソールでRDSインスタンスの完全物理バックアップを実行します。
物理バックアップファイルをコンピューターにダウンロードし、
qpress
ツールを使用してファイルを解凍します。Percona XtraBackup
を使用して、解凍されたバックアップファイルから自己管理型MySQLデータベースのデータディレクトリにデータを復元します。自己管理MySQLデータベースを再起動します。 その後、自己管理MySQLデータベースでRDSインスタンスのデータを表示できます。
使用上の注意
ダウンロードURLは、生成後1時間のみ有効です。 ダウンロードURLの有効期限が切れた場合、ページを更新して最新のダウンロードURLを取得できます。
物理バックアップファイルを変更または削除しないことを推奨します。 物理バックアップファイルを変更または削除すると、ファイルが破損して復元できない場合があります。 RDSインスタンスの物理バックアップファイルを変更する必要がある場合は、RDSインスタンスのデータを物理バックアップファイルから自己管理型MySQLデータベースに復元してから、ファイルを変更することを推奨します。
課金ルール
手動バックアップを実行する必要がある場合は、手動バックアップファイルの保存に使用されるバックアップストレージに注意してください。 バックアップストレージの使用量が無料クォータを超えた場合、使用した過剰なバックアップストレージに対して課金されます。 詳細については、「バックアップストレージ料金」をご参照ください。
自己管理型MySQLデータベースがオンプレミスマシンにデプロイされている場合は、インターネット経由でバックアップファイルをダウンロードする必要があります。 バックアップファイルをダウンロードするときに生成されるトラフィックが無料クォータを超えた場合、過剰なインターネットトラフィックに対して課金されます。 詳細については、「バックアップファイルのダウンロード」をご参照ください。
説明自己管理型MySQLデータベースが、RDSインスタンスと同じリージョンおよび仮想プライベートクラウド (VPC) にあるElastic Compute Service (ECS) インスタンスにデプロイされている場合、内部ネットワーク経由でバックアップファイルをダウンロードできます。 この場合、トラフィック料金は発生しません。
準備
環境の準備
ツールの準備
ステップ1: バックアップファイルのダウンロード
ApsaraDB RDSコンソールにログインし、[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 RDSインスタンスを見つけ、インスタンスIDをクリックします。
左側のナビゲーションウィンドウで、バックアップと復元 をクリックします。
表示されるページで、基本バックアップリスト > [データバックアップ] を選択します。 ダウンロードする物理バックアップファイルを見つけて、[操作] 列の [インスタンスバックアップのダウンロード] をクリックします。
使用可能な物理バックアップファイルがない場合は、手動バックアップを実行して物理バックアップファイルを作成できます。 詳細については、「ApsaraDB RDS For MySQLインスタンスの手動バックアップ」をご参照ください。
インスタンスバックアップのダウンロードをクリックした後に [詳細ダウンロード] ページが表示された場合、RDSインスタンスはクラウドディスクを使用します。RDSインスタンスのデータは、「スナップショットバックアップファイルを使用してApsaraDB RDS for MySQLインスタンスのデータをセルフマネージドMySQLインスタンスに復元」の手順に基づいてのみ復元できます。
[インスタンスバックアップセットのダウンロード] ダイアログボックスで、[内部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
です。
FAQに関するファイルのダウンロード
ステップ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.cn f
という名前のファイルが取得され、バックアップ解凍ディレクトリに格納されます。この例では/var/mysql_bkdata/
です。-準備する
Percona XtraBackupの準備に使用されるコマンド。
-- target-dir
バックアップ解凍ディレクトリ。この例では
/var/mysql_bkdata/
です。自己管理型MySQLデータベースのdatadirパラメーターを変更します。
データを復元します。
sudo xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/var/mysql_bkdata/
パラメーター
パラメーター
説明
-- defaults-file
my.cn f
ファイルのディレクトリ。 データが復元されるデータディレクトリは、設定ファイルのdatadirパラメーターから取得できます。-- コピーバック
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.cn f
という名前のファイルが取得され、バックアップ解凍ディレクトリに格納されます。この例では/var/mysql_bkdata/
です。-- apply-log
Percona XtraBackupの準備に使用されるコマンド。
このパラメーターの後にバックアップ解凍ディレクトリが続きます。この例では
/var/mysql_bkdata/
です。 バックアップ解凍ディレクトリにはバックアップファイルが格納されます。自己管理型MySQLデータベースの
my.cn f
設定ファイルを変更します。データベースの構成ファイルを変更します。
sudo vim /etc/my.cnf
構成ファイルのディレクトリを照会する方法の詳細については、「準備」をご参照ください。
i
を押して挿入モードに入り、datadirパラメーターの値を/var/mysql_newdata
に変更します。datadir = /var/mysql_newdata
mysql_newdata
は、自己管理mysqlデータベースの新しいデータディレクトリを指定します。 詳細については、「準備」をご参照ください。次のコンテンツを
my.cn f
ファイルに追加します。innodb_undo_tablespaces=2 innodb_undo_directory=/var/mysql_newdata
重要innodb_undo_tablespacesパラメーターの値は、
/var/mysql_bkdata/backup-my.cn f
ファイルの値と同じである必要があります。 値を照会するには、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.cn f
ファイルのディレクトリ。 データが復元されるデータディレクトリは、設定ファイルのdatadirパラメーターから取得できます。-- コピーバック
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.cn f
という名前のファイルが取得され、バックアップ解凍ディレクトリに格納されます。この例では/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.cn f
ファイルのディレクトリ。 データが復元されるデータディレクトリは、設定ファイルのdatadirパラメーターから取得できます。-- コピーバック
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.cn f
という名前のファイルが取得され、バックアップ解凍ディレクトリに格納されます。この例では/var/mysql_bkdata/
です。-- apply-log
Percona XtraBackupの準備に使用されるコマンド。
このパラメーターの後にバックアップ解凍ディレクトリが続きます。この例では
/var/mysql_bkdata/
です。 バックアップ解凍ディレクトリにはバックアップファイルが格納されます。自己管理型MySQLデータベースの
my.cn f
設定ファイルを変更します。データベースの構成ファイルを変更します。
sudo vim /etc/my.cnf
構成ファイルのディレクトリを照会する方法の詳細については、「準備」をご参照ください。
i
を押して挿入モードに入り、datadirパラメーター設定を追加します。datadir = /var/mysql_newdata
mysql_newdata
は、自己管理mysqlデータベースの新しいデータディレクトリを指定します。 詳細については、「準備」をご参照ください。次のコンテンツを
my.cn f
ファイルに追加します。innodb_log_file_size=1048576000
重要innodb_log_file_sizeパラメーターの値は、
/var/mysql_bkdata/backup-my.cn f
ファイルの値と同じである必要があります。 値を照会するには、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.cn f
ファイルのディレクトリ。 データが復元されるデータディレクトリは、設定ファイルのdatadirパラメーターから取得できます。-- コピーバック
Percona XtraBackupによって実行される復元コマンド。
このパラメーターの後にバックアップ解凍ディレクトリが続きます。この例では
/var/mysql_bkdata/
です。 Percona XtraBackupは、ディレクトリ内のデータを自己管理MySQLデータベースのデータディレクトリに復元します。
FAQ about data restoration
ステップ4: データベースの起動
MySQL 8.0またはMySQL 5.7
必要に応じて、 ApsaraDB RDSコンソールにログインし、「ApsaraDB RDS for MySQLインスタンスのパラメーターの表示」の手順に基づいて、lower_case_table_namesパラメーターの値を表示します。 値が
1
の場合、自己管理MySQLデータベースのmy.cn f
設定ファイルを変更する必要があります。データベースの構成ファイルを変更します。
sudo vim /etc/my.cnf
構成ファイルのディレクトリを照会する方法の詳細については、「準備」をご参照ください。
i
を押して挿入モードに入り、次のコンテンツをファイルに追加します。lower_case_table_names=1
Esc
キーを押して編集モードを終了し、:wq
と入力してファイルを保存して終了します。
dataディレクトリに対する権限を付与します。
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.cn f
が使用されます。 [準備] セクションに基づいて、構成ファイルのディレクトリを取得できます。--user
データベースを開始したユーザー。 値はmysqlとして固定されています。
-- datadir
データベースの起動に使用されるデータディレクトリ。 この例では、
/var/mysql_newdata
が使用されています。 データディレクトリは、[準備] セクションに基づいて取得できます。
MySQL 5.6
必要に応じて、 ApsaraDB RDSコンソールにログインし、「ApsaraDB RDS for MySQLインスタンスのパラメーターの表示」の手順に基づいて、lower_case_table_namesパラメーターの値を表示します。 値が
1
の場合、自己管理MySQLデータベースのmy.cn f
設定ファイルを変更する必要があります。データベースの構成ファイルを変更します。
sudo vim /usr/my.cnf
構成ファイルのディレクトリを照会する方法の詳細については、「準備」をご参照ください。
i
を押して挿入モードに入り、次のコンテンツをファイルに追加します。lower_case_table_names=1
Esc
キーを押して編集モードを終了し、:wq
と入力してファイルを保存して終了します。
dataディレクトリに対する権限を付与します。
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.cn f
が使用されます。 [準備] セクションに基づいて、構成ファイルのディレクトリを取得できます。--user
データベースを開始したユーザー。 値はmysqlとして固定されています。
-- datadir
データベースの起動に使用されるデータディレクトリ。 この例では、
/var/mysql_newdata
が使用されています。 データディレクトリは、[準備] セクションに基づいて取得できます。
MySQL 5.5
dataディレクトリに対する権限を付与します。
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.cn f
が使用されます。 [準備] セクションに基づいて、構成ファイルのディレクトリを取得できます。--user
データベースを開始したユーザー。 値はmysqlとして固定されています。
-- datadir
データベースの起動に使用されるデータディレクトリ。 この例では、
/var/mysql_newdata
が使用されています。 データディレクトリは、[準備] セクションに基づいて取得できます。
FAQ about startup
ステップ5: データベースに接続して復元を確認
次のコマンドを実行して自己管理型MySQLデータベースにログインし、MySQLが実行されていることを確認します。
mysql -u<The username of the account that is used to connect to the RDS instance> -p<The password of the preceding account>
説明コマンドは、復元が成功したかどうかを確認するために使用されます。 テーブル内のデータのみをクエリする場合は、テーブルに対する権限を持つアカウントを使用してコマンドを実行できます。 特権アカウントを使用する必要はありません。
サードパーティのツール、クライアント、またはコマンドラインを使用してデータベースに接続することもできます。 詳細については、「データベースクライアントまたはCLIを使用したApsaraDB RDS For MySQLインスタンスへの接続」をご参照ください。
次のSQL文を実行して、RDSインスタンスにデータベースが存在するかどうかを確認します。
SHOW DATABASES;
FAQに関する接続と検証
次のステップ
RDSインスタンスのバックアップファイルを使用して、RDSインスタンスの完全データまたは個々のデータベースとテーブルを別のRDSインスタンスまたは新しいRDSインスタンスに復元する方法の詳細については、「完全データの復元」または「個々のデータベースとテーブルの復元」をご参照ください。
データ復元方法の詳細については、「データ復元方法の概要」をご参照ください。