前言
简单记录下使用binlog的使用和恢复数据库的操作
开启binlog
开启mysql binlog日志,进入mysql配置文件(vi /etc/my.cnf) 在mysqld区域内添加如下内容,
# 单个节点id
server-id = 1
# 位置一般和mysql库文件所在位置一样
log-bin= /var/lib/mysql/mysql-bin
# 表示此日志保存时间为10天
expire_logs_days = 10
重启mysqld,再次查看binlog日志开启状态为ON
binlog常用命令
show variables like '%log_bin%'; //查看binlog开启状态
show variables like '%datadir%'; //查看binlog存放日志文件目录
show master logs; //查看所有binlog日志文件列表
show binlog events in ‘mysql-bin.000003’; //查看binglog日志内容
Flush logs //刷新日志
恢复数据库
一般流程
备份数据库=> 刷新binlog => 操作失误 => 使用mysqlbinlog生成最近备份到失误前的命令的.sql文件 => 还原最新的备份数据库 => 执行.sql文件(执行备份后执行的正确命令)
1.1 linux下使用
# 使用pos生成
/usr/bin/mysqlbinlog --start-position=573 --stop-position=718 --database=hello /var/lib/mysql/mysql-bin.000006 | /usr/bin/mysql -uroot -p密码 -v hello
# 使用日期生成
/usr/bin/mysqlbinlog --start-datetime="2018-04-27 20:57:55" --stop-datetime="2018-04-27 20:58:18" --database=hello /var/lib/mysql/mysql-bin.000009 | /usr/bin/mysql -uroot -p密码 -v hello
1.2 windows下使用
# 使用pos生成
/usr/bin/mysqlbinlog --start-position=573 --stop-position=718 --database=hello /var/lib/mysql/mysql-bin.000006 > sql6.sql
2 恢复
source sql6.sql
总结:
1.恢复之前先用备份数据库恢复数据
2.使用mysqlbinlog命令时 不可以在window powershell下执行,可以在cmd下执行
3.最后使用binlog生成的sql文件恢复数据时,不可以在navicate里面执行文件,只能在cmd下执行
4.备份数据库和使用binlogs命令的时候,最好使用flush logs刷新binlog日志,可以简化日后对binlog日志的pos查找
5.mysqlbinlog可在mysql的bin目录下找到 windows: C:\Program Files\MySQL\MySQL Server 8.0\bin