码迷,mamicode.com
首页 > 数据库 > 详细

工作随笔-mysql

时间:2014-12-26 14:28:51      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

1:如何找回mysql的数据

用repair table能够找回绝大多数的数据,但还是有部分有错误的记录(这些记录都是在copy数据文件的时候正在读写的记录)在修复时被直接删除了。所以,我认识到我们这种备份的方式存在隐患。
 
查阅了mysql的文档,看到文档中记录了两种安全备份的方法:
 
1. mysqlhotcopy
这个命令会把数据库里的表都锁住,然后再拷贝文件,保证数据的完整性。命令的使用方法是:
mysqlhotcopy -u root -p<rootpass> db1 db2 ... dbn <output_dir>
如果需要备份全部数据库,可以加上--regexp=".*"参数。
这个命令会在拷贝文件之前会把表锁住,并把数据同步到数据文件中,以避免拷贝到不完整的数据文件,是最安全快捷的备份方法。
优点:速度快
缺点:只能用于MyISAM格式的数据库;必须拥有数据库访问权限
 
2. mysqldump
这个命令是用来把数据库倒成sql文件的,是非常古老的命令了。但因为一直以来都觉得这个命令产生的sql文件对blob数据的支持不是很好,而咱们的数据库大多都有blob,所以不怎么喜欢它。其实,现在才知道,只要加上一个简单的参数就可以解决blob的问题:
mysqldump -u root -p<rootpass> --hex-blob db1 > db1.sql
加上--hex-blob参数以后,blob数据会被类似BASE64的方法转换为文本来存储在sql文件中,就不会导致sql文件格式问题了。经过我测试,通过这种方法备份的blob数据再重新恢复回去能够完全正确。
如果要备份所有的数据库,可以加上--all-databases参数。
优点:可以用于任何格式的数据库
缺点:速度慢,输出结果文件较大;必须拥有数据库访问权限
 
对于没有使用InnoDB的数据库,用mysqlhotcopy是最好的方法;否则必须采用mysqldump。不论如何,直接拷贝文件的备份方法应该被废弃了。

工作随笔-mysql

标签:

原文地址:http://www.cnblogs.com/whb67/p/4186651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!