すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:RDS MySQL の物理バックアップを自己管理型データベースへ復元

最終更新日:Aug 27, 2026

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 ユーザーにバックアップファイルのダウンロード権限を付与する」をご参照ください。

制限事項

影響

  • セルフマネージドデータベースが稼働しているホストに RDS MySQL の物理バックアップを復元すると、そのホスト上の他のサービスが利用できなくなることがあります。

  • この復元方法では、データは新しいデータディレクトリに復元されるため、既存のセルフマネージドデータベースのデータは影響を受けません。

仕組み

物理バックアップの復元は、以下の手順で行います。

  1. データベースのフル物理バックアップを実行します。

  2. 物理バックアップファイルをローカルデバイスにダウンロードし、qpress ツールで解凍します。

  3. Percona XtraBackup を使用して、解凍したバックアップファイルを自己管理型データベースのデータディレクトリに復元します。

  4. データベースを再起動します。その後、自己管理型データベースで元の RDS MySQL データを表示できます。

注意事項

  • バックアップのダウンロード URL は 1 時間有効です。URL の有効期限が切れた場合は、ページを更新して新しいものを取得してください。

  • バックアップファイルの内容を変更または削除しないでください。変更または削除すると、ファイルが破損して復元不可能になる可能性があります。データを変更する必要がある場合は、まずバックアップをセルフマネージドデータベースに復元してください。

課金

  • 手動バックアップを作成する場合は、バックアップストレージの使用量を監視してください。無料クォータを超えたバックアップストレージには、バックアップ料金が発生します。

  • 自己管理型データベースがオンプレミスにある場合、インターネット経でバックアップデータをダウンロードします。ダウンロードトラフィックが無料クォータを超えると、インターネットトラフィック料金が発生します。

    説明

    自己管理型データベースが RDS インスタンスと同じリージョンおよび VPC 内の ECS インスタンス上にある場合、内部アドレス経由でバックアップデータをダウンロードしてもトラフィック料金は発生しません。

前提条件

環境のセットアップ

  1. 本トピックのコマンドは、CentOS 7.9 64-bit を対象としています。異なる Linux ディストリビューションを使用する場合は、コマンドを適宜調整してください。

  2. セルフマネージド MySQL データベースを準備します。そのメジャーエンジンバージョンは、RDS MySQL インスタンスのバージョンと 一致させる必要があります。たとえば、両方とも MySQL 8.0 にします。

    次のコマンドを実行して、セルフマネージド MySQL データベースのメジャーエンジンバージョンを確認します。

    mysql --version
  3. セルフマネージド MySQL データベースの 設定ファイルのパス を確認します。

    このトピックでは、次のパスの例を使用します。

    • MySQL 8.0 および 5.7 の場合、パスは /etc/my.cnf です。

    • MySQL 5.6 の場合、パスは /usr/my.cnf です。

    • MySQL 5.5 の場合は、echo "[mysqld]" | sudo tee /etc/my.cnf コマンドを実行してファイルを作成します。

    次のコマンドを実行して、セルフマネージド MySQL データベースの設定ファイルのパスを確認します。

    sudo find / -name my.cnf
    説明

    コマンドが異なるパスを返す場合は、以降のコマンドではそのパスを使用してください。

  4. mysql_bkdata などの バックアップ展開ディレクトリ を作成し、展開されたバックアップファイルを保存します。

    次のコマンドを実行して、バックアップ展開ディレクトリ を作成します。

    sudo mkdir /var/mysql_bkdata
    sudo chown -R $USER:$USER /var/mysql_bkdata
    説明

    $USER:$USER パラメータは、環境変数を使用して現在のユーザーとユーザーグループを取得するためのものです。変更する必要はありません。

  5. mysql_newdata などの データディレクトリ を作成します。このディレクトリには、データベースが起動時に使用する復元されたバックアップファイルが保存されます。

    次のコマンドを実行して、データディレクトリ を作成します。

    sudo mkdir /var/mysql_newdata
    sudo chown -R $USER:$USER /var/mysql_newdata
    説明

    前述のコマンドの $USER:$USER パラメータは、環境変数を使用して現在のユーザーとユーザーグループを取得するためのものです。変更する必要はありません。

ツール

  1. Percona XtraBackup バックアップ/リストアツールをインストールします。

    MySQL 8.0

    MySQL 8.0 インスタンスの場合、ホスト環境に適した正しいバージョンの XtraBackup ツールをダウンロードし、サーバーにアップロードしてから、インストールします。 ファイルを ECS インスタンスにアップロードする必要がある場合は、「ファイルのアップロードまたはダウンロード」をご参照ください。

    重要

    RDS MySQL 8.0 では新しい REDO ログタイプが導入されており、オープンソース版の Percona XtraBackup との互換性の問題が発生する可能性があります。そのため、以下の表から RDS が提供する XtraBackup ツールをダウンロードする必要があります。

    ホスト環境

    ダウンロード

    インストールコマンド

    説明

    この例では、ツールが /Xtrabackup8.0 ディレクトリにあることを前提としています。実際のダウンロード場所に合わせてコマンドを調整してください。

    Linux 6 (x86_64)

    RDS XtraBackup 8.0 ツールのダウンロード

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios6.x86_64.rpm

    Linux 7 (x86_64)

    RDS XtraBackup 8.0 ツールのダウンロード

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm

    Linux 7 (ARM AArch64)

    RDS XtraBackup 8.0 ツールのダウンロード

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.aarch64.rpm

    Linux 8 (ARM AArch64)

    RDS XtraBackup 8.0 ツールのダウンロード

    sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.al8.aarch64.rpm
    説明

    インストール後、Percona XtraBackup の実行可能ファイルは /u01/xtrabackup80/bin ディレクトリに配置されます。デフォルトでは、このディレクトリパスは Linux の PATH 環境変数に追加されていません。

    任意のディレクトリから Percona XtraBackup コマンドを実行するには、次のいずれかの方法を使用できます。

    • Percona XtraBackup コマンドを実行する際にフルパスを指定します。このトピックでは、複数のコマンドでこの方法を使用しています。例:/u01/xtrabackup80/bin/xtrabackup --xxxxxx

    • /u01/xtrabackup80/bin ディレクトリを PATH 環境変数へ手動で追加します。

    MySQL 5.7、5.6、または 5.5

    MySQL 5.7、5.6、または 5.5 インスタンスの場合は、Percona XtraBackup 2.4 をダウンロードしてインストールします。

    このトピックでは、Percona XtraBackup 2.4.28 を例として使用します。インストールコマンドは次のとおりです。

    wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
    sudo yum localinstall -y percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
  2. qpress 展開ツールをインストールします。

    ## qpress tar パッケージをダウンロードします。
    wget "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230406/flxd/qpress-11-linux-x64.tar"
    
    ## ダウンロードした tar パッケージを展開します。
    tar -xvf qpress-11-linux-x64.tar
    
    ## qpress ファイルに実行権限を付与します。
    sudo chmod 775 qpress
    
    ## qpress ファイルを /usr/bin にコピーして、グローバルにアクセスできるようにします。
    sudo cp qpress /usr/bin

ステップ 1:バックアップファイルのダウンロード

  1. RDS インスタンスリストに移動し、リージョンを選択してから、対象インスタンスの ID をクリックします。

  2. 左側のナビゲーションペインで、バックアップと復元をクリックします。

  3. 基本バックアップリスト > [データバックアップ] タブで、対象の物理バックアップを見つけ、[操作] 列にある [インスタンスバックアップのダウンロード] をクリックします。

  4. [インスタンスバックアップのダウンロード] ダイアログボックスで、必要に応じて内部 URL またはパブリック URL をコピーします。

    重要
    • 内部 URL を使用する場合、バックアップファイルは同じリージョンおよび VPC 内のサーバーからのみダウンロードできます。異なるリージョンまたはクラシックネットワーク内のサーバーからはダウンロードできません。

    • パブリック URL を使用してバックアップファイルをダウンロードする場合、無料クォータを超えるインターネットトラフィックに対して課金されます。詳細については、「課金の詳細」をご参照ください。

    • バックアップダウンロード URL の有効期限は 1 時間です。有効期限が切れた場合は、ページを更新して最新の URL を取得してください。

    • バックアップファイルの内容を変更または削除しないでください。変更または削除すると、ファイルが破損し、復元できなくなる可能性があります。変更が必要な場合は、まずデータをセルフマネージドデータベースに復元してください。

  5. セルフマネージド 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 です。

ダウンロードに関するよくある質問

  • Q:データファイルをダウンロードする際にエラーが発生するのはなぜですか?

    A: wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp コマンドを使用する場合、ダウンロードアドレスをシングルクォーテーション (') で囲むと、プログラムがアドレスを正しく識別し、エラーを防ぐのに役立ちます。

ステップ 2: バックアップファイルの解凍

ファイルの拡張子に基づいて、バックアップパッケージを解凍するコマンドを選択します。

重要

「前提条件」セクションを参照して Percona XtraBackup と qpress をインストールし、次のコマンドを実行してください。

xbstream パッケージ (_xb.qp 拡張子)

次の解凍コマンドを実行する際、test_xb.qp をお使いのバックアップファイル名に、/var/mysql_bkdata/ を作成した解凍パスに置き換えてください。

### MySQL 8.0
qpress -do  test_xb.qp | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

### MySQL 5.5/5.6/5.7
qpress -do  test_xb.qp | xbstream -x -v -C /var/mysql_bkdata/

xbstream パッケージ (_qp.xb 拡張子)

次の解凍コマンドを実行する際、test_qp.xb をお使いのバックアップファイル名に、/var/mysql_bkdata/ を作成した解凍パスに置き換えてください。

## ステップ 1: ファイルを展開する
cat test_qp.xb | xbstream -x -v -C /var/mysql_bkdata/

## ステップ 2: ファイルを解凍する
### MySQL 5.5/5.6/5.7
innobackupex --decompress --remove-original /var/mysql_bkdata/

### MySQL 8.0
/u01/xtrabackup80/bin/xtrabackup --decompress --remove-original --target-dir=/var/mysql_bkdata/

tar パッケージ (.tar.gz 拡張子)

次の解凍コマンドを実行する際、test.tar.gz をお使いのバックアップファイル名に、/var/mysql_bkdata/ を作成した解凍パスに置き換えてください。

tar -zxvf test.tar.gz -C /var/mysql_bkdata/

xbstream パッケージ (.xb.gz 拡張子)

次の解凍コマンドを実行する際、test.xb.gz をお使いのバックアップファイル名に、/var/mysql_bkdata/ を作成した解凍パスに置き換えてください。

### MySQL 8.0
gzip -d -c test.xb.gz | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

### MySQL 5.5/5.6/5.7
gzip -d -c test.xb.gz | xbstream -x -v -C /var/mysql_bkdata/

解凍に関するよくある質問

  • Q: ダウンロードしたバックアップファイルを解凍する際にエラーが発生した場合はどうすればよいですか?

    A: 次の項目を確認して、エラーのトラブルシューティングを行ってください。

    ダウンロードしたファイルが物理バックアップファイルであることを確認します。

    保存した圧縮ファイルの拡張子が正しいことを確認します (拡張子は URL に記載のものと一致している必要があります。例: xb.qp、.tar.gz、.xb.gz、または _qp.xb)。

    ファイル形式に適した解凍コマンドを使用します。

    一般的なエラー:

    • 解凍コマンドを実行すると、sh: qpress: command not found エラーが表示されます。

      解決策: 「前提条件」を参照して、qpress ツールがお使いのセルフマネージドデータベースサーバーにインストールされていることを確認してください。

    • 拡張子が _qp.xb の xbstream パッケージを解凍する際に、innobackupex not found エラーが発生します。

      解決策: 「前提条件」を参照して、Percona XtraBackup がお使いのセルフマネージドデータベースサーバーにインストールされていることを確認してください。

    • 拡張子が _qp.xb の xbstream パッケージファイルを cat コマンドで展開する際に、can't change to dir to xx( errorcode:no such file or directory) エラーが表示されます。

      解決策: このエラーは、ファイル名またはパスが正しくないことを示しています。コマンド内のファイル名とパスを確認してください。

ステップ 3:データ復元

重要

データベースを復元する前に、セルフマネージドデータベースサービスを停止してください。

ps -ef | grep '[m]ysql' コマンドで mysql プロセスを確認し、sudo kill -9 <PID> コマンドでプロセスを終了できます。

MySQL 8.0

  1. 復元の準備をします。

    /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/。

  2. セルフマネージドデータベースのデータディレクトリ (datadir) を変更します。

    1. データベース設定ファイルを編集します。

      sudo vim /etc/my.cnf

      データベース設定ファイルのパスを確認するには、「前提条件」をご参照ください。

    2. i キーを押して編集モードに入り、datadir パラメーターを /var/mysql_newdata に設定します。

      datadir = /var/mysql_newdata

      mysql_newdata は、「前提条件」セクションで作成した、セルフマネージドデータベースの新しいデータディレクトリです。

    3. 新しいデータディレクトリに権限を付与します。

      chown -R mysql:mysql /var/mysql_newdata
    4. Esc キーを押して編集モードを終了し、:wq! と入力して保存して終了します。

  3. データを復元します。

    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

  1. 復元の準備をします。

    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/ を指定します。

  2. セルフマネージドデータベースの設定ファイル my.cnf を変更します。

    1. データベース設定ファイルを編集します。

      sudo vim /etc/my.cnf

      データベース設定ファイルのパスを確認するには、「前提条件」をご参照ください。

    2. i キーを押して編集モードに入り、datadir パラメーターを /var/mysql_newdata に変更します。

      datadir = /var/mysql_newdata

      mysql_newdata は、「前提条件」セクションで作成した、セルフマネージドデータベースの新しいデータディレクトリです。

    3. 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 コマンドで値を照会できます。

    4. Esc キーを押して編集モードを終了し、:wq! と入力して保存して終了します。

  3. データを復元します。

    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

  1. 復元の準備をします。

    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/ を指定します。

  2. セルフマネージドデータベースのデータディレクトリ (datadir) を変更します。

    1. データベース設定ファイルを編集します。

      sudo vim /usr/my.cnf

      データベース設定ファイルのパスを確認するには、「前提条件」をご参照ください。

    2. i キーを押して編集モードに入り、datadir パラメーターを追加します。

      datadir = /var/mysql_newdata

      mysql_newdata は、「前提条件」で作成した、セルフマネージドデータベースの新しいデータディレクトリです。

    3. Esc キーを押して編集モードを終了し、:wq! と入力して保存して終了します。

  3. データを復元します。

    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

  1. 復元の準備をします。

    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/ を指定します。

  2. セルフマネージドデータベースの設定ファイル my.cnf を変更します。

    1. データベース設定ファイルを編集します。

      sudo vim /etc/my.cnf

      データベース設定ファイルのパスを確認するには、「前提条件」をご参照ください。

    2. i キーを押して編集モードに入り、datadir パラメーターを追加します。

      datadir = /var/mysql_newdata

      mysql_newdata は、「前提条件」セクションで作成した、セルフマネージドデータベースの新しいデータディレクトリです。

    3. 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 コマンドで値を照会できます。

    4. Esc キーを押して編集モードを終了し、:wq! と入力して保存して終了します。

  3. データを復元します。

    sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/

    パラメーター:

    パラメーター

    説明

    --defaults-file

    セルフマネージドデータベースの my.cnf ファイルに設定されている データディレクトリ (datadir) から、データ復元のターゲットパスを取得します。

    --copy-back

    XtraBackup ツールの復元コマンドです。

    このコマンドの後には、 バックアップ展開ディレクトリ (例:/var/mysql_bkdata/) を指定します。XtraBackup ツールは、このディレクトリからセルフマネージドデータベースの データディレクトリ にデータを復元します。

復元に関するよくある質問

  • Q:xtrabackup: Unknown error 3613 というエラーが返されます。どうすれば解決できますか?

    A:Percona XtraBackup を最新バージョンに更新して、再試行してください。

  • Q:Original data directory /var/mysql_newdata is not empty! というエラーが返されます。どうすればよいですか?

    A:sudo rm -rf /var/mysql_newdata/* コマンドでフォルダー内のファイルを削除し、復元操作を再試行してください。

  • Q:InnodDB: Encryption information in datafile: ./xxx.ibd can't be decrypted, please check if a keyring plugin is loaded and initialized successfully. というエラーが返されます。どうすればよいですか?

    お使いのインスタンスで TDE が有効になっているかどうかを確認します:

    • TDE が有効になっている場合は、暗号化されたテーブルを確認してください。「前提条件」で説明されているように、「TDE (透過的データ暗号化) の設定」の手順に従って暗号化されたテーブルを復号し、このトピックの手順に従ってデータを復元してください。

    • TDE が有効になっていない場合は、「前提条件」で説明されているように、正しいバージョンの Percona XtraBackup がインストールされていることを確認してください。

  • Q:ダウンロードしたバックアップファイルに TDE で暗号化されたデータが含まれているため、データ復元に失敗します。どうすれば解決できますか?

    A:ダウンロードした暗号化バックアップファイルからデータを復元することはできません。RDS インスタンス内の暗号化されたテーブルが原因で、復元エラーが発生します。「前提条件」で説明されているように、「TDE (透過的データ暗号化) の設定」の手順に従ってテーブルを復号し、新しいバックアップを作成してから、再度データを復元してください。

  • Q:復元中に発生する innobackupex: File 'undo001' not found (Errcode: 2 - No Such file or directory) エラーを解決するにはどうすればよいですか?

    A:undo ファイルは、データベースのバージョンによって異なるシステムファイルです。セルフマネージドデータベースが ApsaraDB RDS for MySQL と同じバージョンであるかどうかを確認してください。

ステップ 4:データベースの起動

MySQL 8.0 と 5.7

  1. (オプション) RDS for MySQL コンソールで、インスタンスパラメーターを表示して lower_case_table_names の値を確認します。値が 1 の場合、自己管理型データベースの my.cnf 設定ファイルを変更する必要があります。

    1. データベース設定ファイルを編集します。

      sudo vim /etc/my.cnf

      データベース設定ファイルのパスを確認するには、「前提条件」をご参照ください。

    2. i を押して編集モードに入り、次の内容を追加します。

      lower_case_table_names=1
    3. Esc キーを押して編集モードを終了し、:wq! と入力して保存して終了します。

  2. データディレクトリ に権限を付与します。

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. 次のコマンドを実行して 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

  1. (オプション) ApsaraDB RDS for MySQL コンソールで、インスタンスパラメーターを表示して lower_case_table_names の値を確認します。値が 1 の場合、自己管理型データベースの my.cnf 設定ファイルを変更する必要があります。

    1. データベース設定ファイルを編集します。

      sudo vim /usr/my.cnf

      データベース設定ファイルのパスを確認するには、「前提条件」をご参照ください。

    2. i を押して編集モードに入り、次の内容を追加します。

      lower_case_table_names=1
    3. Esc キーを押して編集モードを終了し、:wq! と入力して保存して終了します。

  2. データディレクトリ に権限を付与します。

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. 次のコマンドを実行して 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

  1. データディレクトリ に権限を付与します。

    sudo chown -R mysql:mysql /var/mysql_newdata
  2. 次のコマンドを実行して 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 を使用します。データベースのデータディレクトリを確認するには、「前提条件」をご参照ください。

起動に関するよくある質問

  • Q:Ubuntu オペレーティングシステムで mysqld: [ERROR] Failed to open required defaults file: /etc/my.cnf というエラーが発生する原因と、その解決方法を教えてください。

    A:このエラーは、Ubuntu のセキュリティプログラム AppArmor が原因です。apt install -y apparmor-utils と aa-complain /usr/sbin/mysqld コマンドを使用して AppArmor の設定を変更します。

  • Q:復元完了後、自己管理型データベースの起動に失敗したり、使用中に error 1105 Unknown error が発生した場合はどうすればよいですか?

    A:次の SQL 文を実行して、データベースのストレージエンジンを変更します。

    USE mysql;
    ALTER TABLE proc engine=myisam;
    ALTER TABLE event engine=myisam;
    ALTER TABLE func engine=myisam;
    説明

    ERROR 1067 (42000): Invalid default value for 'modified' というエラーが表示された場合は、まず SET SQL_MODE='ALLOW_INVALID_DATES'; 文を実行してください。

  • Q:データベース復元後の root パスワードは何ですか?

    A:root パスワードの取得方法はバージョンによって異なります:

    • インスタンスが MySQL 5.7 または 8.0 を実行している場合、root パスワードは自己管理型データベースの root パスワードと同じです。

    • インスタンスが MySQL 5.5 または 5.6 を実行している場合、データベースを使用する前に root パスワードをリセットする必要があります。詳細については、「公式ドキュメント」をご参照ください。

  • Q:起動時に InnodDB: Assertion failure in thread 140xxx in file page0zip.ic xxx というエラーが発生します。解決方法を教えてください。

    A:このエラーはディスク容量不足が原因である可能性があります。自己管理型データベースサーバーのディスクを拡張してから、再試行してください。

  • Q:起動時に発生する [ERROR] Failed to open the relay log xxx、[ERROR] Slave: Failed to initialize the master info xxx、または [ERROR] Failed to create or recover replication info repositories. というエラーを解決するにはどうすればよいですか?

    A:これらのエラーは、RDS インスタンスが高可用性 (HA) 用に設定されているのに対し、ローカルの自己管理型データベースがプライマリノードとセカンダリノードを使用していないために発生します。これらのエラーは起動に影響しないため、無視しても問題ありません。

  • Q:起動時に発生する [ERROR] Data Dictionary initialization failed エラーを解決するにはどうすればよいですか?

    A:このエラーは、互換性のないオペレーティングシステムが原因である可能性があります。ApsaraDB RDS の基盤となるオペレーティングシステムは Linux です。異なるオペレーティングシステムを使用するとバージョンの互換性の問題が発生する可能性があるため、Linux ベースのオペレーティングシステムを使用してデータベースを復元することを推奨します。

  • Q:sudo systemctl start mysqld コマンドでローカルの MySQL サービスを起動できません。どうすればよいですか?

    A:これは、Linux で SELinux が Enforcing モードになっていることが原因である可能性があります。getenforce コマンドを実行して、SELinux の現在のステータスを確認できます。

    • これが開発環境またはテスト環境である場合は、SELinux モードを Permissive モードに変更することを推奨します。その後、sudo systemctl start mysqld を使用して MySQL の起動を試してください。

    • 本番環境の場合は、SELinux のログを確認して起動失敗の具体的な原因を特定し、その情報に基づいて SELinux ポリシーを修正することを推奨します。

ステップ 5:接続と検証

  1. 次のコマンドを実行して MySQL データベースにログインし、プロセスが正常に起動したことを確認します。

    mysql -u <username> -p
    説明
    • このログインコマンドは、復元が成功したことを確認するために使用します。テーブルデータの表示のみが必要な場合は、アカウントにクエリ権限があることを確認してください。

    • アカウントまたはパスワードを忘れた場合は、MySQL プロセスを起動する際に --skip-grant-tables パラメーターを指定します。プロセスの起動後は権限チェックがスキップされ、アカウントまたはパスワードなしでデータベースにログインできます。ログインに成功した後、アカウントとパスワードをリセットできます。

  2. 次のコマンドを実行して、ApsaraDB RDS for MySQL インスタンスにあったデータベースが存在するかどうかを確認します。

    SHOW DATABASES;

接続と検証に関するよくある質問

  • Q: 復元後、データ内の時刻がローカル時刻と一致しないのはなぜですか?また、どのように修正すればよいですか?

    A: 自己管理型データベースのタイムゾーンが RDS インスタンスと異なる場合は、自己管理型データベースの time_zone パラメーターを RDS インスタンスのものと一致するように変更する必要があります。RDS インスタンスの time_zone パラメーターが system に設定されている場合は、RDS インスタンスのリージョンを確認し、自己管理型データベースの time_zone パラメーターをそのリージョンのタイムゾーンに設定します。

  • Q: 自己管理型データベースへの接続時に Access denied for user 'XXX' エラーが表示されます。どうすれば解決できますか?

    A: 元の ApsaraDB RDS for MySQL インスタンスの正しいアカウントとパスワードを使用していることを確認してください。

  • Q: 自己管理型データベースへの接続時にパスワードを忘れました。どうすればよいですか?

    A: アカウントまたはパスワードを忘れた場合は、--skip-grant-tables パラメーターを指定して MySQL プロセスを起動します。これにより、起動時の権限チェックがバイパスされ、アカウントまたはパスワードなしでデータベースにログインできます。なお、--skip-grant-tables パラメーターの使用はセキュリティリスクとなります。ログイン後は直ちにアカウントとパスワードを変更してください。

  • Q: 自己管理型データベースに接続した後、システムデータベースや、一部のデータベースしか表示されません。どうすればよいですか?

    A: データベースを再起動してから、元の RDS インスタンスの root アカウントまたは高権限アカウントを使用して接続し、データベースを確認してください。

参考資料

よくある質問

ダウンロードした RDS for MySQL のバックアップを、別の RDS for MySQL インスタンスに復元できますか?

いいえ、この操作は直接はサポートされていません。 データを別のインスタンスに復元するには、次のいずれかの方法を使用できます:

特定の時間範囲のデータをセルフマネージドデータベースに復元するにはどうすればよいですか?

コンソールから指定した時間範囲のログバックアップをダウンロードし、セルフマネージドデータベースに復元できます。 詳細については、「バックアップのダウンロード」および「ポイントインタイムリカバリ」をご参照ください。

RDS for MySQL インスタンスからセルフマネージドデータベースにデータをバックアップするにはどうすればよいですか?

RDS Basic Edition インスタンスからデータを復元または移行するにはどうすればよいですか?

RDS Basic Edition インスタンスは、スナップショットバックアップのみをサポートします。 次のいずれかの方法を使用できます:

複数の RDS for MySQL インスタンスの物理バックアップを、単一のセルフマネージドデータベースに復元できますか?

いいえ、この操作はサポートされていません。 各物理バックアップを個別のセルフマネージドデータベースに復元する必要があります。 データの復元後、DTS または mysqldump を使用してデータを統合できます。 詳細については、「DTS を使用したセルフマネージド MySQL データベースから RDS for MySQL インスタンスへの移行」または「mysqldump を使用した MySQL データの移行」をご参照ください。

ソースインスタンスで特権アカウントを作成した場合、物理バックアップをセルフマネージドデータベースに復元した後も、その権限は保持されますか?

はい。バックアップにはアカウント権限が保持されており、復元操作でそれらが変更されることはありません。