MySQL Cluster 备份与恢复

来源:互联网 发布:mac excel打印预览 编辑:程序博客网 时间:2024/06/15 06:23

在管理节点上进行备份

ndb_mgm> start backupndb_mgm> shutdownndb_mgm> exit

删掉SQL节点的数据

DROP DATABASE TEST_CLUSTER;

关闭MYSQLD服务器

[root@localhost bin]# service mysqld stopShutting down MySQL... SUCCESS!

重新顺序启动所有节点

[root@localhost mysql]#ndb_mgmd -f /etc/config.ini --reload[root@localhost data]#ndbd --initial

如果不带这个 –initial选项的话,恢复会失败。

[root@localhost bin]# service mysqld start//我用的7.0.8a版rpm 安装<b>service mysqld start</b>无法启动,用、、//[root@localhost ~]# mysqld_safe &

在NDBD节点上进行恢复。(每个节点都得执行一次,因为数据分散在两个节点上)

第一个节点:

[root@localhost BACKUP]# /usr/local/mysql/bin/ndb_restore -n3 -b4 -r -m --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-4/-r开关是记录集合。-m是元数据。就是表和库的SCHEMA。Nodeid = 3Backup Id = 4backup path = /usr/local/mysql/data/BACKUP/BACKUP-4/Ndb version in backup files: Version 5.1.21Connected to ndb!!Successfully restored table `test_cluster/def/lk4_test`...Successfully created index `PRIMARY` on `lk4_test`..._____________________________________________________Processing data in table: test_cluster/def/lk4_test54) fragment 1_____________________________________________________...Restored 37 tuples and 0 log entriesNDBT_ProgramExit: 0 - OK

第二个节点:

[root@localhost BACKUP-1]# /usr/local/mysql/bin/ndb_restore -n4 -b4  -r --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-4/Nodeid = 4Backup Id = 4backup path = /usr/local/mysql/data/BACKUP/BACKUP-4/Ndb version in backup files: Version 5.1.21Connected to ndb!!_____________________________________________________Processing data in table: sys/def/NDB$EVENTS_0(1) fragment 1_____________________________________________________Processing data in table: mysql/def/ndb_apply_status(4) fragment 1_____________________________________________________Processing data in table: mysql/def/NDB$BLOB_2_3(3) fragment 1_____________________________________________________Processing data in table: test/def/t11(5) fragment 1_____________________________________________________Processing data in table: sys/def/SYSTAB_0(0) fragment 1_____________________________________________________Processing data in table: mysql/def/ndb_schema(2) fragment 1Restored 2 tuples and 0 log entriesNDBT_ProgramExit: 0 - OK

这里完成

查看一下有没有数据,为了安全起见。

mysql> show databases;+--------------------+| Database          |+--------------------+| information_schema || mysql              || test              |+--------------------+3 rows in set (0.00 sec)

没有恢复的数据库?
MYSQL现在必须重新建立SCHEMA。

mysql> create database test_cluster;Query OK, 1 row affected (0.33 sec)mysql> use test_cluster;Database changedmysql> show tables;+------------------------------+| Tables_in_test_cluster      |+------------------------------+| lk4_test                    || ...                          |+------------------------------+27 rows in set (0.11 sec)mysql> select * from cs_comment;Empty set (0.00 sec)

不过MYSQL的backup 程序现在还只能进行完全备份。

[root@localhost BACKUP]# du -h76K    ./BACKUP-296K    ./BACKUP-6180K    ./BACKUP-4172K    ./BACKUP-376K    ./BACKUP-160K    ./BACKUP-5668K    .

在NDBD节点上进行恢复的时候有一个要注意的问题

因为NDBD节点以 –initial 方式启动的时候不会自动删除undo 和 data 文件(即保存到磁盘上的表数据),所以得手动在每个NDBD节点上进行RM操作:

[root@node239 ndb_6_fs]# rm -rf *.dat

然后开始备份。
在MASTER上备份的时候要加 -m 开关。
在SLAVE上要加-d 而且不要-m开关。

具体步骤如下:
MASTER :

[root@localhost ndb_3_fs]# /usr/local/mysql/bin/ndb_restore -n3 -b1 -r -m --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/Nodeid = 3Backup Id = 1backup path = /usr/local/mysql/data/BACKUP/BACKUP-1/Ndb version in backup files: Version 5.1.21Connected to ndb!!Creating logfile group: lg_1...doneCreating tablespace: ts_1...doneCreating datafile "data_1.dat"...doneCreating undofile "undo_1.dat"...doneSuccessfully restored table `test/def/t11`Successfully restored table event REPL$test/t11_____________________________________________________Processing data in table: sys/def/NDB$EVENTS_0(1) fragment 0_____________________________________________________Processing data in table: mysql/def/NDB$BLOB_2_3(3) fragment 0_____________________________________________________Processing data in table: sys/def/SYSTAB_0(0) fragment 0_____________________________________________________Processing data in table: mysql/def/ndb_schema(2) fragment 0_____________________________________________________Processing data in table: mysql/def/ndb_apply_status(4) fragment 0_____________________________________________________Processing data in table: test/def/t11(10) fragment 0Restored 26 tuples and 0 log entriesNDBT_ProgramExit: 0 - OK

其他的SLAVE上的操作:

[root@node239 ndb_6_fs]# /usr/local/mysql/bin/ndb_restore -n6 -b1 -r -d --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/                                                                                                               Nodeid = 6Backup Id = 1backup path = /usr/local/mysql/data/BACKUP/BACKUP-1/Ndb version in backup files: Version 5.1.21Connected to ndb!!_____________________________________________________Processing data in table: sys/def/NDB$EVENTS_0(1) fragment 3_____________________________________________________Processing data in table: mysql/def/NDB$BLOB_2_3(3) fragment 3_____________________________________________________Processing data in table: sys/def/SYSTAB_0(0) fragment 3_____________________________________________________Processing data in table: mysql/def/ndb_schema(2) fragment 3_____________________________________________________Processing data in table: mysql/def/ndb_apply_status(4) fragment 3_____________________________________________________Processing data in table: test/def/t11(10) fragment 3Restored 20 tuples and 0 log entriesNDBT_ProgramExit: 0 - OK

-d 开关的意思即:
-d, –no-restore-disk-objects
Dont restore disk objects (tablespace/logfilegroups etc)
既忽略表空间和分组空间

异常:

[root@localhost ~]# ndb_restore -n2 -b2 -r -m --backup_path=/var/lib/mysql-cluster/BACKUP/BACKUP-2 Nodeid = 2Backup Id = 2backup path = /var/lib/mysql-cluster/BACKUP/BACKUP-2Opening file '/var/lib/mysql-cluster/BACKUP/BACKUP-2/BACKUP-2.2.ctl'Backup version in files: ndb-6.3.11 ndb version: mysql-5.1.37 ndb-7.0.8Stop GCP of Backup: 0Configuration error: Error : Could not alloc node id at 192.168.8.120 port 1186: Connection done from wrong host ip 192.168.8.121. Failed to initialize consumersNDBT_ProgramExit: 1 - Failed解决:管理节点配置文件添加[mysqld]//空节点
0 0