参考文档 

 http://blog.chinaunix.net/uid-20639775-id-1617795.html


 http://xxtianxiaxing.iteye.com/blog/563063


 http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-single-user-mode.html


 http://www.mysqlab.net/knowledge/kb/detail/topic/backup/id/8309

 http://blog.csdn.net/mchdba/article/details/10544585 的第八小节里面进行扩展测试

8.1 sql节点上面录入数据:

 建立测试的数据库和表

CREATE DATABASE bg;

CREATE TABLE bgt1 (id INT,`name` VARCHAR(20),PRIMARY KEY(`id`))ENGINE=NDBCLUSTER;

INSERT INTO bgt1 VALUES(1,'zhang1'),(2,'zhang2'),(3,'zhang3'),(4,'zhang4');

 8.2 管理节点上面,开始备份

ndb_mgm> start backup


Waiting for completed, this may take several minutes


Node 4: Backup 1 started from node 1


Node 4: Backup 1 started from node 1 completed


StartGCP: 184725 StopGCP: 184772


#Records: 722078 #LogRecords: 0


Data: 287345616 bytes Log: 0 bytes


ndb_mgm>


 8.3 再次插入几条数据(为了保持和正式环境尽可能接近,在插入数据中间穿插了flush logs操作!)

INSERT INTO bgt1 VALUES(5,'zhang5'),(6,'zhang6'); 


flush logs;


INSERT INTO bgt1 VALUES(7,'zhang7'),(8,'zhang8');

     


8.4 删掉SQL节点的数据。

mysql> drop database bg;

Query OK, 2 rows affected (6.16 sec)

8.5 关闭MYSQLD服务器。

[root@banggo data]# /etc/rc.d/init.d/mysqld stop


Shutting down MySQL......120718 18:58:11 mysqld_safe mysqld from pid file /usr/local/mysql/data/banggo.local.pid ended


  [确定]


[1]+  Done                    /usr/local/mysql/bin/mysqld_safe


[root@banggo data]# 


[root@banggo data]# /etc/rc.d/init.d/mysqld stop


Shutting down MySQL....                                    [确定]


[root@banggo data]#

8.6 重新启动节点

ndb_mgm> shutdown


Node 4: Cluster shutdown initiated


Node 4: Node shutdown completed.


2 NDB Cluster node(s) have shutdown.


Disconnecting to allow management server to shutdown.


ndb_mgm> exit


[root@banggo mysql-cluster]# ndb_mgmd -f /usr/local/mysql/cluster-conf/config.ini --reload


MySQL Cluster Management Server mysql-5.5.19 ndb-7.2.4

8.7 重新启动数据节点

ndbd --initial

8.8 在数据节点上面进行恢复。

/home/mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndb_restore -e  -c 10.100.200.36 -n 4 -b 1 -m --backup_path=/var/lib/mysql-cluster/BACKUP/BACKUP-1/

其中backup_path 在默认的数据节点的根目录下面(找了很久,一开始以为在配置文件里面)

第一步骤 -m操作
   [root@test-db-20053 BACKUP-1]# /home/mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndb_restore -e  -c 10.100.200.36 -n 4 -b 1 -m --backup_path=/var/lib/mysql-cluster/BACKUP/BACKUP-1/


Nodeid = 4


Backup Id = 1


backup path = /var/lib/mysql-cluster/BACKUP/BACKUP-1/


Opening file '/var/lib/mysql-cluster/BACKUP/BACKUP-1/BACKUP-1.4.ctl'


File size 61160 bytes


Backup version in files: ndb-6.3.11 ndb version: mysql-5.5.19 ndb-7.2.4


Stop GCP of Backup: 184771


Connected to ndb!!


Successfully restored table `test/def/t2`


Successfully restored table event REPL$test/t2


Successfully restored table `bg/def/#sql-303d_2`


Successfully restored table event REPL$bg/#sql-303d_2


Successfully restored table `bg/def/#sql-51f0_3`


Successfully restored table event REPL$bg/#sql-51f0_3


Successfully restored table `test/def/t11`


Successfully restored table event REPL$test/t11


Successfully restored table `ndb/def/ndborder_goods`


Successfully restored table event REPL$ndb/ndborder_goods


Successfully restored table `bg/def/bgt1`


Successfully restored table event REPL$bg/bgt1


Successfully restored table `test/def/ndborder_info_history`


Successfully restored table event REPL$test/ndborder_info_history


Successfully restored table `mysql/def/ndb_schema`


Successfully restored table event REPL$mysql/ndb_schema


Successfully restored table `mysql/def/ndb_apply_status`


Successfully restored table event REPL$mysql/ndb_apply_status


Successfully restored table `ndb/def/ndbtest`


Successfully restored table event REPL$ndb/ndbtest


Successfully created index `PRIMARY` on `ndborder_info_history`


Successfully created index `uniq_order_os` on `ndborder_goods`


Successfully created index `is_update` on `ndborder_info_history`


Successfully created index `PRIMARY` on `#sql-51f0_3`


Successfully created index `sku_sn` on `ndborder_goods`


Successfully created index `PRIMARY` on `bgt1`


Successfully created index `exchange_from` on `ndborder_goods`


Successfully created index `addtime` on `ndborder_info_history`


Successfully created index `relating_return_sn` on `ndborder_info_history`


Successfully created index `PRIMARY` on `ndborder_goods`


Successfully created index `order_from` on `ndborder_info_history`


Successfully created index `order_out_sn` on `ndborder_info_history`


Successfully created index `PRIMARY` on `#sql-303d_2`


Successfully created index `order_status` on `ndborder_info_history`


Successfully created index `user_id` on `ndborder_info_history`


Successfully created index `uniq_order_os$unique` on `ndborder_goods`


Successfully created index `order_sn` on `ndborder_goods`

NDBT_ProgramExit: 0 - OK

[root@test-db-20053 BACKUP-1]# 


8.9 第二步骤 -r操作(如果有N个node,则需要执行N次)

[root@test-db-20053 BACKUP-1]# /home/mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndb_restore -e  -c 10.100.200.36 -n 4 -b 1 -r --backup_path=/var/lib/mysql-cluster/BACKUP/BACKUP-1/


Nodeid = 4


Backup Id = 1


backup path = /var/lib/mysql-cluster/BACKUP/BACKUP-1/


Opening file '/var/lib/mysql-cluster/BACKUP/BACKUP-1/BACKUP-1.4.ctl'


File size 61160 bytes


Backup version in files: ndb-6.3.11 ndb version: mysql-5.5.19 ndb-7.2.4


Stop GCP of Backup: 184771


Connected to ndb!!


Opening file '/var/lib/mysql-cluster/BACKUP/BACKUP-1/BACKUP-1-0.4.Data'


File size 287834112 bytes


_____________________________________________________


Processing data in table: test/def/t2(20) fragment 0


_____________________________________________________


Processing data in table: bg/def/#sql-303d_2(34) fragment 0


_____________________________________________________


Processing data in table: bg/def/#sql-51f0_3(32) fragment 0


_____________________________________________________


Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 0


_____________________________________________________


Processing data in table: test/def/t11(11) fragment 0


_____________________________________________________


Processing data in table: ndb/def/ndborder_goods(12) fragment 0


_____________________________________________________


Processing data in table: ndb/def/NDB$BLOB_12_13(13) fragment 0


_____________________________________________________


Processing data in table: mysql/def/ndb_index_stat_head(4) fragment 0


_____________________________________________________


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


_____________________________________________________


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


_____________________________________________________


Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 0


_____________________________________________________


Processing data in table: bg/def/bgt1(36) fragment 0


_____________________________________________________


Processing data in table: test/def/ndborder_info_history(21) fragment 0


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


Temporary error: 1220: REDO log files overloaded (increase FragmentLogFileSize)


在执行 -r操作的时候 报错

【ok】飞鸿大哥说是由于REDO log 文件太小了要加大,不影响恢复效果。参考了http://bugs.mysql.com/bug.php?id=19651 这上面的人也这么讲。

mysql> show databases;


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


| Database           |


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


| information_schema |


| mysql              |


| ndb                |


| ndbinfo            |


| performance_schema |


| test               |


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


6 rows in set (0.00 sec)


-- 没有库?看来要重建了

mysql> create database bg; -- 重建


Query OK, 1 row affected (0.06 sec)

mysql> use bg


Database changed


mysql> show tables; -- ok,看下表


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


| Tables_in_bg |


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


| bgt1         |


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


1 row in set (0.00 sec)

mysql> select * from bgt1; --数据恢复过来了


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


| id | name   |


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


|  3 | zhang3 |


|  1 | zhang1 |


|  2 | zhang2 |


|  4 | zhang4 |


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


4 rows in set (0.01 sec)

8.10 找一个mysqld节点,在管理节点进入单用户模式,然后启动sql节点,启动该mysqld节点,并登陆找到最大的epoch的值

ndb_mgm> ENTER SINGLE USER MODE 10;


Single user mode entered


Access is granted for API node 10 only.


ndb_mgm>

mysql> SELECT @LASTEPOCH:=MAX(epoch) FROM mysql.ndb_apply_status;


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


| @LASTEPOCH:=MAX(epoch) |


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


|        793593992183807 |


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


1 row in set (0.04 sec)

根据epoch的值,找到二进制日志的位置以及文件名

mysql> SELECT POSITION, @FIRSTFILE:=FILE


-> 


-> FROM mysql.ndb_binlog_index


-> 


-> WHERE epoch > @LASTEPOCH


-> 


-> ORDER BY epoch ASC


-> 


-> LIMIT 1;


Empty set (0.03 sec)

8.11 根据时间点恢复

找出恢复的时候需要用到的除第一个日志文件以外的其他的二进制日志文件


SELECT DISTINCT File 


FROM mysql.ndb_binlog_index


WHERE epoch > @LASTEPOCH 


AND File <> @FIRSTFILE 


ORDER BY File;

然后进行二进制日志的恢复:


mysqlbinlog -H --set-charset="utf8" -D --start-position=829 ./mysql-bin.000012 | grep -v "RELOAD DATABASE" |mysql bg


mysqlbinlog -H --set-charset="utf8" -D --stop-datetime="2012-07-18 13:30:00" ./mysql-bin.0000013 | grep -v "RELOAD DATABASE" |mysql  bg

恢复完成后,退出单用户模式,并启动另外一个sql节点


ndb_mgm> EXIT SINGLE USER MODE;


Exiting single user mode in progress.


Use ALL STATUS or SHOW to see when single user mode has been exited.


ndb_mgm>

进入mysql节点,查到数据已经恢复了。

MySQL Cluster-备份恢复初步测试的更多相关文章

  1. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  2. MySQL用户管理、常用sql语句、MySQL数据库备份恢复

    1.MySQL用户管理 给远程登陆用户授权:grant all on *.* to 'user1'@'127.0.0.1' identified by '123456' (这里的127.0.0.1是指 ...

  3. Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复

    一.mysql用户管理 grant all on *.* to 'user1'@‘127.0.0.1’ identified by 'mimA123'; 创建user1用户 使用user1登录 /us ...

  4. postgresql 和 mysql 数据库备份恢复以及时区问题

    概要 postgesql 12 备份/恢复脚本 时区设置 mysql 5.6 备份/恢复脚本 时区设置 概要 postgresql 和 mysql 是最常用的 2 种开源关系数据库, 很多项目也会优先 ...

  5. mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库

    简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...

  6. mysql数据库备份/恢复

    备份数据库(进入Mysql bin目录下/C:\Program Files\MySQL\MySQL Server 5.6\bin)本地安装mysql数据库 备份表结构及数据 mysqldump -hl ...

  7. mysql物理备份恢复 xtrabackup 初试

    听闻xtrabackup开源且强大 2018-03-06 11:54:41 在官网下载安装了最新的2.4.9版本 网上文章都用的innobackupex,但是最新版已经抛弃了,自己看看手册<Pe ...

  8. 【转】mysql增量备份恢复实战企业案例

    来源地址:http://seanlook.com/2014/12/05/mysql_incremental_backup_example/ 小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但 ...

  9. mysql的备份恢复等操作

    备份数据库 shell> mysqldump -h host -u root -p dbname >dbname_backup.sql 恢复数据库 shell> mysqladmin ...

随机推荐

  1. SMACSS:一个关于CSS的最佳实践-2.Base Rules

    回顾 在上一篇SMACSS:一个关于CSS的最佳实践-Overview中,讲到SMACSS将CSS Rules分为5个Categories: Base Layout Module State Them ...

  2. 文件上传下载样式 --- bootstrap

    在平时工作中,文件上传下载功能属于不可或缺的一部分.bootstrap前端样式框架也使用的比较多,现在根据bootstrap强大的样式模板,自定义一种文件下载的样式. 后续会使用spring MVC框 ...

  3. Sql Server 2008/2005 数据库还原出现 3154错误

    在Sql Server 2008/2005 数据库还原出现 3154错误 解决方法1:不要在数据库名字上点右键选择还原,而要是在根目录“数据库”三个字上点右键选择还原,然后再选择数据库,问题便可以解决 ...

  4. PHPExcel 导出

    <?php include '../init.inc.php'; include "../db.inc.php"; /* @func 引入类 */ include ROOT. ...

  5. JS图表组件 highcharts 简单的介绍

    把highcharts拿来做个简单的介绍,希望更多的朋友可以用到这个用来做图表的js插件. preparation Highcharts Highcharts是一个制作图表的纯Javascript类库 ...

  6. C# 课堂总结3-语句

    一.顺序语句 二.条件,分支语句 1.if语句 关键是能够熟练运用 if的嵌套.要考虑好所有的情况. 如果说 条件是两种+情况相互对应的,那么就可以只用 if 与else .但必须要想好 每个else ...

  7. JS字符串方法总结整理

    //javascript字符串方法总结   1.String.charAt(n)      //取得字符串中的第n个字符   2.String.charCodeAt(n)  //取得字符串中第n个字符 ...

  8. GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)

    在将图片以 PNG 格式保存至 Response.OutputStream 时,会碰到如下错误: GDI+ 中发生一般性错误. 原因: 在写 PNG 格式的图像时,指针需要在存储的位置来回移动.而 R ...

  9. 名叫Florida的女孩问题

    近读列纳德·蒙洛迪诺的<醉汉的脚步>,读到第六章,作者举了一个超级变态的例子来解释条件概率或者说是贝叶斯概率. 1.先来看一个简单点的问题:已知所有有2个孩子的家庭,其中一个家庭2个孩子都 ...

  10. delphi 编译生成ipa文件

    找IPA文件 开发模式ipa文件和发布模式ipa文件,路径不同. http://www.itnose.net/detail/6101808.html 一.开发模式Development 不需要真机,可 ...