一:开启数据库日志记录

(1)在查看数据库是否开启日志记录,默认是OFF,即关闭状态。(可在数据库中执行该查询语句,也可在服务器端执行)

show variables like 'log_bin';

MySQL开启redolog日志 mysql数据库开启日志_数据库

(2)开启数据库日志记录功能(在服务器端执行)

首先,查看my.cnf文件路径。

find / -name my.cnf

MySQL开启redolog日志 mysql数据库开启日志_数据库_02

然后,打开my.cnf配置文件,进行编辑。

vi /etc/my.cnf

MySQL开启redolog日志 mysql数据库开启日志_MySQL开启redolog日志_03

接下来,在配置文件中添加, log-bin=mysql-bin,如图。

MySQL开启redolog日志 mysql数据库开启日志_mysql安全开启日志_04

最后,重启mysql。

service mysqld restart

MySQL开启redolog日志 mysql数据库开启日志_日志记录_05

查看日志启动状态,启动日志成功。

MySQL开启redolog日志 mysql数据库开启日志_mysql_06

二:日志记录使用(记录日志+查看日志+恢复日志)

(1)查看日志记录文件地址

一般mysql日志记录会生成【mysql-bin.000001】格式的文件。我们输入命令:

find / -name mysql-bin.000001

MySQL开启redolog日志 mysql数据库开启日志_日志记录_07

可以看出,我们的日志文件路径在【/var/lib/mysql/】下。

(2)我们执行,刷新操作(sql语句)

flush logs;

再看日志记录,会发现多了一条日志版本。

MySQL开启redolog日志 mysql数据库开启日志_数据库_08

(3)让我们来看一下最后一条日志信息的相关信息。

show master status;

MySQL开启redolog日志 mysql数据库开启日志_mysql安全开启日志_09

位置信息为106。并且以后的增删改操作就记录在这个最新的bin-log日志里。

(4)让我们来清空日志信息。

reset master;

MySQL开启redolog日志 mysql数据库开启日志_MySQL开启redolog日志_10

MySQL开启redolog日志 mysql数据库开启日志_MySQL开启redolog日志_11

已经没有最新版本那个日志文件了。

(5)测试对数据库进行修改的记录。

我在数据库中删除了一条数据,查看日志状态,发现position字节已经增多,说明,日志记录有改动了。

MySQL开启redolog日志 mysql数据库开启日志_mysql_12

接下来,让我们看看都改动了哪些内容。

(注意:我们如果直接用vi命令打开日志文件会乱码,所以我们需要先找到mysqlbinlog文件路径,执行使用该命令才能打开)

MySQL开启redolog日志 mysql数据库开启日志_数据库_13

我的服务器上mysqlbinlog文件路径为【/usr/bin/mysqlbinlog】

然后执行

/usr/bin/mysqlbinlog --no-defaults mysql-bin.000002

打开日志文件如下:

MySQL开启redolog日志 mysql数据库开启日志_mysql安全开启日志_14

(6)通过日志记录进行数据恢复

找到需要恢复到日志记录某个版本,此处举例:mysql-bin.000002,例如:

/usr/bin/mysqlbinlog --no-defaults mysql-bin.000002|mysql -uroot -p

根据开始位置或者结束位置来恢复自己想恢复的参数,例如:

--stop-position = "100"    --start-position = "50"

/usr/bin/mysqlbinlog --no-defaults mysql-bin.000002 --stop-position="303"|mysql -uroot -p

根据开始日期时间或者结束位置来恢复自己想恢复的参数

--stop-date= "2016-03-02 12:00:00"    --start-date= "2016-03-02 11:55:00"

/usr/bin/mysqlbinlog --no-defaults mysql-bin.000002 --stop-date= "2016-03-02 12:00:00"|mysql -uroot -p