宝塔mysql二进制恢复_宝塔数据库恢复方法:Mysql 通过binlog日志恢

日志,即 log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个日志文件,从节点从中同步数据,也可以通过日志来恢复数据
1,登录mysql查看日志的状态,输入showlike ‘%%’;查看为off关闭状态
2,开启mysql 日志,进入mysql配置文件(vi /etc/f) 在区域内添加如下内容,①-id = 1(单个节点id) ②log-bin= /var/lib/mysql/mysql-bin(位置一般和mysql库文件所在位置一样) ③ = 10(表示此日志保存时间为10天),重启,再次查看日志开启状态为ON
3,日志包括两类文件;第一个是二进制索引文件(后缀名为.index),第二个为日志文件(后缀名为.00000*),记录数据库所有的DDL和DML(除了查询语句)语句事件
4,查看所有日志文件列表:showlogs;
5,查看最后一个日志的编号名称及其最后一个操作事件pos结束点的值:show;
【宝塔mysql二进制恢复_宝塔数据库恢复方法:Mysql 通过binlog日志恢】6,Flush logs 刷新日志,此刻开始产生一个新编号的文件,例如:
每当服务重启时,会自动执行刷新日志命令,备份数据时加-F选项也会刷新日志
7,清空所有日志命令:reset ;
8,查看文件内容,使用查看工具来查看(cat/vi/more都是无法打开的)
9,上面的方法读取内容较多不易观察,以下命令更为方便查看命令:showin ‘mysql-bin.’;
10,指定查询,从pos点406开始查询,如下:
11,指定查询,从pos点154开始查询,中间跳过2行,查询4条数据,如图:
12,利用日志恢复mysql数据,例如,现有一张数据表如图:此表位于hello数据库
现在将此数据库备份到本地(模拟每周的备份情况),备份命令如下
可以在数据备份之前或者之后执行flush logs重新生成一个日志用来记录备份之后的所有增删改操作(重新生成日志更好找pos点),由于业务需求,现在对表进行插入
数据,修改数据,如图新增了两条数据id 为5和6,修改后数据如图,
6的年龄修改成了30
13,由于操作失误,误删除了数据库,所有数据都不见了,此时可以通过日志恢复数据,由于之前有做了数据库备份,所以可以先将备份的数据导入进去,剩下缺少的就是备份之后操作所产生的内容(备份之后执行了插入内容以及更改内容),先恢复备份的数据:创建库hello并选择库(use hello),通过命令 /root/hello.sql将数据库内容导入,然后执行
14,恢复的内容如下所示:

宝塔mysql二进制恢复_宝塔数据库恢复方法:Mysql 通过binlog日志恢

文章插图
15,上面恢复的数据只是截止到备份时间的数据,剩下缺少的数据可以通过日志来恢复,由于我们备份数据库之前重新创建了mysql-bin.日志,所以备份后的所有操作都保存在这个日志中,可以先备份下这个日志文件,cp mysql-bin. /root/ 接着执行flush logs 刷新日志,重新创建了一个日志7
16,重新创建一个日志7的目的:接下来所有操作的数据都会写入到日志7中,日志6中不会在写入任何数据(方便根据日志6的内容恢复数据,因为日志6的数据就是备份之后到删库之前的所有操作日志,重建日志7不会有过多的数据影响恢复)
17,登录mysql 查看日志6: showin ‘mysql-bin.’;结果如下:
查看日志发现,在备份数据后首先执行的是插入数据操作(在一个事务内),此时可以通过指定pos结束点恢复(部分恢复),如图,pos结束点位435(事务已提交表示结束),执行命令如下, /usr/bin/ –stop-=435 –=hello /var/lib/mysql/mysql-bin. | /usr/bin/mysql -uroot -p密码 -v hello (其中整个命令的含义是通过读取日志内容并通过管道传给mysql命令,-v表示执行此mysql命令)执行后查询表发现如下: