linux-mysql5.7-binlog实现日志回滚

linux-mysql5.7版本的并不需要my.cnf就可以启动,但是配置binlog,必须需要my.cnf
参考博客:https://blog.csdn.net/wwwdc1012/article/details/88373440
1、在support-files和/etc/目录下面都添加my.cnf文件,内容如下:
log_bin知识log存放的地方,和前缀名称
回滚类型:
linux-mysql5.7-binlog实现日志回滚_第1张图片

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin=row
binlog_format=Row
server_id=1
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/usr/local/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
sql_mode=NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

2、创建文件
在相应位置创建文件
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
3、重启mysqld服务
service mysqld restart
4、查看binlog是否开启
mysql -uroot -p
show variables like ‘log_bin%’;
linux-mysql5.7-binlog实现日志回滚_第2张图片
linux-mysql5.7-binlog实现日志回滚_第3张图片
查看最新的binlog日志信息:show master logs;show binary logs;show master status;
linux-mysql5.7-binlog实现日志回滚_第4张图片

5、测试是否成功

创建数据表
linux-mysql5.7-binlog实现日志回滚_第5张图片

linux-mysql5.7-binlog实现日志回滚_第6张图片
误删数据表
在这里插入图片描述
查看所有binlog日志文件:show master logs;
linux-mysql5.7-binlog实现日志回滚_第7张图片

查看最后一个binlog日志编号及其最后一个操作时间position结束点位置:show master status;
linux-mysql5.7-binlog实现日志回滚_第8张图片
查看position点:show binlog events in ‘row.000004’;
linux-mysql5.7-binlog实现日志回滚_第9张图片
然后刷新:flush logs;//产生新的日志,防止找不到对应的执行sql的节点

如果想查看日志内容:
mysqlbinlog -v --start-position=123 --stop-position=461 /usr/local/mysql/data/row.000004>/tmp/cd.txt //-v作用是为了编译一下
vi /tmp/cd.txt内容如下:
linux-mysql5.7-binlog实现日志回滚_第10张图片
最后一步恢复相应节点的数据:

//test是数据库名称
mysqlbinlog 
     --start-position=287 
     --stop-position=463 
     --database=test 
     /usr/local/mysql/data/row.000004 | mysql -uroot -proot -v test

//mysqlbinlog命令的参数解析
mysqlbinlog -v --base64-output=decode-rows /usr/local/mysql/data/row.000003 \
    --start-datetime="2019-03-01 00:00:00"  \开始恢复的开始时间
    --stop-datetime="2019-03-10 00:00:00"   \结束节点的时间(不怎么用)
    --start-position="5000"    \恢复的position开始起点(常用)
    --stop-position="20000"  \恢复的position结束起点

如果出现:
mysqlbinlog: unknown variable 'default-character-set=utf8’

则删除/etc/my.cnf中default-character-set=utf8;如需指定utf8字符集,需要配置

[mysqld]
character-set-server = utf8mb4

你可能感兴趣的:(数据库)