リストア操作を実行するための mysqlbackup オプションは、copy-back
と copy-back-and-apply-log
です。リストアプロセスでは、データベースサーバーがすでにシャットダウンされていることが必要です (--use-tts
オプションで作成したバックアップのリストアを除きます。下の説明を参照してください)。このプロセスは、データファイル、ログ、およびほかのバックアップされたファイルを、バックアップディレクトリからコピーしてその元の場所に戻し、必要な後処理をそれらに対して実行します。どのリストア操作の場合でも、オプション datadir
、innodb_log_files_in_group
、innodb_log_file_size
、および innodb_data_file_path
をターゲットサーバーの構成ファイル内、--defaults-file
オプションによって指定されたファイル内、またはコマンド行オプションとして指定する必要があります。
例 4.4 データベースのシャットダウンとリストア
mysqladmin --user=root --password shutdown
mysqlbackup --defaults-file=/usr/local/mysql/my.cnf \
--backup-dir=/export/backups/full \
copy-back
リストアしたデータには、backup_history
テーブルが含まれ、MySQL Enterprise Backup はここに各バックアップの詳細を記録します。このテーブルを以前の状態にリストアすると、それ以降に行なったバックアップに関する情報が削除されます。これは、今後の増分バックアップの、特に --incremental-base
オプションを使用した増分バックアップの正しい開始点です。
完全リストアを実行するときに (たとえば、バックアップデータを新しい MySQL Server の設定に使用したり、既存の MySQL Server のすべてのデータの交換に使用したりするとき)、ターゲットデータディレクトリがすべてクリーンで、古いまたは不要なデータファイルが含まれていないことを確認してください。これには、--datadir
オプションと --innodb_data_file_path
オプションの両方で指定された場所で、ファイルを手動で削除することが必要になる可能性があります。同じクリーンアップは、--use-tts
オプションで作成されたバックアップのリストアには必要なく (ただしこの場合、Restoring Backups Created with the --use-tts Optionで示されたほかの要件は適用されます)、部分バックアップのリストアには通常必要ありません。
copy-back-and-apply-log
オプションを代わりに使用することによって、apply-log
操作と copy-back
操作 (およびリストアしているバックアップの種類に応じて、多数のほかの操作も) を単一のステップに組み合わせることができます。
mysqlbackup --defaults-file=/usr/local/mysql/my.cnf \
--backup-dir=/export/backups/full \
copy-back-and-apply-log
例 4.5 圧縮バックアップのリストア
copy-back-and-apply-log
を使用して、<backupDir>
の圧縮バックアップを、サーバー上の <restoreDir>
にリストアします。
mysqlbackup --defaults-file=<my.cnf> -uroot --backup-dir=<backupDir> --datadir=<restoreDir> \
--uncompress copy-back-and-apply-log
--backup-dir
オプションを使用してイメージの抽出先の一時ディレクトリを指定して、<image_name>
という名前の圧縮バックアップイメージに同じ操作を行います。
mysqlbackup --defaults-file=<backupDir>/backup-my.cnf -uroot --backup-image=<image_name> \
--backup-dir=<backupTmpDir> --datadir=<restoreDir> --uncompress copy-back-and-apply-log
圧縮バックアップの詳細は、セクション3.3.3「圧縮バックアップの作成」およびセクション5.1.7「圧縮オプション」を参照してください。
例 4.6 暗号化されたバックアップイメージのリストア
<keyFile>
という名前のファイルに含まれた暗号化鍵を使用して、copy-back-and-apply-log
で <image_name>
という名前の暗号化されたバックアップイメージをサーバー上の <restoreDir>
にリストアします。
mysqlbackup --defaults-file=<backupDir>/backup-my.cnf --backup-image=<image_name> \
--backup-dir=<backupTmpDir> --datadir=<restoreDir> --decrypt --key-file=<keyFile> copy-back-and-apply-log
バックアップ暗号化と復号化の詳細は、セクション5.1.14「暗号化オプション」を参照してください。
例 4.7 増分バックアップイメージのリストア
--incremental-backup-dir
オプションを使用してイメージの抽出先の一時ディレクトリを指定しながら、copy-back-and-apply-log
で <inc_image_name>
という名前の増分バックアップイメージをサーバー上の <restoreDir>
にリストアします (増分バックアップの基準となっていた完全バックアップがすでに <restoreDir>
にリストアされていることに注意してください)。
mysqlbackup --defaults-file=<backupDir>/backup-my.cnf -uroot --backup-image=<inc_image_name> \
--incremental-backup-dir=<incBackupTmpDir> --datadir=<restoreDir> --incremental \
copy-back-and-apply-log
--backup-dir
を使用してイメージが抽出される一時ディレクトリを指定して同じことを行います。
mysqlbackup --defaults-file=<backupDir>/backup-my.cnf -uroot --backup-image=<inc_image_name> \
--backup-dir=<incBackupTmpDir> --datadir=<restoreDir> --incremental \
copy-back-and-apply-log
増分バックアップの詳細は、セクション3.3.2「増分バックアップの作成」およびセクション5.1.8「増分バックアップオプション」を参照してください。
例 4.8 TTS バックアップからの選択されたテーブルのリストア
選択したテーブルは、--include-tables
オプションと --exclude-tables
オプションを使用して、トランスポータブルテーブルスペース (TTS) で作成されたバックアップ (つまり、--use-tts
オプションで作成されたバックアップ) からリストアできます。次のコマンドは、バックアップから 「sales」 データベース内のすべてのテーブルをリストアしますが、「hardware」 という名前のテーブルを除きます。
mysqlbackup --socket=/tmp/restoreserver.sock --datadir=/logs/restoreserverdata --backup-dir=/logs/backup \
--include-tables='^sales\.' --exclude-tables='^sales\.hardware$' copy-back-and-apply-log
TTS バックアップから選択したテーブルをリストアするときに適用される特殊な要件については、Restoring Backups Created with the --use-tts Optionを参照してください。
例 4.9 クラウドストレージから MySQL Server への単一ファイルバックアップのリストア
--backup-dir
オプションを使用してイメージの抽出先の一時ディレクトリを指定しながら、クラウドストレージからサーバー上の datadir
にバックアップイメージをリストアします (クラウドサービスオプションの詳細は、セクション5.1.15「クラウドストレージオプション」を参照してください)。
mysqlbackup\
--defaults-file=/bkups/backupdir/backupmy.cnf \
--cloud-service=s3 --cloud-aws-region=<aws region> \
--cloud-access-key-id=<aws access key id> --cloud-secret-access-key=< aws secret access key> \
--cloud-bucket=<s3 bucket name> --cloud-object-key=<aws object key> \
--backup-dir=/home/user/dba/s3backuptmpdir \
--datadir=/home/user/dba/datadir \
--backup-image=- \
copy-back-and-apply-log
--use-tts
オプションで作成されたバックアップのリストア
--use-tts
オプションで作成されたバックアップをリストアするには、複数の特殊な要件があります。
復元先のサーバーが実行中である必要があります。
サーバーに接続するために必要なパラメータ (ポート番号、ソケット名など) が、mysqlbackup のコマンド行オプションとして与えられているか、またはデフォルトファイルの
「client」
セクションで指定されていることを確認します。バックアップが作成されたサーバーで使用されていた同じページサイズを、復元先のサーバーで使用している必要があります。
復元先のサーバーで innodb_file_per_table オプションを有効にする必要があります。
リストアされるテーブルが、リストア先のサーバーに存在していることはできません。
リストアされる per-table データファイル (
.ibd
ファイル) の InnoDB ファイル形式が、リストア先のサーバーでのinnodb_file_format
システム変数の値と一致しない場合、リストアが失敗します。この場合、形式には無関係に per-table データファイルをリストアできるようにするために、リストアコマンドとともに--force
オプションを使用して、サーバーでのinnodb_file_format
の値を一時的に変更します。