1.查看binlog是否开启
在MySQL5.7版本,binlog默认是不开启的。
mysql> show variables like "%log_bin%";
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_basename | |
| log_bin_index | |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+-------+
6 rows in set (0.01 sec)
2.开启binlog
在服务器的/etc/my.cnf
文件下修改,添加以下内容
server-id=1
log-bin=/var/lib/mysql/mysql-bin
然后重启数据库service mysqld restart
3.binlog文件构成
mysql-bin-000001 日志文件数据
mysql-bin.index 日志文件索引
4.查看binlog数据文件
1.mysqlbinlog查看
mysqlbinlog 日志文件地址
2.进入数据库查看
show binlog events in "日志文件名"
3.查看日志状态
show master status;
4.查看所有的日志文件
show master logs
5.清空日志文件
reset master;
3.多个binlog
每次重启后,服务器会调用flush log,都会生成一个新的binlog文件
4.恢复数据
1.恢复全部数据
mysqlbinlog mysql-bin.000001 | mysql -uroot -p
这里如果无法恢复,可能是字符集的问题,添加-no-defaults
即可
mysqlbinlog -no-defaults mysql-bin.000001 | mysql -uroot -p
2.恢复部分数据
mysqlbinlog -no-defaults mysql-bin.000001 -start-position xxx -stop-position xxx | mysql -uroot -p