MySQL数据恢复-亲测有效版

MySQL数据恢复-亲测有效版

    • 1.日志恢复的前提:
      • 1.1.登录远程MySQL服务器:
      • 1.2.查看binlog是否开启:
    • 2.查看binlog存放日志文件目录:
    • 3.找到mysqlbinlog命令
    • 4.设置mysqlbinlog命令为全局可见
    • 5.使用mysqlbinlog解析binlog日志
    • 6.数据恢复
    • 7.mysqlbinlog其他组合命令

1.日志恢复的前提:

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

1.1.登录远程MySQL服务器:

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

1.2.查看binlog是否开启:

show variables like '%log_bin%';

MySQL数据恢复-亲测有效版_第1张图片
如果没有开启,那么也许真的无能为力了,只能现在开启,保证以后了。

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

show variables like '%datadir%';

MySQL数据恢复-亲测有效版_第2张图片
进入存放binlog的目录(先退出MySQL服务器):
MySQL数据恢复-亲测有效版_第3张图片

3.找到mysqlbinlog命令

whereis mysqlbinlog

博主用这个找不到
但是博主经过搜集资料后在/www/server/mysql/bin这个目录找到了
MySQL数据恢复-亲测有效版_第4张图片

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

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

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

MySQL数据恢复-亲测有效版_第5张图片
我是通过映射设置的,不确定复制这个命令到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

输出文件的部分内容:
MySQL数据恢复-亲测有效版_第6张图片

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日志

你可能感兴趣的:(Mysql,mysql,数据恢复,binlog)