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