MariaDB Enterprise Backupは、ノンブロッキングバックアップ、完全バックアップ、増分バックアップ、部分バックアップ、ポイントインタイムリカバリなどの多くの機能を備えたMariaDBCorporationのバックアップソリューションです。
MariaDBバックアップとClusterControlのバックアップ管理機能の違いについてよく質問があります。これがこのブログの内容です。
MariaDB Backupは、Percona XtraBackupのフォークであり、MariaDBサーバーの物理バックアップを作成するためのツールです。これにより、完全バックアップ、増分バックアップ、部分バックアップなどを実行できます。バイナリログを使用して、ポイントインタイムリカバリを実行することもできます。ドキュメントによると、MariaDBバックアップの「エンタープライズ」バージョンは「バックアップ中のロック時間を短縮するDDLステートメント追跡」を提供します。
ClusterControlは、MariaDBのバックアップ方法としてMariaDBバックアップをサポートしています。グラフィカルユーザーインターフェイスを提供して、完全バックアップ、増分バックアップ、および部分バックアップをスケジュールし、バックアップファイルのリカバリを実行したり、ポイントインタイムリカバリを自動化したりします。さらに、ClusterControlは、暗号化、圧縮、クラウドストレージ(Azure、AWS、Google Cloud)へのアップロード、バックアップの自動検証などの機能を提供して、バックアップが回復可能であることを確認します。
MariaDB Enterprise Backupを使用して完全バックアップを実行するには、mariabackupコマンドユーティリティを使用できます。 mariabackupコマンドの後に4つのパラメーター入力があります。パラメータは:
- バックアップ -これは、mariabackupユーティリティを使用してデータベースをバックアップするために使用されます。
- 準備 -ポイントインタイムの一貫性のあるバックアップを作成するには、rawバックアップの実行後にバックアップを準備する必要があります。
- コピーバック -抽出されたバックアップをmysqlのデフォルトのデータディレクトリに復元するために使用されます。元のバックアップを削除せずに、バックアップをmysqlディレクトリにコピーします。
- 移動 -すべてのバックアップディレクトリを移動して、抽出したバックアップをmysqlデータディレクトリに復元するために使用されます。
バックアップと復元を行う場合は、mariabackupコマンドの後に必須パラメーターを渡すだけです。完全バックアップコマンドの場合、以下はMariaDBバックアップを使用したサンプルスクリプトです。
mariabackup --backup --target-dir=/backup/full/ --user=bkpuser --password=p4sswordb4ckup
バックアップファイルのターゲットの場所である--target-dir、バックアップの資格ユーザーに使用される--user、およびの--passwordなど、定義する必要のあるオプションがいくつかあります。クレデンシャルバックアップパスワード。
バックアップをポイントインタイムの一貫性を保つには、完全バックアップが終了した後に準備を実行する必要があります。準備を実行するまでデータファイルの整合性は保たれません。これは、バックアップを実行すると、バックアップ中のさまざまな時点でデータファイルがコピーされたためです。
バックアップの準備を実行するには:
mariabackup --prepare --target-dir=/backup/full
prepareを実行すると、バックアップを復元できるようになります。準備が成功すると、最後の行に次のようなメッセージが表示されます。
InnoDB: Shutdown completed; log sequence number 9553231
mariabackup --copy-back --target-dir=/backup/full
上記のスクリプトをシェルスクリプトコマンドに入れて実行可能権限を付与し、オペレーティングシステムスケジューラで構成できます。
ClusterControlを使用したバックアップと復元バックアップ管理は非常に使いやすいです。 ClusterControlは、論理バックアップと物理バックアップをサポートしています。論理バックアップの場合、ClusterControlはmysqldumpを使用し、物理バックアップの場合、mariabackupフルバックアップとインクリメンタルを使用します。
バックアップの実行方法には2つのオプションがあります。バックアップを直接作成することも、バックアップをスケジュールすることもできます。
暗号化、圧縮、並列コピースレッドなどのオプションを次のように有効にすることもできます。以下に示します:
バックアップの復元は、バックアップが作成されたのと同じくらい簡単です。復元する完全バックアップファイルを選択するだけです。
バックアップの復元方法には2つのオプションがあります。バックアップが作成されたノードにバックアップを復元することも、専用のスタンドアロンホストにバックアップを復元することもできます。
非常に大規模なデータベースの完全バックアップを作成するには、時間がかかり、リソースを大量に消費します。増分バックアップは、最後の完全バックアップが作成された後の変更のバックアップを実行するために使用されます。
増分バックアップが実行されている場合、MariaDB Enterprise Backupは以前の完全バックアップまたは増分バックアップを比較して、最後の変更を見つけます。
mariabackup --backup --incremental-basedir=/backup/full --target-dir=/backup/incr --user=bkpuser --password=p4sswordb4ackup
増分バックアップを実行する前に、完全バックアップが準備されていることを確認する必要があります。その後、最後の完全バックアップに適用して、増分バックアップを実行できます。
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/incr
増分バックアップが完全バックアップに適用されると、完全バックアップディレクトリにすべてのバックアップデータが準備されます。
すべての増分変更を含む準備済みの完全バックアップの復元は、次の方法で実行できます:
mariabackup --copy-back --target-dir=/backup/full
ClusterControlで増分バックアップを実行するには、mariabackup増分を選択できます。増分バックアップを実行する前に、完全に準備されたバックアップを用意する必要があります。
増分バックアップを実行すると、ClusterControlは最も近い完全バックアップを自動的に検出します。また、バックアップを復元するために、完全に準備されたバックアップと復元を選択できます。ノードまたはスタンドアロンホストのいずれかで、バックアップを復元する方法を確認するメッセージが表示されます。増分変更を含むバックアップを復元します。
部分バックアップは、バックアップするデータベースまたはテーブルを指定します。バックアップするデータベースとテーブルのリストを選択するか、バックアップから一部のデータベースとテーブルを除外することができます。オプションには、-databases、-databases-exclude、-tables、-tables-exclude
が含まれます。以下は、card_dataテーブルの部分バックアップを実行するためのサンプルスクリプトです。
mariabackup --backup --target-dir=/backup/partial --user=bkpuser --password=p4sswordb4ckup --tables=card_data
次のコマンドを実行して、バックアップのポイントインタイムの一貫性を保つために、完全な部分バックアップを準備する必要があります:
mariabackup --prepare --export --target-dir=/backup/partial
部分復元の実行は、完全バックアップおよび増分バックアップの復元とは大きく異なります。実行中のMariaDBサーバーでテーブルとデータベースを準備してから、データファイルをmysqlデータディレクトリに手動でコピーする必要があります。
たとえば、card_dataテーブル(パーティション化されていないテーブル)に対して部分的な復元を実行するとします。
- 最後に、テーブルスペースをインポートします:
ALTER TABLE carddb.card_data IMPORT TABLESPACE;
ALTER TABLE carddb.card_data DISCARD TABLESPACE;
cp /backup/partial/carddb/card_data.* /var/lib/mysql/carddb
chown mysql:mysql /var/lib/mysql/carddb/card_data.*
ClusterControlの部分バックアップは非常に簡単です。必要なのは、部分バックアップオプションを有効にすることだけです。以下に示すように、データベースとテーブルを含めるか除外するかを選択できます:
次の部分は、完全バックアップと増分バックアップに似ています。暗号化や圧縮などの設定を選択します。
部分バックアップの復元は、完全バックアップを復元する場合とまったく同じです。部分バックアップを選択するだけで、残りはClusterControlによって処理されます。
完全バックアップまたは増分バックアップを復元すると、バックアップが作成された時点からのバックアップが提供されますが、バックアップの作成後に取得されたデータは提供されません。これらの変更は、バイナリログに記録されます。 binlogを有効にして準備されたバックアップを実行すると、xtrabackup_binlog_infoというファイルが作成されます。このファイルには、バイナリログファイルと最後のシーケンス番号の位置が含まれています。
復元が実行された後のように、SQLへの変更を抽出することにより、ポイントインタイムリカバリを実行できます。 mysqlbinlogを実行して、ソースデータベースノードで特定の時刻を抽出し、ターゲット/復元されたデータベースノードでSQLを適用できます。
ClusterControlのポイントインタイムリカバリ(PITR)は、以下に示すように有効にできます。
どの時点まで回復するかを定義する必要があり、2つのオプションがサポートされています時間ベースまたは位置ベースです。時間ベースの場合、データが復元される正確な時間を入力する必要があります。ポジションベースの場合、binlogの名前とポジションを入力する必要があります。復元の残りの部分も同様です。
今のところ以上です。上で見たように、MariaDBバックアップは多くのオプションを備えた素晴らしいツールです。 ClusterControlは、バックアップ手順を実行するための使いやすいGUIを提供します。また、暗号化、圧縮、スケジューリング、保持管理、自動バックアップ検証などの多くの機能が追加されています。