Point-in-time recovery — that is,
recovery of data changes made since a given point in time
— is performed after restoring a full backup that returns
the server to its state when the backup was made. Performing
point-in-time recovery of MySQL Cluster tables with MySQL
Cluster and MySQL Cluster Replication can be accomplished using
a native NDB data backup (taken by
issuing CREATE BACKUP in the
ndb_mgm client) and restoring the
ndb_binlog_index table (from a dump made
using mysqldump).
To perform point-in-time recovery of MySQL Cluster, it is necessary to follow the steps shown here:
Back up all NDB databases in the cluster,
using the START BACKUP command in the
ndb_mgm client (see
Section 17.5.3, “Online Backup of MySQL Cluster”).
At some later point, prior to restoring the cluster, make a
backup of the mysql.ndb_binlog_index
table. It is probably simplest to use
mysqldump for this task. Also back up the
binary log files at this time.
This backup should be updated regularly — perhaps even hourly — depending on your needs.
(Catastrophic failure or error occurs.)
Locate the last known good backup.
Clear the data node filesystems (using
ndbd
--initial or, in MySQL Cluster
NDB 7.0 and later, ndbmtd
--initial).
MySQL Cluster Disk Data tablespace and log files are not
removed by --initial. You
must delete these manually.
Use DROP TABLE or
TRUNCATE TABLE with the
mysql.ndb_binlog_index table.
Execute ndb_restore, restoring all data.
You must include the
--restore_epoch option
when you run ndb_restore, so that the
ndb_apply_status table is populated
correctly. (See
Section 17.4.17, “ndb_restore — Restore a MySQL Cluster Backup”, for
more information.)
Restore the ndb_binlog_index table from
the output of mysqldump and restore the
binary log files from backup, if necessary.
Find the epoch applied most recently — that is, the
maximum epoch column value in the
ndb_apply_status table — as the
user variable @LATEST_EPOCH (emphasized):
SELECT @LAST_EPOCH:=MAX(epoch)
FROM mysql.ndb_apply_status;
Find the latest binary log file
(@FIRST_FILE) and position
(Position column value) within this file
that correspond to @LATEST_EPOCH in the
ndb_binlog_index table:
SELECT Position, @FIRST_FILE:=File FROM mysql.ndb_binlog_index WHERE epoch > @LAST_EPOCH ORDER BY epoch ASC LIMIT 1;
Using mysqlbinlog, replay the binary log events from the given file and position up to the point of the failure. (See Section 4.6.7, “mysqlbinlog — Utility for Processing Binary Log Files”.)
See also Section 6.5, “Point-in-Time (Incremental) Recovery Using the Binary Log”, for more information about the binary log, replication, and incremental recovery.

User Comments
Add your own comment.