标签:
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