200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > mysql 数据库数据恢复 库被删了怎么恢复数据库

mysql 数据库数据恢复 库被删了怎么恢复数据库

时间:2020-08-11 03:31:52

相关推荐

mysql 数据库数据恢复 库被删了怎么恢复数据库

mysql 数据库数据恢复方案:

前言一、恢复数据需要满足的条件二、开始恢复数据1、第一步2、第二步3、第三步4、第四步5、第五步6、 第六步结束语:

前言

该方案针对于 linux 环境下恢复数据,windows 下不太清楚能不能用,可以参考下。

mysql 数据库的恢复是通过 MySQL 本身的 binlog 日志来恢复丢失或删除的数据,binlog 日志文件中记录着数据库中所有的操作,CRUD/Rollback 操作都会记录在日志中。

该方式是通过通过 binlog 日志恢复,需要保证数据库开启了 binlog 日志。

一、恢复数据需要满足的条件

查询是否开启 binlog 日志的 sql 脚本:

如果没开启的话,这个方案恢复不了了的。

show variables like '%log_bin%';

查看binlog存放日志文件目录

show variables like '%datadir%';

my2sql 插件使用的限制条件:

使用回滚/闪回功能时,binlog格式必须为row,且binlog_row_image=full, DML统计以及大事务分析不受影响,只能回滚DML, 不能回滚DDL支持指定-tl时区来解释binlog中time/datetime字段的内容。开始时间-start-datetime与结束时间-stop-datetime也会使用此指定的时区, 但注意此开始与结束时间针对的是binlog event header中保存的unix timestamp。结果中的额外的datetime时间信息都是binlog event header中的unix timestamp此工具是伪装成从库拉取binlog,需要连接数据库的用户有SELECT, REPLICATION SLAVE, REPLICATION CLIENT权限

插件下载地址,下载免费:my2sql下载地址免费

二、开始恢复数据

1、第一步

在mysql 安装目录 bin 目录中放入插件 my2sql,然后给 my2sql 赋权限。

chmod 777 my2sql

2、第二步

创建一个空文件夹 “tmpdir”,然后给个 777 的权限。

mkdir tmpdir

3、第三步

binlong文件下载到本地,然后转换成sql格式找到对应的节点(pos点),节点名(pos点)是纯数字的时间戳,根据节点可以恢复指定时间段的数据。

binlog 文件格式转换,首先保证本地数据库与生产环境数据库版本要一致,然后输入以下命令(不要有换行符号):

mysqlbinlog --no-defaults --base64-output=decode-rows -v --start-datetime="-08-09 08:00:00" --stop-datetime="-08-17 10:35:00" C:\MySQL\MySQL8.0\Desktop\mysql-bin.000039 -r ./output1.sql

说明:

mysqlbinlog --no-defaults --base64-output=decode-rows -v --start-datetime="开始时间" --stop-datetime="结束时间" 'binlog文件的绝对路径' -r ./'转换后的文件名称'

转换后的sql文件中的节点(pos点):

可以根据binlog文件中的时间找到对应的节点,有了开始节点与结束节点,就可以恢复指定时间段的数据了。

4、第四步

在bin目录,输入以下命令(不要有换行):

./my2sql -user root -password 123456 -host 127.0.0.1 -port 3308 -mode file -local-binlog-file ./mysql-bin.000038 -work-type 2sql -start-file mysql-bin.000038 -start-pos 606463342 -stop-file mysql-bin.000038 -stop-pos 651675557 -output-dir ./tmpdir

说明:

./my2sql -user '账号' -password '密码' -host 'ip (bin 目录就是127)' -port '端口' -mode file -local-binlog-file ./'binlog 文件名' -work-type 2sql -start-file 'binlog 文件名' -start-pos '开始节点(节点数字在binlog日志中有)' -stop-file 'binlog 文件名' -stop-pos '结束节点(节点数字在binlog日志中有)' -output-dir ./tmpdir

执行成功后,会将 binlog 文件中对应节点的 sql 语句提取到文件中,我本次共生成了三个文件,分别为 biglong_trx.txt 、binlog_status.txt 、forward.38.sql

文件说明:

biglong_trx.txt:

该文件没什么内容,没去深入了解,没什么用,暂不关注。

binlog_status.txt:

该文件是说明 binlog 文件的DML统计信息,比如开始节点到结束节点中,都执行了哪些 sql ,什么时候执行的,执行了什么操作,影响了几行数据,什么执行结束的。

forward.38.sql:

该文件存的是从 binlog 中提取出来的 sql 语句,这个语句是可以在数据库中执行的sql文件。

5、第五步

将提取出的文件,在文本编辑器中打开,检查对应的 sql 是否正确且完整,要注意 delete 与 rollback语句

6、 第六步

sql 审查没问题了,然后在库里面将 sql 文件执行下就好了,推荐使用 navicat 15 工具,选运行 sql 文件来执行sql,到此,数据就算恢复完成了。

结束语:

涉及正式数据一定要慎重,请不要在生产环境执行任何修改生产环境的 sql 脚本,要定期备份,或者做主从复制的模式,主机只对应用程序开放连接,其余需要数据库的,都连接从库。

附一个 my2sql 工具详解的博客地址,有兴趣的可以了解一下 my2sql 工具。

地址:/liuhanran/article/details/107425016

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。