mysql 的数据库文件bin-log及slow-query-log

在oracle和mysql这类关系型数据库中,遵循‘日志先行策略’,即在插入数据之前,先有一条日志记录。

进入正题,大家都知道,mysql的二进制文件十分重要;

  • 其一:主从复制,MySQL Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达到master-slave数据一致的目的。
  • 其二:数据备份,通过使用mysqlbinlog工具来使恢复数据。

一、开启binlog日志:
vi编辑打开mysql配置文件
# vim /etc/my.cnf
在[mysqld] 区块
设置/添加 log-bin=mysql-bin 确认是打开状态(值 mysql-bin 是日志的基本名或前缀名);
重启mysqld服务使配置生效

 mysql.server restart

还需注意 生产环境单个日志文件大小设置为 256M,缓存设置1~4M。

之后登录服务器
# mysql -uroot -p

mysql> show variables like 'log_bin%'; 
+----------------------------------------+---------------------------------------+
| Variable_name                          | Value                                 |
+----------------------------------------+---------------------------------------+
| log_bin                                | ON                                    | ------> ON表示已经开启binlog日志
| log_bin_basename                       | /usr/local/mysql/data/mysql-bin       |
| log_bin_index                          | /usr/local/mysql/data/mysql-bin.index |
| log_bin_trust_function_creators        | OFF                                   |
| log_bin_use_v1_row_events              | OFF                                   |
+----------------------------------------+---------------------------------------+

还可以查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值

mysql> show master status; #主从复制时的依据

建议设置 bingo_format = ROW,这样日志记录的是DML语句更改前后的内容;由于binlog是二进制文件,普通文件查看器cat more vi等都无法打开,必须使用自带的 mysqlbinlog 命令查看

 mysqlbinlog --base64-output=decode-rows -v --start-date="2017-08-12 15:00:19" --stop-date="2017-08-12 15:30:19" mysql-bin.000055


慢查询日志:当查询超过一定的时间没有返回结果的时候,才会记录到慢查询日志中。默认不开启。需要的时候手工开启。可以帮助找出执行慢的SQL语句
同样在etc/my.cnf添加

slow_query_log=off|on     --是否开启慢查询日志
slow_query_log_file=filename --指定保存路径及文件名,默认为数据文件目录,hostname-slow.log
long_query_time=0.5    --指定多少秒返回查询的结果为慢查询

建议慢查询分析工具使用percona-toolkit中的pt-query-digest。

你可能感兴趣的:(mysql 的数据库文件bin-log及slow-query-log)