MySQL Cluster在线备份和恢复
备份方式
一般MySQL数据库都是用mysqldump命令进行数据备份,其生成的文件实际上是创建对象和导入对象的sql语句。
在MySQL Cluster集群上,可以在管理节点上使用start backup命令实现数据库的在线备份,在还原时可以使用ndb_restore命令来进行数据库的还原。
使用MySQL Cluster的start backup,可以生成以下三种格式的备份文件:
BACKUP-backup-id.node_id.ctl
ctl控制文件存储表定义以及其他对象的元数据(metadata)。BACKUP-backup-id.node_id.data
data数据文件,保存的是表中的记录行,由于数据节点分片的原因,没有节点上文件的数据是不一致的。BACKUP-backup-id.node_id.log
log日志文件保存已提交的事物记录。
上述文件中,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
注意:所有数据节点的备份文件可以放到一个备份目录下,还原程序会根据还原命令自行寻找对应的备份文件。
版权说明:camash原创,转载请注明出处 http://www.cnblogs.com/shenfeng/
MySQL Cluster在线备份和恢复的更多相关文章
- [MySQL] innobackupex在线备份及恢复(全量和增量)
安装percona-xtrabackup 方法1: percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz(D:\share\src\linux-mysql) ...
- 从MySQL全库备份中恢复某个库和某张表【转】
从MySQL全库备份中恢复某个库和某张表 一.全库备份-A [root@mha2 backup]#mysqldump -uroot -p123456 --default-character-set=u ...
- mysql数据库的备份和恢复
Mysql数据库的备份和恢复 1.备份单个数据库 mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下: 语法:mysqldump –u <用户名> -p ...
- 一、MySQL中的索引 二、MySQL中的函数 三、MySQL数据库的备份和恢复 四、数据库设计和优化(重点)
一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放 ...
- Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁
Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...
- 我的MYSQL学习心得 备份和恢复(详细)
备份 逻辑备份方法 使用MYSQLDUMP命令备份 MYSQLDUMP是MYSQL提供的一个非常有用的数据库备份工具.mysqldump命令执行时将数据库备份成一个文本文件, 该文件中实际上包含了多个 ...
- MySQL优化之——备份和恢复
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46766919 备份 逻辑备份方法 使用MYSQLDUMP命令备份 MYSQLDUM ...
- MySQL中的备份和恢复
MySQL备份 MySQL中的逻辑备份是将数据库中的数据备份为一个文本文件,备份的文件可以被查看和编辑.在MySQL中,使用mysaldump工具来完成备份.有以下3种来调用mysqldump: 备份 ...
- MySQL二进制日志备份和恢复详解
原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...
随机推荐
- TCP协议基础
IP协议是Internet上使用的一个关键协议,它的全称是Internet Protocol,即Internet协议,通常简称IP协议.通过使用IP协议,使Internet·成为一个允许连接不同类型 ...
- NoSQL分类
NoSQL数据库分类: NoSQL DEFINITION:Next Generation Databases mostly addressing some of the points: beingno ...
- php unicode
在很多场合能看到unicode编码过的文字,如“\u6d3b\u52a8\u63a5\u53e3”,虽然程序会认识,但人眼无法阅读,很不方便,网络上很多人写了很多的转换函数,但是一个比一个臃肿,终于发 ...
- 精华 ionic入门之色彩、图标、边距和界面组件:列表
目录:色彩.图标和边距色彩图标内边距界面组件:列表列表:.list成员容器:.item.item: 嵌入文本.item : 嵌入图标.item : 嵌入头像.item : 嵌入缩略图.item : 嵌 ...
- Zooming MKMapView to fit annotation pins
http://stackoverflow.com/questions/4680649/zooming-mkmapview-to-fit-annotation-pins - (MKCoordinateR ...
- ByteArray
ByteArray:属性endian:String == Endian.BIG_ENDIAN/Endian.LITTLE_ENDIAN.length:uint ByteArray的字节数positio ...
- Quartz之CronExpression
一 Cron Expression 的格式 Quartz的cronExpression见官网文档说明: http://www.docjar.com/docs/api/org/quartz/CronEx ...
- 元素ID命名规范
因为本框架默认所有内容都位于一个Document中,所以为元素命名为ID的时候需要做到唯一性,如果确实不可避免的会出现有重读ID的现象,需要操作当前页片(页面片段,就是子页面)的时候,尽量用: $.C ...
- Maven 建立web项目 The import javax.servlet cannot be resolved
右击项目,选择Java Build Path->Libraries->Add External JARs,tomcat的路径lib文件夹下选中"servlet-api.jar&q ...
- Windows Azure上搭建SSTP VPN
一.服务器设置 首先,从0开始,你需要创建一个新的VM.我选择Windows Server 2012 R2,所有步骤和创建普通VM都一样,但最后在防火墙设置里一定要打开TCP 443端口: 创建完成后 ...