mysql binlog 恢复 表_mysql 通过mysqlbinlog日志恢复数据

【mysql bin 没有mysqlbinlog.exe 去网上下载】

一、首先一定要开启binlog

在mysql的 my.ini文件

在[mysqld]区块设置/添加 log-bin=mysql-bin 确认是打开状态(值 mysql-bin 是日志的基本名或前缀名);

二、通过mysql的变量配置表,查看二进制日志是否已开启show variables like "log_%"

41de75eb086a

然后再mysql的data查看 是否有日志

命令查看:show master logs (查看所有)

show master status  (查看最后一条)

41de75eb086a

物理查看:

mysql-bin.000xxx 是日志命名(默认的) ,可以通过 my.ini log-bin=mysql-bin (改成其他别名)

41de75eb086a

注意:凡是是创建表、创建数据库、插入、更新、删除都会记录在log里。查询不会去记录。

(可以简单做个实验,insert into 一条记录,Position的记录值行数变大)

41de75eb086a

查看mysql日志文件

普通的编辑器文本是看不到日志里的内容,都是二进制,需要用到 mysqlbinlog 去进行查看,

退出mysql;格式 :  mysqlbinlog [日志文件]  --其他参数(--start 等等)

mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005【日志文件名+路径】

41de75eb086a

通过指定的开始位置跟结束位置

(比如取日志里的某一段, insert into test3 values(132) )mysqlbinlog mysql.bin00005 --start-position=175 --stop-position=267  -r test.sql

输出 初始值位置175,结束位置267的所有binlog日志

通过指定时间段 (不精确,因为一个时间段可能有多个sql语句)指定开始时间到结束时间

mysqlbinlog mysql.bin00005 --start-datetime='2019-06-22 11:46:02' --stop-datetime='2019-06-30 11:46:02' -r test.sql

从文件开头到指定结束时间

mysqlbinlog mysql.bin00005 --stop-datetime='2019-06-22 11:46:02' -r test.sql

指定开始时间到结束

mysqlbinlog mysql.bin00005 --start-datetime='2019-06-22' -r  test.sql

将日志转成mysql格式(其他格式 sql/txt····)

如果二进制文件过大,在命令行是看不到太多的内容,需要导出数据查看格式 :  mysqlbinlog [日志文件] > [导出在哪个目录]

mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005 > test.sql

然后再 source 运行test.sql

直接日志恢复数据格式 : mysqlbinlog [日志文件] | [数据库链接]

mysqbinlog E:\phpStudy\PHPTutorial\MySQL\data\mysql-bin.000005 | mysql -u root - p

41de75eb086a

其他命令刷新日志   flush logs;

清空日志   reset master;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值