有人做过mysql cluster的backup和restore吗?
我试了试,backup很简单,restore就是不成啊。做过的兄弟给点儿建议
[mysql@node6 data]$ ndb_restore -c 192.168.1.100 -n 6 -m -b 2 -r BACKUP/BACKUP-2/
Nodeid = 6
Backup Id = 2
backup path = BACKUP/BACKUP-2/
Ndb version in backup files: Version 5.1.11
Connected to ndb!!
Create table test/def/t1 failed: 0: No error
Restore: Failed to restore table: test/def/t1 ... Exiting
NDBT_ProgramExit: 1 - Failed
谢谢!
qlks 回复于:2006-11-08 16:58:02
ndb_mgm
show
贴出结果来
qlks 回复于:2006-11-08 17:00:02
我记得应该现在backup_id为1上恢复,加上参数-m
backup_id为2不用加参数-m
raid_fifa 回复于:2006-11-10 14:02:30
thank qlks!
失败的原因好像找到了:也许是5.0/5.1的refman写错了,也许是bug。
参考下面的两个URL:
http://bugs.mysql.com/bug.php?id=19663
http://lists.mysql.com/cluster/4096
raid_fifa 回复于:2006-11-14 10:54:48
I think I have find the whole steps for MySQL cluster backup&restore:
1. #ndb_mgm -e "start backup";
2. restart your cluster; pls note ndbd start with --initial;
3. DONT ENTER SINGLE USER MODE:
A. execute "ndb_restore -c mgm_node:1186 -n node_id -m -b backup_id -r /BACKUP_PATH " on ONE node;
B. execute "ndb_restore -c mgm_node:1186 -n node_id -b backup_id -r /BACKUP_PATH " on the other nodes; PLS NOTE: no '-m' parameter!!!!
4. enjoy! :)
在此声明一下:
上面的过程只是在我的测试过程试验出来的,试验环境非常简单,无法模拟真实的事务处理应用,所以数据备份和恢复的准确性和完整性无法得到保证。
这也是MySQL官方严格要求在SINGLE USER MODE下操作的原因。(但是实际上我在SINGLE USER MODE下从来都没有成功过,也许是bug,也许是文档步骤有疏漏)
下面是MySQL公司doc team给我回复的一封email内容:
It might be *possible* to run ndb_restore while not in single user
mode. It might even be successful. However, we don't recommend it -
consider what could happen if you allowed other SQL nodes to perform
transactions on the cluster during the restoration process.
This is why we say "must be running in single user mode". IMO, it
would be irresponsible for us not to do so.
[ 本帖最后由 raid_fifa 于 2006-11-15 16:22 编辑 ]
Jeff_z 回复于:2006-11-27 14:39:15
你好,raid_fifa,我最近也在 尝试配置mysql-cluster,遇到两个问题,能否请教一下?
第一,在已经配置好的一个集群里再增加一个ndb节点,怎么样能使以前存在的簇内的数据保留?因为我更改config.ini文件配置后,重新启动簇,原有engine为ndbcluster的表全部被自动删除了。
第二,能否将你关于簇的backup和restore具体操作告诉我下,我不太会
谢谢。。。
yejr 回复于:2006-11-27 17:19:48
1. 看 http://imysql.cn/?q=node/161
2. 问 raid_fifa , 呵呵
Jeff_z 回复于:2006-11-27 17:34:49
版主你好,谢谢你的建议,你给的网址我去看过了,好象在手册里有那部分内容。
但现在我问题的关键在于如何在添加了节点后,以最快且最有效的方法使我以前的数据仍然存在,最后同步到每一个节点中。暂且我还不太清楚簇的backup和restore是否能解决,因为我不太会做这。目前我尝试了一种方法就是在未关闭簇时,Alter一个节点的engine,是它不为ndbcluster,然后再添加节点并开启簇,这样我以前的数据就会存在,我不知道这样的做法对于大容量的数据的效率是多高,目前我还没有尝试过。但我想对于大容量数据我这样做的话,用于同步的时间可能会很大。所以我在寻求一个更为效率的办法。
请指点一下,好吗?
Tks!
raid_fifa 回复于:2006-11-27 17:59:22
1、MySQL cluster不支持在线添加data node,所以扩展data node之前一定要先backup数据;然后重启cluster(别忘了ndbd --initial),恢复数据;
2、至于备份和恢复的方法,有很多种。首先是MySQL官方手册里面的方法,也就是我所试验的那些步骤,很简单,但是我的测试环境有限,无法保证其在真实生产环境里面的可行性;第二种是使用mysqldump,第三种是使用"select * into outfile '/backup/backupfile.txt' from database.table"和"load data infile '/backup/backupfile.txt' into database.table"这样的SQL语句;我没试过你说的方法,既然你试验了,应该也可以;
3、我没有很大的数据,所以没去评估效率问题。
Jeff_z 回复于:2006-11-27 21:52:32
非常感谢~~~
可不可以把你测试的备份和恢复实例具体贴上来参考一下?
我不知道哪种方法效率会更高点,正在测试寻求个最为妥善的方法。
qlks 回复于:2006-11-28 09:35:09
引用:原帖由 Jeff_z 于 2006-11-27 17:34 发表
Alter一个节点的engine,是它不为ndbcluster,然后再添加节点并开启簇,这样我以前的数据就会存在
绝对不推荐
数据量小也许不觉得什么
但cluster本来就用在数据量比较大的环境下
如果数据库比较大,那么转换时间就很长了,不如备份后添加来的简单快速
在线添加的data node的话mysql会在以后版本中添加此功能,手册上写的很清楚
raid_fifa 回复于:2006-11-28 11:02:59
引用:原帖由 Jeff_z 于 2006-11-27 21:52 发表
非常感谢~~~
可不可以把你测试的备份和恢复实例具体贴上来参考一下?
我不知道哪种方法效率会更高点,正在测试寻求个最为妥善的方法。
我测试的备份和恢复实例?没什么特别的啊,就是按照5.1 refman doc一步一步来啊;
mysqldump不会用吗?select ....和load data ...不会用吗?
那你只能去查资料了,呵呵!
btw,select...和load data ...应该是速度最快的;麻烦的是你得一个表一个表的弄。
Jeff_z 回复于:2006-11-28 22:52:46
别的备份我会,只是想尝试下新的簇的备份有什么不同
|