MySQL通过binlog日志恢复数据
一、查看下自己的MySQL是否开启了binlog日志
# 是否启用binlog日志 OFF:关闭 ON:开启
show variables like 'log_bin';
二、开启binlog日志
在linxu服务器中找到my.cnf :
mysql --help | grep 'Default options' -A 1
执行结果
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
可以看到mysql优先加载/etc/my.cnf
中的配置。
所以需要在/etc/my.cnf
中mysqld节添加开启binlog的配置,如下有两种方式:
#第一种方式:
#开启binlog日志
log_bin=ON
#binlog日志的基本文件名
log_bin_basename=/var/lib/mysql/mysql-bin
#binlog文件的索引文件,管理所有binlog文件
log_bin_index=/var/lib/mysql/mysql-bin.index
#配置serverid
server-id=1 #第二种方式:
#此一行等同于上面log_bin三行
log-bin=/var/lib/mysql/mysql-bin
#配置serverid
server-id=1
修改完配置后,重启mysql。
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl status mysqld.service
在navicat中或者在服务器中进入mysql 执行SHOW VARIABLES LIKE 'log_bin';
Value 值为 ON即可。
SHOW VARIABLES LIKE 'log_bin'
PS:mysql启动停止命令
一、 启动
1、使用 service 启动:service mysql start
2、使用 mysqld 脚本启动:/etc/inint.d/mysql start
3、使用 safe_mysqld 启动:safe_mysql& 二、停止
1、使用 service 启动:service mysql stop
2、使用 mysqld 脚本启动:/etc/inint.d/mysql stop
3、mysqladmin shutdown 三、重启
1、使用 service 启动:service mysql restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysql restart
二、使用binlog日志恢复数据
首先在21:21分 我的fo_service库的admin表中有这么几条数据
随后我向admin表插入了三条数据
但是呢 我在21:24分误删除了这三条数据, 我想恢复怎么办呢
(有的小伙伴会说直接把上面的insert语句拿下来不就完了吗,歪,那我们还用binlog干嘛)
恢复过程:
1、查看当前服务器的MySQL使用的binlog文件及大小(这个是会有多个的,我这里演示所以只有一个)
show binary logs;
2、查看binlog的目录
show global variables like '%log_bin%';
3、导出sql文件
执行完下面这个命令,输出的sql文件在当前你所在的目录位置。
(注意自己的mysql-bin.000001文件所在目录,你的也可能是mysql-bin.000005哦,复制的时候注意改开始和结束时间,改路径 /var/lib/mysql/mysql-bin.000001)
两种都可以
mysqlbinlog --no-defaults --database=fo_service --start-datetime="2022-04-25 21:21:00" --stop-datetime="2022-04-25 21:23:00" -v /var/lib/mysql/mysql-bin.000001 > nobase64.sql mysqlbinlog --no-defaults --database=fo_service --start-datetime="2022-04-25 21:21:00" --stop-datetime="2022-04-25 21:23:00" -v --base64-output=decode-rows /var/lib/mysql/mysql-bin.000001 > base64.sql
4、执行命令,还原数据
输出文件之后 将文件下载到本地 (我放在D盘的根目录下)
将服务器上的库复制到本地一份
使用黑窗口(cmd)的root账号登录mysql后
执行source命令
查看本地的admin表的数据,可以看见删除的数据恢复了(包括数据的主键ID都是恢复的,大可放心)。
最后将本地的数据迁移到服务器上的数据库中即可。
文章参考 https://blog.csdn.net/jolly10/article/details/80077366
最新文章
- SQL Server 常用内置函数(built-in)持续整理
- .htaccess语法之RewriteCond与RewriteRule指令格式详细解释
- windows下mysqlbinlog二进制恢复
- python 中*args 和 **kwargs
- ORM艰辛路之EF
- BSD学习(BSD系统的历史和目标)
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) 几道简单题的题解
- nginx 常用的 URL 重写方法
- WCF的配置文件中的要素
- 【POJ3208】 (DP)
- linux核心之进程管理
- linux 下配置 MAVEN
- RomUtil【Android判断手机ROM,用于判断手机机型】
- mysql强制索引和禁止某个索引
- “放到桌面”的Servlet实现
- spark-shell的Scala的一些方法详解
- git入门 创建版本库, 版本管理 分支 标签
- vi中换行、翻页和查找功能
- notepad去掉空行
- Linux系统下/tmp目录文件重启后自动删除,不重启自动删除10天前的/TMP的文件(转)
热门文章
- Educational Codeforces Round 119 (Div. 2), (C) BA-String硬着头皮做, 能做出来的
- 谈谈.NET Core下如何利用 AsyncLocal 实现共享变量
- 2021.08.06 P4392 Sound静音问题(ST表)
- 数据结构 - AVL 树
- Linux(ubuntu)二进制安装mysql8.0
- vscode 开发项目, Prettier ESLint的配置全攻略(基础篇)
- XCTF练习题---MISC---pure-color
- npm install xxxx --legacy-peer-deps命令是什么?
- Linux服务器安全加固10条建议
- 日期和时间API - 读《Java 8实战》