不小心删除了公司数据库,是什么样一种体验?(3)
然而是人总难免会犯错误,说不定哪天大脑短路了,误操作把数据库给删除了,怎么办?下面,就 MySQL 数据库误删除后的恢复方案进行说明。 工作场景 MySQL 数据库每晚 12:00 自动完全备份。 某天早上上班,9 点的时候,一同事犯晕 drop 了一个数据库! 需要紧急恢复!可利用备份的数据文件以及增量的 binlog 文件进行数据恢复。 数据恢复思路 利用全备的 SQL 文件中记录的 CHANGE MASTER 语句,binlog 文件及其位置点信息,找出 binlog 文件中增量的那部分。 用 MySQLbinlog 命令将上述的 binlog 文件导出为 SQL 文件,并剔除其中的 drop 语句。 通过全备文件和增量 binlog 文件的导出 SQL 文件,就可以恢复到完整的数据。 实例说明 首先,要确保 MySQL 开启了 binlog 日志功能。在 /etc/my.cnf 文件里的 [mysqld] 区块添加,如下图,然后重启 MySQL服务。 1.在 ops 库下创建一张表 customers 2.现在进行全备份 参数说明:
3.再次插入数据 4.此时误操作,删除了 test 数据库 此时,全备之后到误操作时刻之间,用户写入的数据在 binlog 中,需要恢复出来! 5.查看全备之后新增的 binlog 文件 这是全备时刻的 binlog 文件位置,即 mysql-bin.000002 的 106 行,因此在该文件之前的 binlog文件中的数据都已经包含在这个全备的 SQL 文件中了。 6.移动 binlog 文件,并导出为 SQL 文件 剔除其中的 drop 语句,查看 MySQL 的数据存放目录,由下面可知是在 /var/lib/mysql 下,将 binlog 文件导出 SQL文件,并 vim 编辑它删除其中的 drop 语句。 注意:在恢复全备数据之前必须将该 binlog 文件移出,否则恢复过程中,会继续写入语句到 binlog,最终导致增量恢复数据部分变得比较混乱。 7.恢复数据 查看数据库,看看 ops 库在不在。 此时恢复了全备时刻的数据。接着,使用 002bin.sql 文件恢复全备时刻到删除数据库之间,新增的数据。 再次查看数据库,发现全备份到删除数据库之间的那部分数据也恢复了!! 以上就是 MySQL 数据库增量数据恢复的实例过程! 最后,总结几点:
(编辑:ASP站长网) |