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

ApsaraDB RDS:物理バックアップファイルから自己管理 MySQL データベースに ApsaraDB RDS for MySQL インスタンスのデータを復元する

最終更新日:May 30, 2025

このトピックでは、Percona XtraBackup を使用して、物理バックアップファイルから自己管理 MySQL データベースに ApsaraDB RDS for MySQL インスタンスのデータを復元する方法について説明します。

背景情報

ApsaraDB RDS for MySQL では、バックアップファイルから自己管理データベースに RDS インスタンスのデータを復元できます。物理バックアップファイルからの復元や論理バックアップファイルからの復元など、さまざまな復元方法がサポートされています。データ復元方法の選択方法の詳細については、「復元」をご参照ください。

RDS インスタンスのバックアップ方法を確認するには、次の操作を実行します。ApsaraDB RDS コンソール にログインし、RDS インスタンスの詳細ページに移動します。インスタンス詳細ページの左側のナビゲーションウィンドウで、バックアップと復元 をクリックします。表示されるページで、[ベースバックアップ] > [データバックアップ] を選択します。

image

説明

物理バックアップファイルが作成されていない場合は、このトピックで説明されている操作を実行する前に、手動で物理バックアップファイルを作成できます。詳細については、「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 ユーザーにバックアップファイルのダウンロードを承認する」をご参照ください。

制限事項

影響

  • 自己管理 MySQL データベースで他のサービスが実行されている場合、物理バックアップファイルから自己管理 MySQL データベースに RDS インスタンスのデータを復元した後、これらのサービスは使用できなくなります。

  • このトピックで説明されている復元方法は、RDS インスタンスのデータを自己管理 MySQL データベースの新しいデータディレクトリに復元するために使用されます。これは、自己管理データベースの元のデータには影響しません。

実装

このセクションでは、物理バックアップファイルからデータを復元するために実行する必要がある手順について説明します。

  1. RDS インスタンスで物理バックアップ全体を実行します。

  2. 物理バックアップファイルをコンピュータにダウンロードし、qpress ツールを使用してファイルを解凍します。

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

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

使用上の注意

  • ダウンロード URL は、生成されてから 1 時間のみ有効です。ダウンロード URL の有効期限が切れた場合は、ページを更新して最新のダウンロード URL を取得できます。

  • 物理バックアップファイルを変更または削除しないでください。そうしないと、ファイルが破損し、復元できなくなる可能性があります。RDS インスタンスの物理バックアップファイルを変更する必要がある場合は、まず物理バックアップファイルから自己管理 MySQL データベースに RDS インスタンスのデータを復元してから、ファイルを修正してください。

課金ルール

  • 手動バックアップを実行する必要がある場合は、手動バックアップファイルを保存するために使用されるバックアップストレージに注意してください。バックアップストレージの使用量が無料枠を超えた場合、超過したバックアップストレージの使用量に対して課金されます

  • 自己管理 MySQL データベースがオンプレミスマシンにデプロイされている場合は、インターネット経由でバックアップファイルをダウンロードする必要があります。バックアップファイルのダウンロード時に発生するトラフィックが無料枠を超えた場合、超過したインターネットトラフィックに対して課金されます

    説明

    自己管理 MySQL データベースが、RDS インスタンスと同じリージョンおよび仮想プライベートクラウド (VPC) 内にある Elastic Compute Service (ECS) インスタンスにデプロイされている場合は、内部ネットワーク経由でバックアップファイルをダウンロードできます。この場合、トラフィック料金は発生しません。

準備

環境の準備

  1. この例では、CentOS 7.9 64 ビット が使用されています。自己管理 MySQL データベースが他の Linux ディストリビューションで実行されている場合は、必要なコマンドを使用してください。

  2. 自己管理 MySQL データベースをデプロイします。データベースのメジャーエンジンバージョンは、RDS インスタンスのメジャーエンジンバージョンと 同じである必要があります。たとえば、自己管理 MySQL データベースと RDS インスタンスの両方で MySQL 8.0 が実行されている必要があります。

    次のコマンドを実行して、自己管理 MySQL データベースのメジャーエンジンバージョンを照会できます。

    mysql --version
  3. 自己管理 MySQL データベースの 構成ファイルのディレクトリ を照会します。

    構成ファイルのディレクトリは、自己管理 MySQL データベースのメジャーエンジンバージョンによって異なります。この例では、次のディレクトリが関係しています。

    • MySQL 8.0 または MySQL 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

    RDS インスタンスで MySQL 8.0 が実行されている場合は、インスタンスが配置されているホストのオペレーティングシステム (OS) に基づいて Percona XtraBackup をダウンロードします。次に、ダウンロードしたパッケージをサーバーにアップロードし、Percona XtraBackup をインストールします。Percona XtraBackup を ECS インスタンスにアップロードする必要がある場合は、「ファイルのアップロードまたはダウンロード」をご参照ください。

    重要

    MySQL 8.0 を実行する RDS インスタンスは、REDO ログファイルをサポートしています。オープンソースの Percona XtraBackup には、これらのインスタンスで互換性の問題が発生する可能性があります。ApsaraDB RDS が提供する XtraBackup ツールを使用することをお勧めします。

    ホスト環境

    XtraBackup 8.0 をインストールする

    インストールコマンドの例

    説明

    この例では、XtraBackup 8.0 は /Xtrabackup8.0 ディレクトリにダウンロードされます。実際のインストールコマンドは、ダウンロードディレクトリによって異なります。XtraBackup 8.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

    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 関連のコマンドを実行する場合は、次の方法を使用できます。

    • フルパスが指定されたコマンドを実行できます。このトピックでは、複数のコマンドでフルパスが指定されています。例: /u01/xtrabackup80/bin/xtrabackup --xxxxxx

    • /u01/xtrabackup80/bin ディレクトリをシステムの PATH 環境変数に手動で追加できます。

    MySQL 5.7、MySQL 5.6、または MySQL 5.5

    RDS インスタンスで MySQL 5.7、MySQL 5.6、または MySQL 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 ツールをインストールします。

    ## 実行可能ファイルの 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. ApsaraDB RDS コンソールにログインし、インスタンス ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンス ID をクリックします。

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

  3. 表示されるページで、基本バックアップリスト > [データバックアップ] を選択します。ダウンロードする物理バックアップファイルを見つけて、[アクション] 列の [インスタンスバックアップのダウンロード] をクリックします。

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

    重要
    • 内部 URL を使用してバックアップファイルをダウンロードする場合は、ログインしているサーバーと RDS インスタンスが同じ VPC に存在することを確認してください。サーバーと RDS インスタンスがリージョンをまたがる VPC に存在する場合、またはサーバーがクラシックネットワークに存在し、RDS インスタンスが VPC に存在する場合は、内部 URL を使用してバックアップファイルをダウンロードすることはできません。

    • 外部 URL を使用してバックアップファイルをダウンロードする場合、消費した超過インターネットトラフィックに対して課金されます。詳細については、「課金ルール」をご参照ください。

    • ダウンロード URL は、生成されてから 1 時間のみ有効です。ダウンロード URL の有効期限が切れた場合は、ページを更新して最新のダウンロード URL を取得できます。

    • 物理バックアップファイルは変更または削除しないことをお勧めします。物理バックアップファイルを変更または削除すると、ファイルが破損し、復元できなくなる可能性があります。物理バックアップファイルを変更する必要がある場合は、RDS インスタンスのデータを物理バックアップファイルから自己管理 MySQL データベースに復元してから、ファイルを修正することをお勧めします。

  5. 自己管理 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 です。

ファイルダウンロードに関するよくある質問

  • データファイルをダウンロードするときにエラーが報告されるのはなぜですか。

    wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp コマンドを実行してデータファイルをダウンロードする場合は、ダウンロード URL を一重引用符(')で囲む必要があります。このようにして、アプリケーションはダウンロード URL を識別できます。

ステップ 2: バックアップファイルを解凍する

次のいずれかのメソッドを使用して、ダウンロードしたバックアップ ファイルをファイルの拡張子に基づいて解凍します。

重要

コマンドを実行する前に、自己管理 MySQL データベースが存在するサーバーに Percona XtraBackupqpress がインストールされていることを確認してください。詳細については、「準備」をご参照ください。

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

_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.gz

次のコマンドを実行するときは、test.tar.gz を保存したバックアップファイルの名前に置き換え、/var/mysql_bkdata/ を作成したバックアップ展開ディレクトリに置き換えます。

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

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

解凍に関する FAQ

  • ダウンロードしたバックアップ ファイルを解凍するとシステムからエラーが報告された場合はどうすればよいですか。

    エラーの原因を特定し、エラーを解決するには、次の操作を実行します。

    バックアップ ファイルが物理バックアップ ファイルであるかどうかを確認します。

    バックアップ ファイルのファイル名拡張子が、xb.qp.tar.gz.xb.gz_qp.xb のいずれかの有効な拡張子であるかどうかを確認します。

    解凍コマンドは、バックアップ ファイルのファイル名拡張子によって異なります。

    解凍中に次のエラー メッセージが表示される場合があります。

    • sh: qpress: command not found エラー メッセージが表示されます。

      解決策: 自己管理 MySQL データベースが存在するサーバーに qpress がインストールされているかどうかを確認します。詳細については、「前提条件」をご参照ください。

    • innobackupex が見つからないことを示すエラー メッセージが表示されます。このエラーは、バックアップ ファイルのファイル名拡張子が _qp.xb の場合に報告されます。

      解決策: 自己管理 MySQL データベースが存在するサーバーに Percona XtraBackup がインストールされているかどうかを確認します。詳細については、「前提条件」をご参照ください。

    • 上記の cat コマンドを実行すると、can't change to dir to xx( errorcode:no such file or directory) エラー メッセージが表示されます。このエラーは、バックアップ ファイルのファイル名拡張子が _qp.xb の場合に報告されます。

      解決策: 解凍されたファイルを保存するディレクトリまたはファイル名が正しいかどうかを確認します。

ステップ 3: データを復元する

重要

自己管理 MySQL データベースにデータをリストアする前に、データベースを停止してください。

ps -ef | grep '[m]ysql' コマンドを実行して、MySQL 関連のプロセスが存在するかどうかを確認できます。MySQL 関連のプロセスが存在する場合は、sudo kill -9 <PID> コマンドを実行してプロセスを終了できます。

MySQL 8.0 を実行する RDS インスタンスのデータをリストアする

  1. リストアを準備します。

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

  2. 自己管理 MySQL データベースの datadir パラメーターを変更します。

    1. データベースの構成ファイルを変更します。

      sudo vim /etc/my.cnf

      構成ファイルのディレクトリのクエリ方法の詳細については、「準備」をご参照ください。

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

      datadir = /var/mysql_newdata

      mysql_newdata は、自己管理 MySQL データベースの新しいデータディレクトリを指定します。詳細については、「準備」をご参照ください。

    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

    Percona XtraBackup によって実行されるリストアコマンド。

    --target-dir

    バックアップ解凍ディレクトリ(この例では /var/mysql_bkdata/)。 Percona XtraBackup は、このディレクトリ内のデータを自己管理 MySQL データベースのデータディレクトリにリストアします。

MySQL 5.7 を実行する RDS インスタンスのデータをリストアする

  1. リストアを準備します。

    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/)が続きます。バックアップ解凍ディレクトリには、バックアップファイルが保存されます。

  2. 自己管理 MySQL データベースの my.cnf 構成ファイルを変更します。

    1. データベースの構成ファイルを変更します。

      sudo vim /etc/my.cnf

      構成ファイルのディレクトリのクエリ方法の詳細については、「準備」をご参照ください。

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

      datadir = /var/mysql_newdata

      mysql_newdata は、自己管理 MySQL データベースの新しいデータディレクトリを指定します。詳細については、「準備」をご参照ください。

    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

    Percona XtraBackup によって実行されるリストアコマンド。

    このパラメーターの後には、バックアップ解凍ディレクトリ(この例では /var/mysql_bkdata/)が続きます。 Percona XtraBackup は、ディレクトリ内のデータを自己管理 MySQL データベースのデータディレクトリにリストアします。

MySQL 5.6 を実行する RDS インスタンスのデータをリストアする

  1. リストアを準備します。

    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/)が続きます。バックアップ解凍ディレクトリには、バックアップファイルが保存されます。

  2. 自己管理 MySQL データベースの datadir パラメーターを変更します。

    1. データベースの構成ファイルを変更します。

      sudo vim /usr/my.cnf

      構成ファイルのディレクトリのクエリ方法の詳細については、「準備」をご参照ください。

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

      datadir = /var/mysql_newdata

      mysql_newdata は、自己管理 MySQL データベースの新しいデータディレクトリを指定します。詳細については、「準備」をご参照ください。

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

  3. データをリストアします。

    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 インスタンスのデータをリストアする

  1. リストアを準備します。

    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/)が続きます。バックアップ解凍ディレクトリには、バックアップファイルが保存されます。

  2. 自己管理 MySQL データベースの my.cnf 構成ファイルを変更します。

    1. データベースの構成ファイルを変更します。

      sudo vim /etc/my.cnf

      構成ファイルのディレクトリのクエリ方法の詳細については、「準備」をご参照ください。

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

      datadir = /var/mysql_newdata

      mysql_newdata は、自己管理 MySQL データベースの新しいデータディレクトリを指定します。詳細については、「準備」をご参照ください。

    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

    Percona XtraBackup によって実行されるリストアコマンド。

    このパラメーターの後には、バックアップ解凍ディレクトリ(この例では /var/mysql_bkdata/)が続きます。 Percona XtraBackup は、ディレクトリ内のデータを自己管理 MySQL データベースのデータディレクトリにリストアします。

データ復旧に関するよくある質問

  • xtrabackup: Unknown error 3613 というエラーメッセージが表示された場合はどうすればよいですか。

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

  • Original data directory /var/mysql_newdata is not empty! というエラーメッセージが表示された場合はどうすればよいですか。

    sudo rm -rf /var/mysql_newdata/* コマンドを実行して、フォルダ内のファイルをクリアします。 その後、復旧操作を再度実行します。

  • InnodDB: Encryption information in datafile: ./xxx.ibd can't be decrypted, please check if a keyring plugin is loaded and initialized successfully. というエラーメッセージが表示された場合はどうすればよいですか。

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

    • TDE が有効になっている場合は、TDE で暗号化されたテーブルが存在するかどうかを確認します。 TDE で暗号化されたテーブルが存在する場合は、テーブルの暗号化を解除してから、このトピックに記載されている手順に基づいてデータを復旧します。 詳細については、「前提条件」および「TDE の構成」をご参照ください。

    • TDE が無効になっている場合は、必要なバージョンの Percona XtraBackup がインストールされていることを確認します。 詳細については、「準備」をご参照ください。

  • ダウンロードしたバックアップファイルに TDE で暗号化されたデータが含まれており、データの復旧時にエラーが発生した場合はどうすればよいですか。

    ダウンロードしたバックアップファイルを使用してデータを復旧することはできません。 RDS インスタンスに暗号化されたテーブルが存在する場合、データの復旧時にエラーが発生します。 エラーを解決するには、テーブルの暗号化を解除してから、このトピックに記載されている手順に基づいてデータを復旧します。 詳細については、「前提条件」および「TDE の構成」をご参照ください。

  • データ復旧中に innobackupex: File 'undo001' not found (Errcode: 2 - No Such file or directory) というエラーメッセージが表示された場合はどうすればよいですか。

    undo ファイルはシステムファイルです。 ファイルはデータベースのバージョンによって異なります。 問題を解決するには、自己管理 MySQL データベースが RDS インスタンスと同じデータベースバージョンを実行しているかどうかを確認します。

ステップ 4: データベースを起動する

MySQL 8.0 または MySQL 5.7

  1. オプション。ApsaraDB RDS コンソールにログインし、ApsaraDB RDS for MySQL インスタンスのパラメータを表示するに記載されている手順に従って、lower_case_table_names パラメータの値を確認します。値が の場合は、自己管理 MySQL データベースの 構成ファイルを修正する必要があります。

    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

    自己管理 MySQL データベースの構成ファイルのディレクトリ。この例では、/etc/my.cnf を使用しています。準備 セクションに基づいて構成ファイルのディレクトリを取得できます。

    --user

    データベースを起動したユーザー。値は mysql に固定されています。

    --datadir

    データベースの起動に使用する データ ディレクトリ/var/mysql_newdata準備。この例では、 を使用しています。 セクションに基づいてデータディレクトリを取得できます。

MySQL 5.6

  1. オプション。ApsaraDB RDS コンソールにログインし、lower_case_table_namesApsaraDB RDS for MySQL インスタンスのパラメータを表示するに記載されている手順に従って、1my.cnf パラメータの値を確認します。 値が の場合は、自己管理 MySQL データベースの 構成ファイルを修正する必要があります。

    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

    自己管理 MySQL データベースの構成ファイルのディレクトリ。この例では /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

    自己管理 MySQL データベースの構成ファイルのディレクトリ。この例では、/etc/my.cnf を使用しています。「準備」セクションに基づいて構成ファイルのディレクトリを取得できます。

    --user

    データベースを起動したユーザー。値は mysql に固定されています。

    --datadir

    データベースの起動に使用するデータディレクトリ。 この例では、/var/mysql_newdata を使用しています。「準備」セクションに基づいてデータディレクトリを取得できます。

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

  • Ubuntu オペレーティングシステムで mysqld: [ERROR] Failed to open required defaults file: /etc/my.cnf というエラーメッセージが表示されるのはなぜですか。どうすればよいですか。

    このエラーは、Ubuntu オペレーティングシステムで提供されているセキュリティプログラム AppArmor が原因で発生します。 Ubuntu オペレーティングシステムを使用している場合、このエラーメッセージが表示されます。この場合は、apt install -y apparmor-utils コマンドと aa-complain /usr/sbin/mysqld コマンドを実行して AppArmor の設定を変更する必要があります。

  • リストア タスクの完了後、自己管理 MySQL データベースを使用するときに error 1105 Unknown error というエラーメッセージが表示された場合、または自己管理 MySQL データベースを起動できない場合はどうすればよいですか。

    次の 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'; 文を実行してください。

  • データのリストア後、ルートユーザーのパスワードは何ですか。

    次のいずれかの方法を使用してパスワードを取得できます。

    • RDS インスタンスで MySQL 5.7 または MySQL 8.0 が実行されている場合、RDS インスタンスのルートユーザーのパスワードは、自己管理 MySQL データベースのルートユーザーのパスワードと同じです。

    • RDS インスタンスで MySQL 5.5 または MySQL 5.6 が実行されている場合は、RDS インスタンスのルートユーザーのパスワードをリセットする必要があります。詳細については、「オープンソース MySQL ドキュメント」をご参照ください。

  • 起動中に InnodDB: Assertion failure in thread 140xxx in file page0zip.icne xxx というエラーメッセージが表示された場合はどうすればよいですか。

    ディスク容量が不足していることが原因で、このエラーが発生する可能性があります。 自己管理 MySQL データベースが存在するサーバーのディスクのサイズを変更して、再試行してください。

  • 起動中に [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. というエラーメッセージが表示された場合はどうすればよいですか。

    RDS インスタンスは高可用性 (HA) モードで動作しますが、自己管理 MySQL データベースはプライマリノードとセカンダリノードを伴いません。これはデータベースの起動には影響しません。 これらのエラーメッセージは無視してかまいません。

  • 起動中に [ERROR] Data Dictionary initialization failed というエラーメッセージが表示された場合はどうすればよいですか。

    オペレーティングシステムに互換性がないことが原因で、このエラーが発生する可能性があります。 RDS インスタンスは、基盤となるオペレーティングシステムとして Linux を使用します。そのため、互換性の問題を回避するために、Linux オペレーティングシステムでリストアを実行することをお勧めします。

  • sudo systemctl start mysqld コマンドを実行しても自己管理 MySQL データベースを起動できない場合はどうすればよいですか。

    このエラーの考えられる原因は、Security-Enhanced Linux (SELinux) が enforcing モードで実行されていることです。 getenforce コマンドを実行して、SELinux モードをクエリできます。

    • 開発環境またはテスト環境では、SELinux モードを permissive に変更してから、sudo systemctl start mysqld コマンドを実行して自己管理 MySQL データベースを起動することをお勧めします。

    • 本番環境では、SELinux ログを確認してエラーの原因を特定し、原因に基づいて SELinux 設定を変更することをお勧めします。

手順 5: データベースに接続してリストアを確認する

  1. 次のコマンドを実行して自己管理 MySQL データベースにログインし、MySQL が実行されていることを確認します。

    mysql -u<RDS インスタンスへの接続に使用するアカウントのユーザー名> -p<上記のアカウントのパスワード>
    説明
    • このコマンドは、リストアが成功したかどうかを確認するために使用されます。テーブル内のデータのクエリのみを実行する場合は、テーブルに対する権限を持つアカウントを使用してコマンドを実行できます。

    • アカウントまたはパスワードを忘れた場合は、コマンドに --skip-grant-tables オプションを追加して権限チェックを無視します。これにより、アカウントとパスワードを入力しなくてもデータベースにログインできます。データベースにログインした後に、アカウントとパスワードをリセットできます。

  2. 次の SQL 文を実行して、RDS インスタンス内のデータベースが存在するかどうかを確認します。

    SHOW DATABASES;

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

  • RDS インスタンスのデータを物理バックアップファイルから自己管理 MySQL データベースにリストアした後、データのタイムフィールドで示される時間と、自己管理 MySQL データベースが存在するサーバーのローカル時間が異なるタイムゾーンに属しています。なぜですか? データのタイムフィールドで示される時間とローカル時間が同じタイムゾーンに属するようにするにはどうすればよいですか?

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

  • 自己管理 MySQL データベースに接続するときに Access denied for user 'XXX' エラーメッセージが表示された場合はどうすればよいですか?

    RDS インスタンスへの接続に使用するアカウントのユーザー名とパスワードが正しいかどうかを確認します。アカウントは RDS インスタンスで作成されている必要があります。

  • 自己管理 MySQL データベースに接続するときにパスワードを忘れた場合はどうすればよいですか?

    アカウントのユーザー名またはパスワードを忘れた場合は、MySQL プロセスを開始するコマンドを実行するときに --skip-grant-tables パラメーターを設定します。プロセスが開始されると、権限チェックは無視され、パスワードなしモードでデータベースにログインできます。この方法を使用してデータベースにログインすると、セキュリティリスクが発生する可能性があることに注意してください。データベースにログインした直後に、アカウントのユーザー名とパスワードを変更することをお勧めします。

  • 自己管理データベースに接続した後に、システムデータベースまたは一部のデータベースのみを表示できる場合はどうすればよいですか?

    自己管理データベースを再起動します。次に、ルートアカウントまたは元の RDS インスタンスの特権アカウントを使用して、自己管理データベースに接続します。

次の手順

その他のよくある質問

ダウンロードしたデータバックアップファイルから RDS インスタンスのデータを別の RDS インスタンスにリストアできますか。

いいえ、ダウンロードしたバックアップファイルを使用して、RDS インスタンスのデータを別の RDS インスタンスにリストアすることはできません。次のソリューションのいずれかを使用して、RDS インスタンスから別の RDS インスタンスにデータをリストアできます。

指定した時間範囲の RDS インスタンスのデータを自己管理 MySQL データベースにリストアするにはどうすればよいですか。

ApsaraDB RDS [コンソール] で、特定の時間範囲内に生成されたログバックアップファイルをダウンロードできます。次に、ログバックアップファイルを使用して、RDS インスタンスのデータを自己管理 MySQL データベースにリストアできます。詳細については、「バックアップファイルをダウンロードする」および「特定の時点にデータをリストアする」をご参照ください。

RDS for MySQL インスタンスのデータを自己管理 MySQL データベースにリストアするにはどうすればよいですか。

RDS Basic Edition を実行している RDS インスタンスのデータをリストアまたは移行するにはどうすればよいですか。

RDS Basic Edition を実行している RDS インスタンスは、スナップショットバックアップのみをサポートしています。RDS インスタンスが RDS Basic Edition を実行している場合は、次のいずれかの方法を使用してデータをリストアまたは移行できます。

物理バックアップファイルから複数の RDS インスタンスのデータを自己管理 MySQL データベースにリストアできますか。

いいえ、物理バックアップファイルから複数の RDS インスタンスのデータを自己管理 MySQL データベースにリストアすることはできません。物理バックアップファイルから複数の RDS インスタンスのデータを異なる自己管理 MySQL データベースにリストアできます。次に、DTS または mysqldump を使用してデータを移行できます。詳細については、「自己管理 MySQL データベースから ApsaraDB RDS for MySQL インスタンスにデータを移行する」または「mysqldump 拡張機能を使用して、自己管理 MySQL インスタンスから ApsaraDB RDS for MySQL インスタンスにデータを移行する」をご参照ください。

バックグラウンドで RDS インスタンスの特権アカウントを作成します。物理バックアップを作成して RDS インスタンスをコンピュータにバックアップした後、特権アカウントは元の権限を保持していますか。

はい、特権アカウントは元の権限を保持しています。アカウントの権限はバックアップの影響を受けません。