DUICUO

完全ガイド:バックアップのパワーハウス、Percona XtraBackup 8 の包括的な概要

著者 |呉祥陽

校正者 | Chonglou

導入

Percona XtraBackupは、MySQLとそのフォーク(Percona ServerやMariaDBなど)データベース向けに設計されたオープンソースのバックアップツールです。データベース操作を中断することなくホットバックアップを実行できるため、データの一貫性と復元性を確保できます。Percona XtraBackupは最新バージョンであり、いくつかの改良と新機能が追加されています。

動作原理

1. 基本原則

再実行ログ:

  • REDOログは、InnoDBがすべてのデータ変更を記録するために使用するログファイルです。クラッシュが発生した場合でも、REDOログはデータの整合性を回復するのに役立ちます。
  • InnoDB が起動すると、データ ファイルと REDO ログがチェックされ、次の 2 つのステップが実行されます。

(1)コミットされたトランザクションを適用する:コミットされたトランザクションログエントリをデータファイルに適用して最新の状態にします。

(2)コミットされていないトランザクションを元に戻す:データの一貫性を確保するために、変更されたがコミットされていないデータを元に戻します。

2. バックアッププロセス

バックアップを開始:

  1. XtraBackup が起動すると、その時点でのデータベースのスナップショットである現在の LSN (ログ シーケンス番号) が記録されます。

データファイルをコピー:

  • XtraBackup は InnoDB データファイルのコピーを開始します。データファイルはバックアッププロセス中に変更される可能性があるため、異なる時点のデータ状態を反映する場合があります。

REDOログをコピーします:

  • XtraBackupは、REDOログの変更を監視および複製するプロセスをバックグラウンドで実行します。これにより、バックアップの開始から終了までのすべての変更が確実にキャプチャされます。
  • REDOログは循環的に書き込まれ、ログスペースが使い果たされると再利用されます。そのため、XtraBackupは変更が見逃されないように、ログを継続的に監視する必要があります。

3. 回復プロセス

アプリケーションREDOログ:

  • バックアップが完了すると、XtraBackupは準備フェーズを実行し、REDOログからすべての変更をデータファイルに適用します。このステップは、InnoDBのクラッシュリカバリプロセスに似ています。
  • REDO ログを適用することで、リカバリ中のデータ ファイルの一貫性と整合性が確保されます。

4. バックアップロックを使用する

バックアップロック:

  • XtraBackupは、MySQL 8.0で導入されたバックアップロックLOCK INSTANCE FOR BACKUPLOCK BINLOG FOR BACKUPを利用します。これらのロックにより、バックアッププロセス中のテーブルロックが長期間発生するのを防ぐことができます。
  • バックアップ ロックが利用できない場合、XtraBackup はFLUSH TABLES WITH READ LOCKを使用してMyISAM およびその他の InnoDB 以外のテーブルをロックしますが、DML 操作に影響を与えないように最終段階での短い期間のみロックします。

5. 増分バックアップ

増分バックアップ:

  • 増分バックアップは、前回のバックアップのLSNに基づいて、それ以降に発生した変更のみをバックアップします。これにより、バックアップ時間とストレージ容量を削減できます。
  • 増分バックアップが完了したら、基本バックアップおよび以前の増分バックアップとマージし、REDO ログを適用して完全なデータを復元できます。

6. 具体的な手順

1) LSN を記録: バックアップを開始するときに現在の LSN を記録します。

2) データファイルのコピー:データファイルのコピーを開始します。

3) REDO ログをコピーする: REDO ログの変更を継続的に監視してコピーします。

4) 終了時の操作:

  • MyISAM テーブルをロックする必要がある場合、XtraBackup は最終段階でこれらのテーブルを短時間ロックして、長時間のブロックを回避します。
  • バックアップが完了すると、XtraBackup は再実行ログの変更をデータ ファイルに適用し、データの一貫性を確保します。

7. 回復

1 )データ ファイルの復元: --copy-backまたは--move-backオプションを使用して、バックアップ データをターゲット ディレクトリに復元します。

2 ) REDO ログの適用: 準備フェーズでは、XtraBackup は REDO ログからのすべての変更をデータ ファイルに適用し、データベースの一貫性を確保します。

3 )データベースを起動します。リカバリが完了したら、データベースを起動して通常どおり使用できます。

アドバンテージ

  • ダウンタイムなしのバックアップ: データベース サービスを停止せずにオンライン バックアップをサポートします。
  • 高パフォーマンス: バックアップ中のデータベース パフォーマンスへの影響は最小限です。
  • 増分バックアップ: 増分バックアップをサポートし、ストレージスペースとバックアップ時間を削減します。
  • データの一貫性: バックアップ中にデータの一貫性を確保します。
  • 柔軟なリカバリ: 部分的なリカバリとポイントインタイムリカバリをサポートします。
  • 高速:回復時間が速くなり、稼働時間が長くなります
  • リソース制約: I/O、スレッド、メモリなどのリソース制約を制御します。

欠点

  1. 学習曲線: 初心者の場合、設定と使用方法を習得するのに時間がかかる場合があります。
  2. 複雑な環境のサポート: 一部の複雑な環境 (複数ソースのレプリケーションや非常に大規模なデータベースなど) では、構成と使用が複雑になる場合があります。
  3. ハードウェア要件: 増分バックアップと復元には、より多くのハードウェア リソース (ディスクやメモリなど) が必要になる場合があります。

バージョン制限

  • XtraBackup 2.4 : MySQL 5.6 および 5.7、および対応するバージョンの Percona Server および MariaDB 向け。
  • XtraBackup 8.0 : MySQL 8.0 および同等のバージョンの Percona Server 用。
  • XtraBackup 8.3 : 主に MySQL 8.3および対応するバージョンの Percona Server に使用されます。

ユースケース

  • 高可用性環境: データベースの操作に影響を与えずにバックアップを実行する必要があります。
  • 大規模データベース: 大規模データベースのバックアップ ニーズに対応するのに適しています。
  • データ復旧: 部分的な復旧やポイントインタイム復旧など、信頼性の高いデータ復旧ソリューションを提供します。
  • 増分バックアップの要件: ストレージスペースとバックアップ時間を節約するには、定期的な増分バックアップが必要です。

インストール手順

ペルコナ-XtraBackup-8.3.0

1. RPMパッケージをダウンロードする

wget

https://downloads.percona.com/downloads/Percona-XtraBackup-innovative-release/Percona-XtraBackup-8.3.0-1/binary/redhat/7/x86_64/percona-xtrabackup-83-8.3.0-1.1.el7.x86_64.rpm

2. インストール

Shell > yum install epel-release Shell > yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm sudo Shell > percona-release setup ps80 Shell > yum install openssl-libs libev libgcrypt procps-ng perl-DBD-MySQL zstd Shell > rpm -ivh percona-xtrabackup-83-8.3.0-1.1.el8.x86_64.rpm

ペルコナ-XtraBackup-8.0.35

 Shell > yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm Shell > percona-release enable-only tools Shell > yum install openssl-libs libev libgcrypt procps-ng perl-DBD-MySQL zstd Shell > yum install percona-xtrabackup-80

アカウント認証

CREATE USER 'xtrabackup'@'localhost' IDENTIFIED BY 's3cr%T'; GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'xtrabackup'@'localhost'; GRANT SELECT ON performance_schema.log_status TO 'xtrabackup'@'localhost'; GRANT SELECT ON performance_schema.keyring_component_status TO xtrabackup@'localhost'; GRANT SELECT ON performance_schema.replication_group_members TO xtrabackup@'localhost'; FLUSH PRIVILEGES;

バックアップの例

ストリーミングフルバックアップ

  • 完全バックアップをローカルのディスクに書き込まずに、リモート ホストにストリーミングします。
 xtrabackup --defaults-file=/etc/my.cnf --port=3306 --user=xtrabackup --host=10.20.20.20 --password='*****sel' --compress --compress-threads=4 --parallel=4 --throttle=300 --stream=xbstream --use-memory=200MB --tmpdir=/tmp --ftwrl-wait-timeout=120 --kill-long-queries-timeout=60 --kill-long-query-type=all --no-server-version-check --backup > /jesong/xtrabackup/backup-image_`date +"%F_%H_%M_%S"`
  • 完全バックアップをローカルのディスクに書き込まずに、リモート ホストにストリーミングします。
 xtrabackup --defaults-file=/etc/my.cnf --port=3306 --user=xtrabackup --host=10.20.20.20 --password='*****sel' --compress --compress-threads=4 --parallel=4 --throttle=300 --stream=xbstream --use-memory=200MB --ftwrl-wait-timeout=120 --kill-long-queries-timeout=60 --kill-long-query-type=all --no-server-version-check --backup > /jesong/xtrabackup/backup-image_`date +"%F_%H_%M_%S"` | sshpass -p 'Tisdfsdfsdfdsfdsfds' ssh -p 22 [email protected] "cat - > /jesong/backup.xbstream"
  • ミラー抽出
xbstream -x < /jesong/xtrabackup/backup-image -C /jesong/xtrabackup/xbstream-dir/
  • 解凍
xtrabackup --decompress --parallel=4 --use-memory=200MB --target-dir=/jesong/xtrabackup/xbstream-dir/
  • アプリケーション ログ:
 xtrabackup --prepare --parallel=4 --use-memory=200MB --target-dir=/jesong/xtrabackup/xbstream-dir/
  • 回復する
xtrabackup --copy-back --target-dir=/jesong/xtrabackup/xbstream-dir/

圧縮された完全バックアップ

  • 完全バックアップとローカル圧縮
xtrabackup --defaults-file=/etc/my.cnf --slave-info --port=3306 --user=xtrabackup --host=196.168.10.10 --password='*******' --compress --compress-threads=4 --parallel=4 --throttle=300 --use-memory=200MB --ftwrl-wait-timeout=120 --kill-long-queries-timeout=60 --kill-long-query-type=all --no-server-version-check --backup --target-dir=/jesong/xtrabackup/backup-image_`date +"%F_%H_%M_%S"`


  • 解凍
xtrabackup --decompress --parallel=4 --use-memory=200MB --target-dir=/jesong/xtrabackup/backup-image_2024-05-30_17_56_25/
  • アプリケーションログ
xtrabackup --prepare --parallel=4 --use-memory=200MB --target-dir=/jesong/xtrabackup/backup-image_2024-05-30_17_56_25/
  • 回復する
xtrabackup --copy-back --target-dir=/jesong/xtrabackup/xbstream-dir/

増分バックアップ

  • ストリーミングフルバックアップ
xtrabackup --defaults-file=/etc/my.cnf --slave-info --port=3306 --user=xtrabackup --host=196.168.10.10 --password='*******' --compress --compress-threads=4 --parallel=4 --throttle=300 --stream=xbstream --use-memory=200MB --ftwrl-wait-timeout=120 --kill-long-queries-timeout=60 --kill-long-query-type=all --no-server-version-check --backup --extra-lsndir=/jesong/xtrabackup/full > /jesong/xtrabackup/full/backup-image
  • インクリメント
1xtrabackup --defaults-file=/etc/my.cnf --slave-info --port=3306 --user=xtrabackup --host=196.168.10.10 --password='*******' --compress --compress-threads=4 --parallel=4 --throttle=300 --stream=xbstream --use-memory=200MB --ftwrl-wait-timeout=120 --kill-long-queries-timeout=60 --kill-long-query-type=all --no-server-version-check --backup --extra-lsndir=/jesong/xtrabackup/incremental_1 --incremental-basedir=/jesong/xtrabackup/full > /jesong/xtrabackup/incremental_1/backup-image
  • インクリメント
2xtrabackup --defaults-file=/etc/my.cnf --slave-info --port=3306 --user=xtrabackup --host=196.168.10.10 --password='*******' --compress --compress-threads=4 --parallel=4 --throttle=300 --stream=xbstream --use-memory=200MB --ftwrl-wait-timeout=120 --kill-long-queries-timeout=60 --kill-long-query-type=all --no-server-version-check --backup --extra-lsndir=/jesong/xtrabackup/incremental_2 --incremental-basedir=/jesong/xtrabackup/incremental_1 > /jesong/xtrabackup/incremental_2/backup-image


  • 完全なデータのミラー抽出
xbstream -x < /jesong/xtrabackup/full/backup-image -C /jesong/xtrabackup/xbstream-dir/
  • インクリメント
1xbstream -x < /jesong/xtrabackup/incremental_1/backup-image -C /jesong/xtrabackup/incremental_1_work
  • インクリメント
2xbstream -x < /jesong/xtrabackup/incremental_2/backup-image -C /jesong/xtrabackup/incremental_2_work

解凍

  • 全額
xtrabackup --decompress --parallel=4 --use-memory=200MB --target-dir=/jesong/xtrabackup/xbstream-dir/
  • インクリメント
1xtrabackup --decompress --parallel=4 --use-memory=200MB --target-dir=/jesong/xtrabackup/incremental_1_work
  • インクリメント
2xtrabackup --decompress --parallel=4 --use-memory=200MB --target-dir=/jesong/xtrabackup/incremental_2_work

アプリケーション ログ:最後のバックアップを除き、増分バックアップをマージするときは --apply-log-only を使用する必要があります

  • 全額
xtrabackup --prepare --apply-log-only --parallel=4 --use-memory=200MB --target-dir=/jesong/xtrabackup/xbstream-dir/
  • インクリメント
1xtrabackup --prepare --apply-log-only --parallel=4 --use-memory=200MB --incremental-dir=/jesong/xtrabackup/incremental_1_work --target-dir=/jesong/xtrabackup/xbstream-dir/
  • インクリメント
2xtrabackup --prepare --parallel=4 --use-memory=200MB --incremental-dir=/jesong/xtrabackup/incremental_2_work --target-dir=/jesong/xtrabackup/xbstream-dir/
  • 回復する
xtrabackup --copy-back --target-dir=/jesong/xtrabackup/xbstream-dir/

最後のステップで`--apply-log-only`が使用されないのはなぜですか?

  • ロールバックを実行します最後の増分バックアップを適用する際には、 --apply-log-onlyを使用しないでください。これにより、コミットされていないトランザクションがロールバックされ、バックアップデータの整合性が確保されます。
  • バックアップの一貫性最終ステップで`--apply-log-only`を使用した場合でも、バックアップの一貫性は維持されます。ただし、データベースサーバーはリカバリ後の起動時にロールバック操作を実行します。これによりリカバリ時間が長くなる可能性があるため、バックアップ準備フェーズでロールバックを完了することをお勧めします。

部分バックアップ

  • テーブルまたはその開始名を指定すると、バックアップがトリガーされます。
 xtrabackup --defaults-file=/etc/my.cnf --slave-info --port=3306 --user=xtrabackup --host=196.168.10.10 --password='*******' --parallel=4 --throttle=300 --use-memory=200MB --ftwrl-wait-timeout=120 --kill-long-queries-timeout=60 --kill-long-query-type=all --no-server-version-check --backup --datadir=/jesong/mysql --target-dir=/jesong/xtrabackup/test --tables="^tolldb[.]tc_deduction_plan"
  • 図書館のテーブル
xtrabackup --defaults-file=/etc/my.cnf --slave-info --port=3306 --user=xtrabackup --host=196.168.10.10 --password='*******' --parallel=4 --throttle=300 --use-memory=200MB --ftwrl-wait-timeout=120 --kill-long-queries-timeout=60 --kill-long-query-type=all --no-server-version-check --backup --datadir=/jesong/mysql --target-dir=/jesong/xtrabackup/test --tables="^tolldb[.].*"
  • ファイルのインポート
echo "mydatabase.mytable" > /tmp/tables.txt xtrabackup --defaults-file=/etc/my.cnf --slave-info --port=3306 --user=xtrabackup --host=196.168.10.10 --password='*******' --parallel=4 --throttle=300 --use-memory=200MB --ftwrl-wait-timeout=120 --kill-long-queries-timeout=60 --kill-long-query-type=all --no-server-version-check --backup --datadir=/jesong/mysql --target-dir=/jesong/xtrabackup/test --tables-file=/tmp/tables.txt
  • アプリケーションログ
xtrabackup --prepare --export --parallel=4 --use-memory=200MB --target-dir=/jesong/xtrabackup/test

回復オプション 1: データ ディレクトリをクリアする必要があります。

 xtrabackup --copy-back --target-dir=/jesong/xtrabackup/test

回復オプション2: データファイルのコピー

バックアップからパーティションを復元するには、表領域内のテーブルを破棄する必要があります。

ALTER TABLE name_p4 DISCARD TABLESPACE;

次のステップは、バックアップからMySQLデータディレクトリにファイルをコピーすることです: .ibd

 cp /mnt/backup/2012-08-28_10-29-09/imdb/name#P#p4.ibd /var/lib/mysql/imdb/name_p4.ibd

最後のステップは、表領域をインポートすることです。

 ALTER TABLE name_p4 IMPORT TABLESPACE;

関連パラメータ

  • `--print-defaults` オプションは、プログラム引数のリストを印刷して終了します。
  • --no-defaults は、ログイン ファイルを除くすべてのオプション ファイルからのデフォルト オプションの読み取りを防止します。
  • --defaults-file=# 指定されたファイルからのみデフォルト オプションを読み取ります。
  • --defaults-extra-file=# グローバルファイルを読み取った後にこのファイルを読み取ります。
  • --defaults-group-suffix=# concat(group, suffix) で連結されたグループも読み取ります。
  • --login-path=# ログイン ファイルからこのパスを読み取ります。
  • --no-login-paths は、ログイン パスがログイン パス ファイルから読み取られるのを防ぎます。
  • -v, --version xtrabackup のバージョン情報を出力します。
  • --target-dir=name ターゲットディレクトリ。
  • --backup はバックアップを target-dir に保存します。
  • --prepare バックアップ MySQL サーバー上で開始するバックアップを準備します。
  • --export は、別のデータベースにインポートするための準備中にファイルを作成します。
  • `--apply-log-only` オプションは、準備フェーズ中にログを適用した後、回復プロセスを停止し、LSN の前進を継続しません。
  • `--print-param` オプションは、mysqld に必要なパラメータとその現在の値を出力します。
  • --use-memory=# buffer_pool_size の代わりにこの値を使用します。
  • --use-free-memory-pct=# このオプションは、準備フェーズ中にバッファ プールによって使用される空きメモリの割合を指定します (デフォルトは 0% - 無効)。
  • `--estimate-memory` は、バックアップ準備に必要なメモリ量の推定を有効/無効にします。推定はバックアップ中に実行されます。(デフォルトではオフ)
  • --throttle=# --backup と組み合わせて使用​​される、1 秒あたりの I/O 操作 (読み取り/書き込みペア) の数を制限します。
  • --log[=name]はMySQLとの互換性のために無視されるオプションです。
  • --log-copy-interval=# ログコピースレッド間のチェック間隔(ミリ秒単位)。デフォルトは1秒です。
  • --extra-lsndir=name (--backup と一緒に使用): このディレクトリに xtrabackup_checkpoints ファイルの追加コピーを保存します。
  • --incremental-lsn=name (--backup と一緒に使用): 指定された LSN 'high:low' よりも新しい .ibd ページのみをコピーします。
  • --incremental-basedir=name (--backup と一緒に使用): 指定されたディレクトリ内のバックアップよりも新しい .ibd ページのみをコピーします。
  • --redo-log-arch-dir=name REDO ログ アーカイブのターゲット ディレクトリを設定します (サーバーがまだ設定していない場合)。
  • --incremental-dir=name (--prepare と一緒に使用): 増分ディレクトリに .delta ファイルとログ ファイルを適用します。
  • --to-archived-lsn=# ログシーケンス番号が大きいアーカイブログを使用しないでください。
  • --tables=name テーブル名を正規表現でフィルタリングします。
  • --tables-file=name ファイル内のデータベース テーブル名の正確なリストでフィルターします。
  • --databases=name データベースリストでフィルタリングします。
  • --databases-file=name ファイル内のデータベースのリストでフィルタリングします。
  • `--tables-exclude=name` オプションは、テーブル名に正規表現を使用してフィルタリングし、一致する名前を除外します。
  • --databases-exclude=name は、名前に基づいてデータベースを除外し、一致する名前を除外します。
  • --create-ib-logfile **現在動作していません** '--prepare' の ib_logfile* ファイルを作成します。
  • --stream[=name] xbstream 形式を使用してすべてのバックアップ ファイルをストリームします。
  • `--compress[=name]` オプションは、指定された圧縮アルゴリズムを使用して単一のバックアップファイルを圧縮します。サポートされているアルゴリズムは 'lz4' と 'zstd' です。デフォルトのアルゴリズムは 'zstd' です。
  • --compress-threads=# 並列データ圧縮に使用するスレッド数。デフォルト値は1です。
  • --compress-chunk-size=# 圧縮スレッドの作業バッファのサイズ(バイト単位)。デフォルト値は64Kです。
  • --compress-zstd-level=# Zstandard 圧縮レベル (1 ~ 19)。デフォルト値は 1 です。
  • --encrypt=name 指定された暗号化アルゴリズムを使用して単一のバックアップ ファイルを暗号化します。
  • --encrypt-key=name 使用する暗号化キー。
  • --encrypt-key-file=name 暗号化キーを含むファイル。
  • --encrypt-threads=# 並列データ暗号化に使用するスレッド数。デフォルト値は1です。
  • --encrypt-chunk-size=# 暗号化スレッドの作業バッファのサイズ(バイト単位)。デフォルト値は64Kです。
  • --rebuild-threads=# コンパクトバックアップ内のインデックスを再構築するために、このスレッド数を使用します。--prepare および --rebuild-indexes オプションと併用する場合のみ有効です。
  • `--incremental-force-scan` オプションは、サーバー上でページ トラッキングが有効になっている場合でも、完全な増分スキャン バックアップを実行します。
  • `--close-files` はファイルが開いたままにならないようにします。自己責任で行ってください。
  • --core-file 致命的なシグナルが発生したときにコア ファイルに書き込みます。
  • --copy-back は、バックアップ ディレクトリ内のすべてのファイルを、以前に作成したバックアップの元の場所にコピーします。
  • `--move-back` オプションは、バックアップディレクトリにあるすべてのファイルを実際のデータディレクトリの場所に移動します。このオプションはバックアップファイルを削除するため、注意して使用してください。
  • `--galera-info` オプションは、バックアップ中のローカルノードのステータスが含まれる `xtrabackup_galera_info` ファイルを作成します。
  • --slave-info スレーブ サーバーにバックアップおよび複製するときに、マスター サーバーのバイナリ ログの場所と名前を出力します。
  • --page-tracking は増分バックアップにサーバーのページ追跡機能を使用します。
  • --no-lock は DDL およびテーブル データのロックを無効にします。
  • --lock-ddl は、バックアップの開始時にテーブル/インスタンスをロックして、すべての DDL 操作を防止します。
  • --lock-ddl-timeout=# LOCK TABLES FOR BACKUP が指定されたタイムアウト期間内に返されない場合、バックアップは中止されます。
  • `--lock-ddl-per-table` オプションは、xtrabackup がレプリケーション フェーズを開始する前に、バックアップが完了するまで各テーブルの DDL をロックします。
  • --backup-lock-timeout=# メタデータ ロックの取得を試行する際のタイムアウト (秒単位)。
  • --backup-lock-retry-count=# メタデータ ロックを取得するための試行回数。
  • `--dump-innodb-buffer-pool` オプションは、`innodb_buffer_pool_dump_now=ON` を設定して、MySQL サーバーに InnoDB バッファ プールをダンプするように指示します。
  • --dump-innodb-buffer-pool-timeout=# InnoDB バッファ プールのダンプが完了するまで xtrabackup が待機する秒数を指定します。
  • --dump-innodb-buffer-pool-pct=# ダンプするバッファプールの割合を指定します。
  • `--safe-slave-backup` オプションは、一時テーブルが開かれなくなるまで、バックアップ プロセスの開始時にスレーブ SQL スレッドを停止します。
  • --rsync は、rsync ユーティリティを使用してローカル ファイル転送を最適化します。
  • `--force-non-empty-directories` オプションは、`--copy-back` または `--move-back` を使用してファイルを空でないディレクトリに転送するときに指定します。
  • `--no-server-version-check` オプションを使用すると、サーバー バージョンが PXB でサポートされているバージョンよりも高い場合でも、バックアップを続行できます。
  • --no-version-check はバージョンチェックを無効にします。
  • --tables-compatibility-check エンジン互換性の警告を有効にします。
  • `--no-backup-locks` オプションは、バックアップフェーズ中に `FLUSH TABLES WITH READ LOCK` の代わりにバックアップ ロックが使用されるかどうかを制御します。
  • --rollback-prepared-trx は、準備された InnoDB トランザクションのロールバックを強制します。
  • `--decompress` オプションは、`--compress` オプションを使用して圧縮されたすべてのファイルを解凍します。
  • -u、--user=name は、サーバーに接続するときに使用する MySQL ユーザー名を指定します。
  • -H、--host=name は、TCP/IP を使用してデータベース サーバーに接続するときに使用するホストを指定します。
  • -P, --port=# TCP/IP を使用してデータベース サーバーに接続するときに使用するポートを指定します。
  • -p, --password[=name] データベースに接続するときに使用するパスワードを指定します。
  • -S、--socket=name は、UNIX ドメイン ソケットを使用してローカル データベース サーバーに接続するときに使用するソケットを指定します。
  • --incremental-history-name=name 増分バックアップの基礎として使用される、PERCONA_SCHEMA.xtrabackup_history 履歴に保存されるバックアップ シリーズの名前を指定します。
  • --incremental-history-uuid=name PERCONA_SCHEMA.xtrabackup_history テーブルに保存され、増分バックアップの基礎として使用される特定の履歴の UUID を指定します。
  • --decrypt=name は、以前に --encrypt オプションを使用して作成されたバックアップ内の .xbcrypt 拡張子を持つすべてのファイルを復号化します。
  • `--remove-original` オプションは、復号化と解凍後にすべての .qp、.zst、.lz4、および .xbcrypt ファイルを削除します。
  • `--ftwrl-wait-query-type=name` オプションは、innobackupex がグローバルロックを開始する前に完了を許可するクエリの種類を指定します。デフォルトは all です。
  • `--kill-long-query-type=name` オプションは、グローバルロックを解除するために終了する必要があるクエリの種類を指定します。デフォルトは "SELECT" です。
  • --history[=name] PERCONA_SCHEMA.xtrabackup_historyテーブルへのバックアップ履歴の追跡を有効にします。現在のバックアップレコードには、オプションの履歴シリーズ名を使用できます。
  • `--kill-long-queries-timeout=#` は、innobackupex が `FLUSH TABLES WITH READ LOCK` を開始してから、それをブロックしているクエリを終了するまでの待機時間を秒数で指定します。デフォルト値は 0 で、クエリは終了されません。
  • `--ftwrl-wait-timeout=#` innobackupex が FTWRL を実行する前に FTWRL をブロックするクエリを待機する秒数を指定します。タイムアウト後もそのようなクエリが保留中の場合、innobackupex は終了し、エラーを返します。デフォルト値は 0 で、FTWRL が直ちに開始されます。
  • `--ftwrl-wait-threshold=#` は、innobackupex によって検出された長時間実行クエリの実行時間しきい値を指定します。`--ftwrl-wait-timeout` が 0 以外の値の場合に使用されます。FTWRL は、このような長時間実行クエリが存在するまで起動しません。`--ftwrl-wait-timeout` が 0 の場合、このオプションは無効です。デフォルト値は 60 秒です。
  • --debug-sleep-before-unlock=# XtraBackup テスト スイート専用のデバッグ オプション。スリープ時間 (秒単位) を指定します。
  • --safe-slave-backup-timeout=# --safe-slave-backup は、Slave_open_temp_tables がゼロになるまで(秒数)待機します。デフォルトは300秒です。
  • --check-privileges は、クエリを実行する前にデータベース ユーザーの権限をチェックします。
  • --read-buffer-size[=#] データファイルの読み込みバッファのサイズを設定します。指定された値はページサイズに応じて調整されます。デフォルトは10MBです。
  • --server-public-key-path=name サーバーの公開 RSA キーのファイル パス (PEM 形式)。
  • `--get-server-public-key` はサーバーの公開鍵を取得します。
  • --ssl-mode=name SSL 接続モード。
  • --ssl-ca=name PEM 形式の CA ファイル。
  • --ssl-capath=CAディレクトリの名前。
  • --ssl-cert=name PEM 形式の X509 証明書。
  • 使用する SSL 暗号は `--ssl-cipher=name` で指定されます。
  • --ssl-key=name PEM 形式の X509 キー。
  • --ssl-crl=name 証明書失効リスト。
  • --ssl-crlpath=name 証明書失効リストへのパス。
  • `--tls-version=name` オプションは、使用する TLS バージョンを指定します。指定できる値には、TLSv1.2 と TLSv1.3 が含まれます。
  • --ssl-fips-mode=name SSL FIPS モード (OpenSSL のみ)、許可される値は OFF、ON、STRICT です。
  • `--tls-ciphersuites=name` オプションは、使用する TLS v1.3 暗号スイートを指定します。
  • `--ssl-session-data=name` オプションは、SSL セッションの再利用を可能にするためのセッション データ ファイルを指定するために使用されます。
  • `--ssl-session-data-continue-on-failed-reuse` が ON に設定されている場合、セッション データを再利用できない場合でも接続は成功します。
  • --tls-sni-servername=name サーバーに渡される SNI サーバーの名前。
  • --transition-key[=name]は、表領域キーを暗号化するために使用される遷移キーです。
  • --xtrabackup-plugin-dir=name は、xtrabackup プラグインのディレクトリです。
  • --plugin-load=name ロードするプラグインのリスト。
  • `--generate-new-master-key` オプションは、コピーバック操作を実行するときに新しいマスター キーを生成します。
  • `--generate-transition-key` オプションは遷移キーを生成し、キーリングに保存します。
  • --keyring-file-data[=name] キーリングファイルへのパス。
  • --component-keyring-config[=name] コンポーネント設定をロードするためのパス。--prepare、--move-back、および --copy-back と一緒に使用されます。
  • `--component-keyring-file-config[=name]` キーリングコンポーネント設定をロードするためのパス。`--prepare`、`--move-back`、および `--copy-back` オプションと共に使用されます。(非推奨です。代わりに `--component-keyring-config` を使用してください。)
  • --parallel=# 並列データファイル転送のスレッド数。デフォルト値は1です。
  • --fifo-streams=# 並列データファイルストリームに使用するFIFOファイルの数。このパラメータを1に設定するとFIFOが無効になり、データストリームはSTDOUTに送信されます。
  • `--fifo-dir=name` オプションは、名前付きパイプに書き込むディレクトリを指定します。省略した場合は、代わりに `--target-dir` が使用されます。
  • --fifo-timeout=# 相手側がFIFOストリームを読み取り用に開くまで待機する秒数。デフォルトは60秒です。
  • `--strict` オプションは、xtrabackup に渡された引数が無効な場合に失敗し、エラーを表示します。(デフォルトで有効。`--skip-strict` を使用して無効にします)
  • --rocksdb-checkpoint-max-age=# ROCKSDB チェックポイントの最大有効期間 (秒単位)。
  • --rocksdb-checkpoint-max-count=# ROCKSDB チェックポイントの最大数。
  • -h, --datadir=name データベースのルート ディレクトリへのパス。
  • -t, --tmpdir=name 一時ファイルへのパス。複数のパスをコロン (:) で区切って指定でき、指定されたパスが順番に使用されます。
  • --log[=name] MySQLオプション互換性設定で無視されるオプション。
  • --log-bin[=name] ログシーケンスの基本名。
  • `--log-bin-index=name` は、バイナリ ログ ファイルの名前を保存するファイルを指定します。
  • --innodb[=name] MySQLオプション互換性設定で無視されるオプション。
  • `--innodb-adaptive-hash-index` は InnoDB アダプティブハッシュインデックスを有効にします(デフォルトで有効)。無効にするには `--skip-innodb-adaptive-hash-index` を使用してください。(デフォルトで有効。無効にするには `--skip-innodb-adaptive-hash-index` を使用してください。)
  • --innodb-autoextend-increment=# データファイルを自動的に増分拡張します (メガバイト単位)。
  • --innodb-buffer-pool-size=# InnoDB がデータとインデックスをキャッシュするために使用するメモリ バッファー プールのサイズ。
  • `--innodb-checksums` は InnoDB チェックサム検証を有効にします(デフォルトで有効)。無効にするには `--skip-innodb-checksums` を使用します。(デフォルトで有効。無効にするには `--skip-innodb-checksums` を使用します。)
  • --innodb-data-file-path=name 各ファイルへのパスとサイズ。
  • --innodb-data-home-dir=name InnoDB テーブルスペースの共通部分。
  • `--innodb-io-capacity[=#]` は、サーバーが実行できる IOP 数を決定します。バックグラウンド I/O レートを調整します。
  • --innodb-read-io-threads=# InnoDB のバックグラウンド読み取り IO スレッドの数。
  • --innodb-write-io-threads=# InnoDB バックグラウンド書き込み IO スレッドの数。
  • `--innodb-file-per-table` オプションは、各 InnoDB テーブルをデータベース ディレクトリ内の .ibd ファイルに保存します。
  • `--innodb-flush-log-at-trx-commit[=#]` オプションは、0 (1 秒に 1 回書き込みとフラッシュ)、1 (トランザクションのコミットごとに書き込みとフラッシュ)、または 2 (コミット時に書き込み、1 秒に 1 回フラッシュ) に設定されています。
  • `--innodb-flush-method=name` は、データを更新する方法を指定します。
  • --innodb-force-recovery=# データベースのディスクイメージが破損した場合にデータを保存するのに役立ちます。
  • --innodb-log-buffer-size=# InnoDB がディスク上のログ ファイルにログを書き込むために使用するバッファのサイズ。
  • --innodb-log-file-size=# ログ グループ内の各ログ ファイルのサイズ。
  • `--innodb-log-files-in-group=#` ロググループ内のログファイルの数。InnoDBはこれらのファイルにループで書き込みます。推奨値は3です。
  • --innodb-log-group-home-dir=name InnoDB ログ ファイルへのパス。
  • --innodb-max-dirty-pages-pct=# バッファプールで許可されるダーティページの割合。
  • --innodb-open-files=# 開いている InnoDB ファイルの数を最大値に保ちます。
  • --innodb-use-native-aio プラットフォームがサポートしている場合は、ネイティブ AIO を使用します。
  • --innodb-page-size=# データベースの一般的なページ サイズ。
  • `--innodb-log-block-size=#` トランザクションログファイルのログブロックサイズ。既存のログファイルの変更はサポートされていません。リスクについてはご自身で評価してください。
  • `--innodb-buffer-pool-filename=name` は、InnoDB バッファ プールをダンプ/ロードするために使用されるファイル名を指定します。
  • `--debug-sync=name` はデバッグ同期ポイントを指定します。xtrabackup テストスイートでのみ使用されます。
  • `--innodb-checksum-algorithm=name` は、ページチェックに使用する InnoDB チェックサムアルゴリズムを指定します。[CRC32、STRICT_CRC32、INNODB、STRICT_INNODB、NONE、STRICT_NONE]
  • `--innodb-log-checksums` は、InnoDB の再実行ログ ブロックのチェックサムを計算して要求するかどうかを決定します。(デフォルトで有効になっています。無効にするには `--skip-innodb-log-checksums` を使用します。)
  • --innodb-undo-directory=name このパスは、UNDOテーブルスペースファイルを含むディレクトリです。絶対パスで指定できます。
  • `--innodb-directories=name` オプションは、テーブルスペースファイルを含むディレクトリのリストをスキャンするために使用されます。デフォルトでは、「innodb-data-home-dir;innodb-undo-directory;datadir」がスキャンされます。
  • --temp-tablespaces-dir=name 一時テーブルスペースファイルが保存されているディレクトリ。このパスは絶対パスで指定できます。
  • --innodb-undo-tablespaces=# 使用する UNDO テーブルスペースの数。
  • --innodb-redo-log-encrypt REDO テーブルスペースの暗号化を有効または無効にします。
  • --innodb-undo-log-encrypt UNDO テーブルスペースの暗号化を有効または無効にします。
  • --defaults-group=name 設定ファイル内のデフォルトのグループ (デフォルトは "mysqld")。
  • --open-files-limit=# setrlimit() を使用して保持するファイル記述子の最大数。
  • --server-id=# バックアップ対象のサーバーインスタンス。
  • --rocksdb-datadir=name RocksDB データディレクトリ。
  • --rocksdb-wal-dir=name RocksDB WAL ディレクトリ。
  • `--register-redo-log-consumer` オプションは、バックアップ開始時に REDO ログコンシューマを登録します。このオプションを有効にすると、サーバーによる REDO ログのクリアが防止されます。これにより、後続スレッドのレプリケーション中に PXB REDO が実行された場合、サーバー上の DML 操作がブロックされる可能性があります。

要約

Percona XtraBackup 8は、高可用性とデータ整合性が求められるMySQLデータベース環境に最適な強力なバックアップツールです。主な利点は、ゼロダウンタイムバックアップ、高パフォーマンス、増分バックアップ、柔軟なリカバリオプションなどです。使いこなすには多少の学習が必要ですが、オープンソースで無料、そして高い信頼性を誇るPercona XtraBackup 8は、大規模データベースのバックアップに最適です。適切な設定と適切なパラメータを使用することで、効率的なフルバックアップと増分バックアップを実現し、データのセキュリティとリカバリ性を確保できます。

著者紹介

51CTOのコミュニティエディターであるWu Shouyangは、8年間のDBA経験を持ち、MySQL、Redis、MongoDBなどのオープンソースデータベースの管理に精通しています。パフォーマンス最適化、バックアップとリカバリ、高可用性アーキテクチャ設計のスキルを有しています。トラブルシューティングと自動メンテナンスに優れ、システムの安定性と信頼性を確保しています。優れたチームワークとコミュニケーション能力を備え、企業に効率的で信頼性の高いデータベースソリューションを提供することに尽力しています。