binlog 就是binary log,二进制日志文件,这个文件记录了mysql所有的dml操作。通过binlog日志我们可以做数据恢复,做主住复制和主从复制等等。对于开发者可能对binlog并不怎么关注,但是对于运维或者架构人员来讲是非常重要的。
如何开启binlog日志呢,在/etc/my.cnf添加以下三条语句就可以了:
log_bin=ON
log_bin_basename=/u01/mysql/mysql-bin
log_bin_index=/u01/mysql/mysql-bin.index
不过也要台用下面的一条语句就可以设定
log_bin = /u01/mysql/mysql_bin
这一个参数的作用和上面三个的作用是相同的,mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index
这些配置完毕之后对于5.7以下版本应该是可以了,但是我们这个时候用的如果是5.7及以上版本的话,重启mysql服务会报错。
[root@qht131 mysql]# service mysql start
Starting MySQL.The server quit without updating PID file (/u01/mysql/mysqld.pid). [FAILED]
这个时候我们必须还要指定一个参数
server-id=10000
随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了
有了上述的配置之后,我们就可以重新启动我们的mysql了
[root@qht131 mysql]# service mysql start
Starting MySQL. [ OK ]
[root@qht131 mysql]# mysql --user=root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21-log MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql_bin.000001 | 154 |
+------------------+-----------+
1 row in set (0.00 sec)
mysql> show variables like '%log_bin%';
+---------------------------------+----------------------------+
| Variable_name | Value |
+---------------------------------+----------------------------+
| log_bin | ON |
| log_bin_basename | /u01/mysql/mysql_bin |
| log_bin_index | /u01/mysql/mysql_bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+----------------------------+
6 rows in set (0.00 sec
这时系统级可以看到生成了对应的文件: