您的位置:首页 > 博客中心 > 数据库 >

工作随笔-mysql

时间:2022-03-14 04:17

 

 

 

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。不论如何,直接拷贝文件的备份方法应该被废弃了。

热门排行

今日推荐

热门手游