MySQL的二进制日志
2020-05-26 本文已影响0人
愤愤的有痣青年
** mysql的二进制日志文件mysql-bin.log
是记录了数据库至开启之日时的所有对表进行修改的sql语句,其默认是关闭的,如果要打开,需要修改配置文件并重启mysql. **
** 开启日志 **
- 先查询当前是否已经开启了日志
登录mysql后,执行show variables like 'log_bin';
若为如下显示则表示未打开日志
- 先查询当前是否已经开启了日志
Variable_name | Value |
---|---|
log_bin | OFF |
- 修改配置文件
msyql的配置文件一般为/etc/mysql/mysql.conf.d/mysqld.cnf
,打开该文件后,找到如下文件并取消注释
- 修改配置文件
server-id = 1 # 服务器ID,此ID一般用于主备同步使用
log_bin = mysql-bin.log # 日志文件路径,有些配置文件默认是`/var/log/mysql/mysql-bin.log`,我测试时发现这样会报错,好像是权限的文件,所以我改成了这样
expire_logs_days = 10 # 日志文件的过期时间
max_binlog_size = 100M # 日志文件最大
#binlog_do_db = include_database_name # 需要备份的数据库,若要备份所有的数据库,保持注释即可.多个数据库需要写多个binlog_do_db语句
#binlog_ignore_db = include_database_name # 需要排除的数据库
- 重启数据库
service mysql restart
- 重启数据库
- 校验是否修改成功,执行
show variables like 'log_bin';
出现如下提示则为开启
| Variable_name | Value|
| :------: | :------: |
|log_bin|ON|
- 校验是否修改成功,执行
** 从日志中恢复数据 **
恢复数据是从某个节点开始恢复,所以一般使用每天定时备份的方式恢复数据文件.
- 查看日志文件路径
show variables like '%log_bin%';
image.png
其中log_bin_basename
字段对应的是日志文件的路径,然后执行show master status;
可以查看当前的日志文件名
-
将数据导出到sql
mysqlbinlog /var/lib/mysql/DB-Server-bin.000013 > test.sql;
-
按照时间节点恢复
mysqlbinlog --stop-date="你想要恢复的时间" 日志文件的目录\binary-log.000001 | mysql -u root –p