(一)、二进制日志的作用
1、复制
MySQL Master二进制日志发送到slave,slave根据日志进行重做,达到主从复制的目的。
2、恢复
不管是使用mysqldump还是xtrabackup,都只能将数据库恢复到有备份的时刻,如果要将数据库恢复到任何时刻,则需要使用二进制日志
(二)、binlog清理
如果数据量较大,binlog日志增长很快,需要定期清理的方法:
方法1:使用“reset master”命令,该命令将删除所有的binlog日志,日志编号从“000001”开始
mysql> reset master;
Query OK, 0 rows affected (0.00 sec)
方法2:使用“purge master logs to ‘hostname-bin.******’ ”命令; 该命令将删除******之前的日志
[root@k8s-master1 mysql]# ls -lrt
-rw-r----- 1 mysql mysql 168 1月 7 16:18 mysql-bin.000001
-rw-r----- 1 mysql mysql 168 1月 7 16:19 mysql-bin.000002
-rw-r----- 1 mysql mysql 168 1月 7 16:19 mysql-bin.000003
-rw-r----- 1 mysql mysql 168 1月 7 16:20 mysql-bin.000004
-rw-r----- 1 mysql mysql 168 1月 7 16:21 mysql-bin.000005
-rw-r----- 1 mysql mysql 168 1月 7 16:21 mysql-bin.000006
-rw-r----- 1 mysql mysql 168 1月 7 16:25 mysql-bin.000007
-rw-r----- 1 mysql mysql 156 1月 7 16:37 mysql-bin.000008
[root@k8s-master1 mysql]#
mysql> purge master logs to 'mysql-bin.000007';
Query OK, 0 rows affected (0.00 sec)
[root@k8s-master1 mysql]# ls -lrt
-rw-r----- 1 mysql mysql 168 1月 7 16:25 mysql-bin.000007
-rw-r----- 1 mysql mysql 156 1月 7 16:37 mysql-bin.000008
方法3:使用“purge master logs before‘yyyy-mm-dd hh24:mi:ss’ ”命令,该命令将删除指定日志之前的日志, 删除2020-01-07 00:24:00之前的日志
[root@k8s-master1 mysql]# ls -lrt /mysql/mysql-bin*
-rw-r----- 1 mysql mysql 168 1月 7 16:25 mysql-bin.000007
-rw-r----- 1 mysql mysql 156 1月 7 16:37 mysql-bin.000008
-rw-r----- 1 mysql mysql 156 1月 7 16:37 mysql-bin.000009
-rw-r----- 1 mysql mysql 156 1月 7 16:37 mysql-bin.000010
-rw-r----- 1 mysql mysql 156 1月 7 16:37 mysql-bin.000011
-rw-r----- 1 mysql mysql 156 1月 7 16:37 mysql-bin.000012
-rw-r----- 1 mysql mysql 156 1月 7 16:37 mysql-bin.000013
-rw-r----- 1 mysql mysql 156 1月 7 16:37 mysql-bin.000014
mysql> purge master logs before '2020-01-07 00:24:00';
Query OK, 0 rows affected (0.00 sec)
方法4:在配置文件中添加“expire_logs_days”参数,指定过期天数,到期会自动删除。
(三)、binlog切换
使用flush logs或者flush binary logs切换日志
mysql> show master status;
1 row in set (0.00 sec)
mysql> flush logs;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status;
mysql> flush binary logs;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status;