采用ndb_mgm管理客户端来备份,在管理节点执行ndb_mgm即可进入管理命令行,输入startbackup开始备份所有节点,如果后面还跟着对应数据节点的id就只备份对应的数据节点
恢复
ndb_mgm> start backup
Connected to Management Server at: localhost:1186
Waiting for completed, this may take several minutes
Node 2: Backup 1 started from node 1
ndb_mgm> Node 2: Backup 1 started from node 1 completed
StartGCP: 11438 StopGCP: 11441
#Records: 2059 #LogRecords: 0
Data: 51320 bytes Log: 0 bytes
查看生成的备份文件,在ndb节点上
我们来研究里面的文件
[
root@T3 BACKUP]# cd BACKUP-1/
[
root@T3 BACKUP-1]# ls
BACKUP-1-0.3.Data BACKUP-1.3.ctl BACKUP-1.3.log
BACKUP-backup_id.node_id.ctl
包含控制信息和元数据的控制文件。每个节点均会将相同的表定义(对于簇中的所有表)保存在自己的该文件中
BACKUP-backup_id-0.node_id.data
包含表记录的数据文件,它是按片段保存的,也就是说,在备份过程中,不同的节点会保存不同的片段。每个节点保存的文件以指明了记 录所属表的标题开始。在记录清单后面有一个包含关于所有记录校验和的脚注。
BACKUP-backup_id.node_id.log
包含已提交事务的记录的日志文件。在日志中,仅保存已在备份中保存的表上的事务。参与备份的节点将保存不同的记录,这是因为,不 同的节点容纳了不同的数据库片段。
在上面所列的内容中,backup_id指的是备份ID,node_id是 创建文件的节点的唯一ID。
演练测试
1、在管理节点上进行备份。
ndb_mgm> start backup
Waiting for completed, this may take several minutes
Node 2: Backup 1 started from 1 has been aborted. Error: 1350
Backup failed
* 3001: Could not start backup
* Backup failed: file already exists (use 'START BACKUP <backup id>'): Temporary error: Temporary Resource error
注意这里前面已经备份一次所以1已经存在
ndb_mgm> start backup 2
Waiting for completed, this may take several minutes
Node 2: Backup 2 started from node 1
Node 2: Backup 2 started from node 1 completed
StartGCP: 1644 StopGCP: 1647
#Records: 2061 #LogRecords: 0
Data: 51280 bytes Log: 0 bytes
可以注意到这里已经生成备份2
[
root@T3 BACKUP]# ls
BACKUP-1 BACKUP-2
2,sql节点删除数据库
mysql> DROP DATABASE test;
Query OK, 1 row affected (0.10 sec)
管理节点关闭数据库
ndb_mgm> shutdown
Node 2: Cluster shutdown initiated
Node 3: Cluster shutdown initiated
Node 3: Node shutdown completed.
Node 2: Node shutdown completed.
3 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.
3、关闭MYSQLD服务器。
[
root@T2 BACKUP]# service mysql stop
Shutting down MySQL.... SUCCESS!
[
root@T3 BACKUP-1]# service mysql stop
Shutting down MySQL.... SUCCESS!
4、重新顺序启动所有节点。
管理节点
[
root@T4 mysql-cluster]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --reload
MySQL Cluster Management Server mysql-5.6.29 ndb-7.4.11
数据节点
[
root@T2 BACKUP]# ndbd --initial
2016-06-08 17:41:13 [ndbd] INFO -- Angel connected to '172.16.57.57:1186'
2016-06-08 17:41:13 [ndbd] INFO -- Angel allocated nodeid: 2
[
root@T3 BACKUP]# ndbd --initial
2016-06-08 17:41:16 [ndbd] INFO -- Angel connected to '172.16.57.57:1186'
2016-06-08 17:41:16 [ndbd] INFO -- Angel allocated nodeid: 3
sql节点
[
root@T2 BACKUP]# service mysql start
Starting MySQL.. SUCCESS!
[
root@T3 BACKUP]# service mysql start
Starting MySQL.. SUCCESS!
4、在NDBD节点上进行恢复。(每个节点都得执行一次,因为数据分散在两个节点上)
第一个节点:
[
root@T3 BACKUP]# ndb_restore -n3 -b2 -r -m --backup_path=/var/mysql/data/BACKUP/BACKUP-2
Nodeid = 3
Backup Id = 2
backup path = /var/mysql/data/BACKUP/BACKUP-2
Opening file '/var/mysql/data/BACKUP/BACKUP-2/BACKUP-2.3.ctl'
File size 21368 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.6.29 ndb-7.4.11
Stop GCP of Backup: 1646
Connected to ndb!!
Successfully restored table `test/def/fafa`
Successfully restored table event REPL$test/fafa
Create foreign keys
Create foreign keys done
Opening file '/var/mysql/data/BACKUP/BACKUP-2/BACKUP-2-0.3.Data'
File size 25800 bytes
_____________________________________________________
Processing data in table: test/def/fafa(10) fragment 1
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 1
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(4) fragment 1
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(7) fragment 1
Opening file '/var/mysql/data/BACKUP/BACKUP-2/BACKUP-2.3.log'
File size 52 bytes
Restored 2 tuples and 0 log entries
NDBT_ProgramExit: 0 - OK
查看
[
root@T3 BACKUP]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.29-ndb-7.4.11-cluster-gpl MySQL Cluster Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select * from test.fafa;
ERROR 1146 (42S02): Table 'test.fafa' doesn't exist
说不存在
第二个节点:
-r开关是记录集合。
-m是元数据。就是表和库的SCHEMA。-n2是管理节点的config.ini文件。-d 既忽略表空间和分组空间
[
root@T2 BACKUP]# ndb_restore -n2 -b2 -r --backup_path=/var/mysql/data/BACKUP/BACKUP-2
Nodeid = 2
Backup Id = 2
backup path = /var/mysql/data/BACKUP/BACKUP-2
Opening file '/var/mysql/data/BACKUP/BACKUP-2/BACKUP-2.2.ctl'
File size 21368 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.6.29 ndb-7.4.11
Stop GCP of Backup: 1646
Connected to ndb!!
Opening file '/var/mysql/data/BACKUP/BACKUP-2/BACKUP-2-0.2.Data'
File size 26024 bytes
_____________________________________________________
Processing data in table: test/def/fafa(10) fragment 0
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 0
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(4) fragment 0
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(7) fragment 0
Opening file '/var/mysql/data/BACKUP/BACKUP-2/BACKUP-2.2.log'
File size 52 bytes
Restored 2 tuples and 0 log entries
NDBT_ProgramExit: 0 - OK
5、查看一下有没有数据,为了安全起见。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| BACKUP |
| mysql |
| ndb_2_fs |
| ndbinfo |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)
发现没有数据
MYSQL现在必须重新建立数据库,然后才有表和数据
mysql> create database test;
Query OK, 1 row affected (0.04 sec)
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| fafa |
+----------------+
1 row in set (0.00 sec)
mysql> select * from fafa;
+------+
| a |
+------+
| 3 |
| 2 |
| 1 |
| 4 |
+------+
4 rows in set (0.00 sec)