由于服务器异常宕机,导致Mysql数据库文件损坏,部分表数据丢失。
幸好MySQL8.0默认开启了binlog,可以用它恢复数据。
操作步骤1.复制数据库文件复制/var/lib/mysql目录下所有文件到其他目录备份,例如/tmp/mysql,避免binlog文件被误操作修改。
2.生成sql使用mysqlbinlog命令将所有的binlog文件导出成sql,可以合并到一个文件中:
#第一个binlog文件mysqlbinlog/tmp/mysql/binlog.--verbosedump.sql#按顺序导出其他binlog,注意是mysqlbinlog/tmp/mysql/binlog.--verbosedump.sql...#直到最后一个binlogmysqlbinlog/tmp/mysql/binlog.xxx--verbosedump.sql3.恢复数据
另外找一台Mysql数据库服务器,在上面创建需要恢复数据的同名数据库。
由于我们只有部分表数据丢失,因此我们仅在同名数据库中创建指定的空表结构。
然后执行下列命令:
mysql-f-uroot-pdump.sql
-f的作用是忽略Sql执行错误。
输入root密码后,等待命令执行完成,既可看到表中数据已经恢复了。
最后,将恢复的数据导入回原始库既可。
结论binlog还是很有用的,但在MySQL8.0之前的版本中,默认情况下是禁用binlog的,建议手工配置启用它。
预览时标签不可点收录于合集#个上一篇下一篇