binlog使用配置和实现
Posted dabenxiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了binlog使用配置和实现相关的知识,希望对你有一定的参考价值。
本人是用window来配置的,首先先找到配置文件my.ini
log-bin=E:/soft/mysql-5.7.23-winx64/log/masami-bin binlog-format=MIXED
log_bin 是指定binlog的日志文件放到哪里。
binlog-format 有三种形式的,我知道MIXED 会把执行的语句也记录下来了
如下是ROW 和 MIXED 的对比(对于插入一条记录的对比)
ROW:

MIXED:

由图中可以看到MIXED形式的文件是符合我们观看的。所以我选择用MIXED。

然后重启myql
#停止命令 net stop mysql #启动命令 net start mysql #登陆到mysql操作 mysql -u root -p #查看mysql版本 status;
我的mysql版本如下

启动后能看到我们的logbin文件如下:

show variables like "%log_bin%";
show variables like "%binlog_format%";

如下的测试是这样的。我会新建一个库和新建一个表,然后插入三条数据,之后再删除一条数据
然后再插入两条数据,最后把库删除掉,我想通过binlog 来恢复为5条数据的操作.
首先确保日志是空的,我们先清理一下日志 reset master;
mysql> create database binlog; Query OK, 1 row affected (0.00 sec) mysql> use binlog; Database changed mysql> create table test( id int auto_increment not null primary key, val int, data varchar(20) ); Query OK, 0 rows affected (0.01 sec) mysql> insert into test(val, data) values (10, ‘wu‘); Query OK, 1 row affected (0.02 sec) mysql> insert into test(val, data) values (20, ‘yang‘); Query OK, 1 row affected (0.01 sec) mysql> insert into test(val, data) values (20, ‘ping‘); Query OK, 1 row affected (0.01 sec) mysql> delete from test where id = 3; Query OK, 2 rows affected (0.01 sec) mysql> insert into test(val, data) values (40, ‘ping123‘); Query OK, 1 row affected (0.01 sec) mysql> insert into test(val, data) values (50, ‘ping163‘); Query OK, 1 row affected (0.01 sec) mysql> drop table test; Query OK, 0 rows affected (0.01 sec) mysql> drop database binlog; Query OK, 0 rows affected (0.00 sec)
删除后如下,的却没有了binlog这个库了。

做完这些操作后,我们打开我们的binlog看下记录的是什么

mysqlbinlog masami-bin.000001 > 1.txt
然后打开1.txt浏览一下
找到删除记录的位置在哪


我的是在1305这个位置。binlog会记录这样的标志供给我们使用的
mysqlbinlog 一些参数如下 这里我使用 --start-position 和 stop-position来做操作 --database ##与"-d"作用相同,用于指定数据 -d ##与“database”作用相同,用于指定数据库 --start-datetime ##起始时间点 --stop-datetime ##结束时间点 --start-position ##起始位置 --stop-position ##结束位置 注意: 如果只是指定了--start-position 那他会从start-position到这个文件结束 如果只是指定了--stop-position 那他会从问价开始到stop-position
执行的命令如下
mysqlbinlog masami-bin.000001 --stop-position=1305 | mysql -uroot -proot
恢复了后显示:


mysqlbinlog masami-bin.000001 --start-position=1579 --stop-position=2257| mysql -uroot -proot

以上是关于binlog使用配置和实现的主要内容,如果未能解决你的问题,请参考以下文章