このトピックでは、mysqldump を使用して、ApsaraDB RDS for MySQL インスタンスのデータを論理バックアップファイルから自己管理 MySQL インスタンスにリストアする方法について説明します。
データリストアメソッドの選択方法の詳細については、「データリストアメソッドの概要」をご参照ください。
RDS インスタンスのデータを物理バックアップファイルから自己管理 MySQL インスタンスにリストアする方法の詳細については、「ApsaraDB RDS for MySQL インスタンスのデータを物理バックアップファイルから自己管理 MySQL データベースにリストアする」をご参照ください。
RDS インスタンスをバックアップする方法の詳細については、「ApsaraDB RDS インスタンスのバックアップ」をご参照ください。
mysqldump を使用して、自己管理 MySQL インスタンスから ApsaraDB RDS for MySQL インスタンスにデータを移行することができます。 mysqldump のオプションの設定方法の詳細については、「RDS MySQL mysqldump オプション」をご参照ください。
前提条件
RDS インスタンスが以下の要件を満たしていること。
RDS インスタンスで MySQL 8.0、MySQL 5.7、MySQL 5.6、または MySQL 5.5 が実行されている。
RDS インスタンスで RDS High-availability Edition が実行されている。
RDS インスタンスでローカルディスクが使用されている。
説明RDS インスタンスの [基本情報] ページに移動して、RDS インスタンスに関する前述の情報を確認できます。
RDS インスタンスで論理バックアップが完了していること。詳細については、「自動バックアップ」をご参照ください。
実行環境
自己管理インスタンスが 64 ビット Linux オペレーティングシステムにインストールされており、RDS インスタンスと同じ MySQL バージョンを実行していること。このトピックでは、CentOS 7 と MySQL 5.7 を例として使用します。
手順
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDS インスタンスを見つけ、インスタンスの ID をクリックします。
表示されるページの左側のナビゲーションウィンドウで、[バックアップとリストア] をクリックします。
タブで、[データバックアップ] タブをクリックします。次に、ダウンロードする論理バックアップファイルを見つけて、[アクション] 列の [インスタンスバックアップのダウンロード] をクリックします。
説明論理バックアップは手動で作成する必要があります。詳細については、「ApsaraDB RDS for MySQL インスタンスを手動でバックアップする」をご参照ください。
[インスタンスバックアップのダウンロード] が見つからない場合は、RDS インスタンスの MySQL バージョンが論理バックアップファイルのダウンロードをサポートしているかどうかを確認する必要があります。詳細については、「バックアップファイルをダウンロードする」をご参照ください。
[インスタンスバックアップファイルのダウンロード] ダイアログボックスで、
[パブリック URL のコピー] の右側にある アイコンをクリックします。
重要インターネット経由のバックアップダウンロードには無料クォータが提供されます。インターネット経由でバックアップファイルをダウンロードするために消費するトラフィック量が無料クォータを超えた場合、超過したトラフィック量に対して課金されます。詳細については、「ApsaraDB RDS for MySQL インスタンスのバックアップファイルをダウンロードする」をご参照ください。
Elastic Compute Service (ECS) インスタンスが RDS インスタンスと同じ VPC (仮想プライベートクラウド) 内にある場合は、内部 URL を使用して論理バックアップファイルをダウンロードできます。このダウンロード方法は、より高速で安定しています。
セルフマネージド インスタンスが実行されている Linux オペレーティングシステムにログオンします。次に、次のコマンドを実行して論理バックアップ ファイルをダウンロードします。
wget -c '<論理バックアップファイルをダウンロードできるパブリック URL>' -O <ダウンロードしたバックアップファイルに使用するファイル名>.tar
説明-c オプションは、再開可能なダウンロード機能を有効にします。
-O オプションは、ダウンロードした論理バックアップファイルを指定したファイル名に基づいて保存することを指定します。
ダウンロードした論理バックアップファイルを解凍するには、次のコマンドを実行します。論理バックアップファイルには、デフォルトのシステムデータベースの圧縮ファイルと、作成したデータベースの圧縮ファイルが含まれています。
tar xvf <ダウンロードした論理バックアップファイルの名前>.tar -C /tmp
例:
tar xvf hins123456.tar -C /tmp
説明This does not look like a tar archive
のようなエラーメッセージが返された場合は、ダウンロードしたファイルが RDS インスタンスの論理バックアップファイル であるかどうかを確認してください。Wrote only 512 of 10240 bytes. Exiting with failure status due to previous errors
のようなエラーメッセージが返された場合は、ディスクがいっぱいになっていないか確認してください。ディスクの容量をスケールアップして、再試行できます。詳細については、「インスタンスの仕様を変更する」をご参照ください。復元するデータベースの圧縮ファイルを解凍します。圧縮ファイルの名前には、
.sql.gz
というサフィックスが付いています。gzip -d /tmp/The name of the compressed file of the database that you want to restore
例:
gzip -d /tmp/testdata_datafull_202012101615_160xxxxxx.sql.gz
説明展開プロセス中に生成される .sql ファイルは、手順 10 でインポートされます。
セルフマネージド インスタンスにログインし、空のデータベースを作成するには、次のコマンドを実行します。
説明後続のステップで使用されるユーザーは、.sql ファイル内のすべての SQL 文を実行する権限を持っている必要があります。
mysql -u user -p<The password of the database> create database <The name of the empty database>; exit
次のコマンドを実行して、.sql ファイルを空のデータベースにインポートします。
mysql -u root -p <空のデータベース名> < /tmp/解凍されたファイル名
例:
mysql -u user -p testdb < /tmp/testdata_datafull_202012101615_160xxxxxx.sql
説明上記のコマンドが正常に実行されると、パスワードの入力を求めるメッセージが表示されます。パスワードを入力し、Enterキーを押します。
「キーリングからマスターキーが見つかりません」というエラーメッセージが表示された場合は、RDS インスタンスがすべての前提条件を満たしているかどうかを確認してください。
空のデータベースにログオンします。次に、データベースにデータが存在するかどうかを確認します。 データベースにデータが存在する場合、RDS インスタンスのデータはセルフマネージド インスタンスに正常にリストアされています。
FAQ
RDS インスタンスに論理バックアップファイルがないのはなぜですか?
デフォルトでは、システムは物理バックアップを作成します。必要に応じて、論理バックアップを手動で作成する必要があります。詳細については、「自動バックアップ」をご参照ください。
論理バックアップファイルをダウンロードするときに、ファイルの [バックアップセットのリストアポイント] 列の値が 0 と表示されるのはなぜですか?
ApsaraDB RDS for MySQL では、物理バックアップファイルとログバックアップファイルを使用して、特定の時点にデータをリストアできます。ApsaraDB RDS コンソールには、[バックアップセットのリストアポイント] 列が用意されています。この列には、各物理バックアップファイルのタイムスタンプが表示されます。論理バックアップファイルを使用して、特定の時点にデータをリストアすることはできません。[バックアップセットのリストアポイント] 列の値は、すべての論理バックアップファイルで 0 です。
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
というエラーメッセージが表示された場合はどうすればよいですか?この問題は、GTID が原因で発生します。次の方法を使用して、問題を解決できます。
GTID 機能を有効にします。次に、このトピックの「手順」セクションの手順を繰り返して、データをリストアします。
GTID 機能を無効にします。インポートする
.sql
ファイルの GTID_PURGED パラメーターをコメントアウトします。次に、このトピックの「手順」セクションの手順を繰り返して、データをリストアします。同期レプリケーションモードが無効になっていることを確認します。次に、自己管理インスタンスにログインし、
reset master
コマンドを実行してから、このトピックの「手順」セクションの手順を繰り返して、データをリストアします。
ERROR 3546 (HY000) at line 26: @@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED
というエラーメッセージが表示された場合はどうすればよいですか?インポートされた
.sql
ファイルには、自己管理インスタンスで見つけることができる特定の GTID が含まれています。この場合は、自己管理インスタンスにログインし、RESET MASTER
コマンドを実行してから、このトピックの「手順」セクションの手順を繰り返して、データをリストアします。データが自己管理インスタンスにリストアされた後、データが自己管理インスタンスのセカンダリインスタンスに自動的に同期されないのはなぜですか?
インポートされた
.sql
ファイルにSESSION.SQL_LOG_BIN= 0
設定が見つかるかどうかを確認します。この設定が指定されている場合、データのリストアはセカンダリ RDS インスタンスに自動的に同期されません。