备份(start backup):
备份指的是在给定时间对数据库的快照。备份包含三个主要部分:
(1)BACKUP-backup_id.node_id.ctl
包含控制信息和元数据的控制文件。每个节点均会将相同的表定义(对于簇中的所有表)保存在自己的该文件中
(2)BACKUP-backup_id-0.node_id.data
包含表记录的数据文件,它是按片段保存的,也就是说,在备份过程中,不同的节点会保存不同的片段。每个节点保存的文件以指明了记
录所属表的标题开始。在记录清单后面有一个包含关于所有记录校验和的脚注。
(3)BACKUP-backup_id.node_id.log
包含已提交事务的记录的日志文件。在日志中,仅保存已在备份中保存的表上的事务。参与备份的节点将保存不同的记录,这是因为,不
同的节点容纳了不同的数据库片段。
[root@mysqlcluster01 ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm>
ndb_mgm> START BACKUP WAIT STARTED
ndb_mgm>
ndb_mgm> START BACKUP 4 WAIT COMPLETED SNAPSHOTSTART
ndb_mgm>
[root@mysqlcluster02 BACKUP]# pwd
/data/mysql-ndb/BACKUP
[root@mysqlcluster02 BACKUP]# ls -l
total 28
drwxr-x--- 2 root root 4096 Oct 11 18:17 BACKUP-1
drwxr-x--- 2 root root 4096 Oct 11 18:25 BACKUP-2
drwxr-x--- 2 root root 4096 Oct 11 18:24 BACKUP-4
drwxr-x--- 2 root root 4096 Oct 11 18:24 BACKUP-5
drwxr-x--- 2 root root 4096 Oct 11 18:25 BACKUP-6
drwxr-x--- 2 root root 4096 Oct 12 16:56 BACKUP-7
drwxr-x--- 2 root root 4096 Oct 12 16:57 BACKUP-8
[root@mysqlcluster02 BACKUP]#
[root@mysqlcluster03 BACKUP]# pwd
/data/mysql-ndb/BACKUP
[root@mysqlcluster03 BACKUP]# ls -l
total 28
drwxr-x--- 2 root root 4096 Oct 11 18:17 BACKUP-1
drwxr-x--- 2 root root 4096 Oct 11 18:25 BACKUP-2
drwxr-x--- 2 root root 4096 Oct 11 18:24 BACKUP-4
drwxr-x--- 2 root root 4096 Oct 11 18:24 BACKUP-5
drwxr-x--- 2 root root 4096 Oct 11 18:25 BACKUP-6
drwxr-x--- 2 root root 4096 Oct 12 16:56 BACKUP-7
drwxr-x--- 2 root root 4096 Oct 12 16:57 BACKUP-8
恢复(ndb_restore):
集群恢复程序是作为单独的命令行实用工具ndb_restore实现的,它将 读取由备份(由在管理节点的客户端上执行start
backup)创建的文件,并将保存的信息插
入数据库。必须为每组备份文件执行恢复程序,也就是说,执行次数与创建备份时运行的数据库节点数相同。(当初创建备份时,有
几个数据节点参与,就需要执行这样的命令几次,2个数据节点,就需要执 行2次,但第一次与第二次在参数上是不同的,第一次需要参数-m,第
二次,不用加此参数,此参数的作用是,创建元数据。
恢复前一定要把数据库名称建立好,否则恢复后无法看到数据库。
模拟NDB Node出现问题,重新初始化ndb,然后恢复。
mysqlcluster02:
[root@mysqlcluster02 bin]# /usr/local/mysql/bin/ndbd
--initial
2019-10-12 14:40:47 [ndbd] INFO -- Angel connected to
'192.168.120.206:1186'
2019-10-12 14:40:47 [ndbd] INFO -- Angel allocated nodeid:
2
mysqlcluster03:
[root@mysqlcluster03 bin# /usr/local/mysql/bin/ndbd
--initial
2019-10-12 14:40:53 [ndbd] INFO -- Angel connected to
'192.168.120.206:1186'
2019-10-12 14:40:53 [ndbd] INFO -- Angel allocated nodeid:
3
mysqlcluster02:
[root@mysqlcluster02 bin]#ndb_restore
--ndb-connectstring=192.168.120.206:1186 --nodeid=2
--backupid=4 --restore-meta --restore-data
--backup_path=/data/mysql-ndb/BACKUP/BACKUP-4
mysqlcluster03:
[root@mysqlcluster03 bin]#ndb_restore
--ndb-connectstring=192.168.120.206:1186 --nodeid=3
--backupid=4 --restore-data --backup_path=/data/mysql-ndb/BACKUP/BACKUP-4
恢复后,原先数据库中如果存在非ndb的表将会丢失。