このページは機械翻訳したものです。
ポイントインタイムリカバリ (つまり、特定の時点よりあとに行われたデータ変更のリカバリ) は、サーバーをバックアップが行われた時点の状態に戻す完全バックアップのリストア後に実行されます。 「NDB Cluster」および「NDB Cluster」レプリケーションを使用して「NDB Cluster」テーブルの point-in-time リカバリを実行するには、ネイティブの NDB データバックアップ (ndb_mgm クライアントで CREATE BACKUP を発行して取得) を使用し、ndb_binlog_index テーブルを (mysqldump を使用して作成したダンプからリストアします。
NDB Cluster のポイントインタイムリカバリを実行するには、次に示す手順に従う必要があります:
ndb_mgm クライアントで
START BACKUPコマンドを使用して、クラスタ内のすべてのNDBデータベースをバックアップします (セクション23.5.8「NDB Cluster のオンラインバックアップ」を参照してください)。-
その後の時点でクラスタをリストアする前に、
mysql.ndb_binlog_indexテーブルのバックアップを作成します。 このタスクに mysqldump を使用することが、おそらくもっとも簡単です。 このときに、バイナリログファイルもバックアップします。このバックアップは、必要に応じて定期的 (等間隔で 1 時間ごとなど) に更新してください。
(重大な障害またはエラーが発生します。)
最新の既知の良好なバックアップを探します。
-
データノードのファイルシステムをクリアします (ndbd
--initialまたは ndbmtd--initialを使用します)。注記NDB 8.0.21 以降、「ディスクデータ」テーブルスペースおよびログファイルは
--initialによって削除されます。 以前は、これらを手動で削除する必要がありました。 mysql.ndb_binlog_indexテーブルでDROP TABLEまたはTRUNCATE TABLEを使用します。ndb_restore を実行して、すべてのデータをリストアします。
ndb_apply_statusテーブルが正しく移入されるように、ndb_restore の実行時に--restore-epochオプションを含める必要があります。 (詳細については、セクション23.4.23「ndb_restore — NDB Cluster バックアップの復元」を参照してください。)必要に応じて、mysqldump の出力から
ndb_binlog_indexテーブルをリストアしたり、バックアップからバイナリログファイルをリストアしたりします。-
最後に適用されたエポック (すなわち、
ndb_apply_statusテーブルのepochカラムの最大値) をユーザー変数@LATEST_EPOCHとして検索します (重要)。SELECT @LATEST_EPOCH:=MAX(epoch) FROM mysql.ndb_apply_status; -
ndb_binlog_indexテーブルの@LATEST_EPOCHに対応する、最新のバイナリログファイル (@FIRST_FILE) と位置 (Positionカラム値) をこのファイル内で検索します。SELECT Position, @FIRST_FILE:=File FROM mysql.ndb_binlog_index WHERE epoch > @LATEST_EPOCH ORDER BY epoch ASC LIMIT 1; mysqlbinlog を使用して、障害が発生した時点まで、特定のファイルと位置からバイナリログイベントを再現します。 (セクション4.6.8「mysqlbinlog — バイナリログファイルを処理するためのユーティリティー」を参照してください。)
バイナリログ、レプリケーション、および増分リカバリに関する詳細は、セクション7.5「Point-in-Time (増分) リカバリ」も参照してください。