参考文档 

 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. POJ 1679:The Unique MST(次小生成树&amp;&amp;Kruskal)

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19941   Accepted: 6999 D ...

  2. TRIZ系列-创新原理-21-高速通过原理

    高速通过原理,有的书也译为"降低有害作用的时间"原理,我比較倾向于叫高速通过原理,这个概念下,适用范围比較大些.高速通过原理的详细描写叙述例如以下:1)很高速的实施有害的或者有危急 ...

  3. #pragma的用法

    在所有的预处理指令中,#Pragma   指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和 C++语言完全 ...

  4. virtualbox中新版本Ubuntu安装软件增强包后重启无限登录界面的解决办法

    原来我虚拟机版本是4.2.10,装的Ubuntu3.3,因为版本过老使用出现了一些问题,于是换成14.04,安装成功,但是装增强包的时候,装完重启,无限登录界面,密码是对的. 看了网上的很多方法,什么 ...

  5. C++ 字符串分割,分割到vector中

    #include <string> #include <vector> using std::string; using std::vector; int splitStrin ...

  6. 【整理】Object-C中的属性(Property)的Setter:assign,copy,retain,weak,strong之间的区别和联系

    iOS编程过程中,经常看到一些属性前面有些修饰符,比如copy,retain等. 这些关键字,是Object-C语言中,对于Property的setter. Mac官网: The Objective- ...

  7. 网络编程——TCP连接

    TCP在双方传输数据前,发送方先请求建立连接,接收方同意建立连接后才能传输数据.(打电话:先拨号,等对方同意接听后,才能交流)...高可靠性 UDP不需要建立连接(发短信).不可靠,可能出现数据丢失等 ...

  8. java 无法割符日期字符串转yyyy-MM-dd hh:mm:ss

    1.需要转换字符串(20150210125942),转化后要达到的目的:2015-02-10 12:59:42 public static void main(String[] args) { Str ...

  9. 批量删除Kindle library 中的不想要的书籍

    这是一个书签形式的脚本  有全选  批量删除什么的   亚马逊本身的删除太麻烦了 网上转的  原帖在这里http://tieba.baidu.com/p/2249582757 改进版本http://t ...

  10. RFID介绍及电子标签成本预估

    What is RFID • RadioFrequencyIdentification, (無線射頻識別系統)• 通常是由感測器(Reader)和RFID標籤(Tag)所組成的系統 RFID分類 • ...