一般MySQL数据库都是用mysqldump命令进行数据备份,其生成的文件实际上是创建对象和导入对象的sql语句。 在MySQL Cluster集群上,可以在管理节点上使用start backup命令实现数据库的在线备份,在还原时可以使用ndb_restore命令来进行数据库的还原。 使用MySQL Cluster的start backup,可以生成以下三种格式的备份文件:
上述文件中,backup-id是备份标识,node_id是数据节点的唯一编号。 备份命令在ndb_mgm交互模式下,可以执行如下命令进行备份。 START BACKUP [backup_id] [wait_option] [snapshot_option]
wait_option: WAIT {STARTED | COMPLETED} | NOWAIT snapshot_option: SNAPSHOTSTART | SNAPSHOTEND
命令后面带3个参数,在交互模式下都是可选的。其中backuop_id如果添加,需要保持唯一。wait_option是指在ndb_mgm交互模式下,执行命令后是否将命令控制权返回给用户。 wait_option: WAIT STARTED表示一旦备份开始,就把控制交给用户;NOTWAIT表示用户一执行命令,就把控制权返回给用户;WAIT COMPLETED表示需要等备份全部结束才把控制权交还给用户。默认的选项是WAIT COMPLETED。 snapshot_option: SNAPSHOTSTART表示备份文件的内容同开始备份时的数据库快照一致,SNAPSHOTEND表示备份文件的内容同备份结束时的数据库快照一致。SNAPSHOTEND是默认选项。 实际执行效果如下:
从上图我们可以得出默认的backup_id是从1开始递增的,备份文件会放在datadir的BACKUP目录下,每一次备份都会子目录BACKUP-backup_id。因此备份转移可以通过打包压缩这个目录然后转移到备份服务器。 还原测试单表还原首先我在数据库删除一个测试表,然后通过ndb_restore命令来对数据进行还原。
还原单个表,需要一次在每个数据节点运行以下命令。 shell> ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2 在执行单个节点还原后查询数据,可以发现会有部分数据可以查询到,说明还原的节点存储了该表的部分数据。 shell> ndb_restore -c 192.168.1.131 -n 1 -b 1 -m -r --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1 --include-tables=testdb.dept mysql> select count(*) from dept; +----------+ | count(*) | +----------+ | 25 | +----------+ 1 row in set (0.00 sec) 在后续节点上还原时就不需要指定-m选项来还原metadata,否则还原时会报Restore: Failed to restore table: testdb/def/dept ... Exiting错误。 整库还原首先进入单用户模式。 ndb_mgm> ENTER SINGLE USER MODE 9 ndb_mgm> EXIT SINGLE USER MODE
USER MODE 9表示只有一个还原程序通过nodeid为9的api节点连接。 假设集群中由于同一nodegroup的所有节点都宕机,且硬盘上的数据也无法恢复。则所有节点通过ndbmtd --initial启动后,存放在ndb引擎上的数据都会丢失。此时,就需要调用ndb_restore进行数据库的还原。 同时,为了防止其他用户的接入操作,在完全操作前可以将集群进入上面所述的单用户模式。 然后根据备份文件的位置,依次进行还原。其中只有第一个节点还原时要使用-m命令。 ndb_restore -c 192.168.1.131 -n 1 -b 1 -m -r --backup_path=/opt/backupfiles/BACKUP-1/1 ndb_restore -c 192.168.1.131 -n 2 -b 1 -r --backup_path=/opt/backupfiles/BACKUP-1/1 ndb_restore -c 192.168.1.131 -n 3 -b 1 -r --backup_path=/opt/backupfiles/BACKUP-1/1 ndb_restore -c 192.168.1.131 -n 4 -b 1 -r --backup_path=/opt/backupfiles/BACKUP-1/1 注意:所有数据节点的备份文件可以放到一个备份目录下,还原程序会根据还原命令自行寻找对应的备份文件。 (责任编辑:好模板) |