当前位置:嗨网首页>书籍在线阅读

13-数据恢复

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

对于用“start backup”进行备份的 Cluster,必须使用 ndb_restore 工具进行数据恢复。ndb_restore是MySQL Cluster带的管理工具,在 shell中执行,而不是 ndb_mgm工具中的一个命令。在前面的例子中,再增加一些测试数据,这样能更加真实地模拟实际环境;然后进行备份,备份ID为3。

备份前的数据为:

mysql> select count(1) from t1;

+----------+

| count(1) |

+----------+

| 65536 |

+----------+

1 row in set (0.00 sec)

进行数据恢复的操作步骤如下。

(1)在数据节点2(数据节点192.168.7.187)的shell命令行中执行如下命令:

[zzx2@zzx mysql-cluster]$ ndb_restore -b 3 -n 2 -c host=192.168.7.187:1186 -m -r/home/zzx2/mysql/data/BACKUP/BACKUP-3

Backup Id = 3

Nodeid = 2

backup path = /home/zzx2/mysql/data/BACKUP/BACKUP-3

Ndb version in backup files: Version 5.1.11

Connected to ndb!!

Successfully restored table test/def/t1

Successfully restored table event REPL$test/t1


Processing data in table: cluster/def/NDB$BLOB_2_3(3) fragment 0


Processing data in table: sys/def/NDB$EVENTS_0(1) fragment 0


Processing data in table: test/def/t1(5) fragment 0


Processing data in table: cluster/def/schema(2) fragment 0


Processing data in table: cluster/def/apply_status(4) fragment 0


Processing data in table: sys/def/SYSTAB_0(0) fragment 0

Restored 32556 tuples and 0 log entries

NDBT_ProgramExit: 0 – OK

其中,命令行中的各参数含义分别如表32-2所示。

表32-2 相关参数及其说明

figure_0610_0241.jpg 因为是第一个节点恢复,所以需要添加参数-m 来恢复表定义,这样在其他节点恢复时就不需要再加此参数,否则会报如下错误:

Table or index with given name already exists

Restore: Failed to restore table: cluster/def/NDB$BLOB_2_3 ... Exiting

(2)从节点4(SQL节点192.168.7.187)登录数据库,查看表t1中的数据:

mysql> select count(1) from t1;

+----------+

| count(1) |

+----------+

| 32556 |

+----------+

1 row in set (0.01 sec)

可以发现,由于只从一个数据节点恢复了数据,所以数据量只有备份时的一半左右。此时再从另外一个数据节点恢复数据。

(3)在节点3(数据节点192.168.7.55)的shell命令行中执行如下命令:

[zzx2@test55 BACKUP-1]$ ndb_restore -b 3 -n 3 -c host=192.168.7.187:1186 -r/home1/zzx2/mysql/data/BACKUP/BACKUP-3

Backup Id = 3

Nodeid = 3

backup path = /home1/zzx2/mysql/data/BACKUP/BACKUP-3

Ndb version in backup files: Version 5.1.11

Connected to ndb!!


Processing data in table: cluster/def/NDB$BLOB_2_3(3) fragment 1


Processing data in table: sys/def/NDB$EVENTS_0(1) fragment 1


Processing data in table: test/def/t1(5) fragment 1


Processing data in table: cluster/def/schema(2) fragment 1


Processing data in table: cluster/def/apply_status(4) fragment 1


Processing data in table: sys/def/SYSTAB_0(0) fragment 1

Restored 32980 tuples and 0 log entries

NDBT_ProgramExit: 0 – OK

(4)再次从节点4(SQL节点192.168.7.187)登录数据库,查看表t1中的数据:

mysql> select count(1) from t1;

+----------+

| count(1) |

+----------+

| 65536 |

+----------+

1 row in set (0.00 sec)

此时,数据已经完全恢复正常,恢复过程结束。