MySQL数据恢复-亲测有效版

1.日志恢复的前提:

本次实验是基于MySQL的binlog,因此我们需要检查MySQL是否开启了binlog选项,步骤如下:

1.1.登录远程MySQL服务器:

mysql -u 用户名 -h 主机地址 -P 端口 -p密码 

1.2.查看binlog是否开启:

show variables like '%log_bin%';

在这里插入图片描述
如果没有开启,那么也许真的无能为力了,只能现在开启,保证以后了。

2.查看binlog存放日志文件目录:

show variables like '%datadir%';

在这里插入图片描述
进入存放binlog的目录(先退出MySQL服务器):
在这里插入图片描述

3.找到mysqlbinlog命令

whereis mysqlbinlog

博主用这个找不到
但是博主经过搜集资料后在/www/server/mysql/bin这个目录找到了
在这里插入图片描述

4.设置mysqlbinlog命令为全局可见

如果你的mysqlbinlog在任何目录下都能用或者你不嫌使用mysqlbinlog存放目录/mysqlbinlog这条命令去解析binlog日志,此步可以忽略。

cd /usr/local/bin
ln -s /www/server/mysql/bin/mysqlbinlog mysqlbinlog

在这里插入图片描述
我是通过映射设置的,不确定复制这个命令到Linux默认搜寻路径是不是也有用,不过值得尝试。

5.使用mysqlbinlog解析binlog日志

#单库整库输出
 mysqlbinlog --no-defaults --database=数据库名 --start-datetime="2023-04-01 00:00:00" --stop-datetime="2023-04-13 00:00:00" /www/server/data/mysql-bin.000005    > 自定义输出文件名.txt

 #单库控制台输出
 mysqlbinlog --no-defaults --database=数据库名 --start-datetime="2023-04-01 00:00:00" --stop-datetime="2023-04-13 00:00:00" /www/server/data/mysql-bin.000005   |more

 #单库某表输出
 mysqlbinlog --no-defaults --database=数据库名 --start-datetime="2023-04-01 00:00:00" --stop-datetime="2023-04-13 00:00:00" /data/mysql/mysql-bin.000005   | grep 表名   > 自定义输出文件名.txt

输出文件的部分内容:
在这里插入图片描述

6.数据恢复

利用第四步输出的sql语句或者txt文本进行语句过滤,重新插入数据或更新数据。

7.mysqlbinlog其他组合命令

mysqlbinlog 命令的语法格式:
mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名

常用参数选项解释:

--start-position=875 起始pos点
--stop-position=954 结束pos点
--start-datetime="2023-04-01 00:00:00" 起始时间点
--stop-datetime="2023-04-13 00:00:00" 结束时间点
--database=xxx指定只恢复xxx数据库(一台主机上往往有多个数据库,只限本地log日志)

不常用选项:

-u --user=name 连接到远程主机的用户名
-p --password[=name] 连接到远程主机的密码
-h --host=name 从远程主机上获取binlog日志
--read-from-remote-server 从某个MySQL服务器上读取binlog日志
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fire king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值