启动时的日志控制。
–log-output选项指定日志输出的目的地。此选项本身不启用日志。其语法是 : --log-output[=value,…]
1.如果–log-output给出一个值,该值应该是一个或多个单词TABLE(日志到表), FILE(日志到文件)或 NONE(不记录到表或文件)的逗号分隔列表。 NONE如果存在,优先于任何其他说明符。
2.如果–log-output省略,则默认日志目标为FILE。
在运行时记录控制。
general_log 常规查询日志 启用(ON)还是禁用(OFF:默认)
general_log_file
slow_query_log慢速查询日志 启用(ON)还是禁用(OFF:默认)
slow_query_log_file
开启和关闭:
SET GLOBAL general_log = 'OFF';
SET GLOBAL slow_query_log = 'OFF';
SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';
使用表来记录日志:
SHOW CREATE TABLE mysql.general_log;
SHOW CREATE TABLE mysql.slow_log;
Error Logging
配置 log-error
刷新 FLUSH ERROR LOGS, FLUSH LOGS
mv host_name.err host_name.err-old
mysqladmin flush-logs
mv host_name.err-old backup-directory
On Windows, use rename rather than mv.
注意:
cd /home/mysql&&mkdir log&&chgrp -R mysql log&&chown -R mysql log
【*这里要规划好目录,方便管理】
Binary Log其实是数据修改的“事件”的日志。binary log主要有2个目的:
1.用于复制,master上的binary log发送给slave服务。
2.数据恢复操作需要用到binary log。
启动binary log可以设置命令行配置
server_id=1 如果启用二进制日志记录,则必须指定 该选项,否则不允许服务器启动
log-bin[=mysql-bin]默认名称。log-bin若不显示指定存储目录,则默认存储在mysql的data目录下 pid-file选项默认为设备的host,然后加上-bin。如果在指定log-bin的时候加了后缀,那么会被自动忽略。
二进制日志格式
支持的值为: --binlog-format=type
这被称为基于语句的复制(通常缩写为 SBR)STATEMENT
这被称为基于行的复制(通常缩写为 RBR)ROW
基于语句和基于行的日志记录的混合 MIXED
mysql> SET GLOBAL binlog_format = 'STATEMENT';
mysql> SET GLOBAL binlog_format = 'ROW';
mysql>SET GLOBAL binlog_format = 'MIXED';
mysql> SET SESSION binlog_format = 'STATEMENT';
mysql> SET SESSION binlog_format = 'ROW';
mysql>SET SESSION binlog_format = 'MIXED';
中继日志 show variables like ‘%relay_log%’;
relay_log_info_repository
该变量决定从站在继电器日志中的位置是写入FILE (relay-log.info)还是 写入TABLE (mysql.slave_relay_log_info)
如使用多通道复制必须使用 TABLE
【*这里要规划好目录,方便管理】
#cd /home/mysql&&mkdir relaylog&&chgrp -R mysql relaylog&&chown -R mysql relaylog
#vim /etc/my.cnf
relay_log=/home/mysql/relaylog/localhost-relay-bin
–relay-log-purge={0|1}
不再需要时,立即禁用或启用自动清除中继日志。默认值是1(启用)
–relay-log-recovery={0|1}
服务器启动后立即启用自动中继日志恢复。恢复过程将创建一个新的中继日志文件,将SQL线程位置初始化为此新的中继日志,并将I / O线程初始化为SQL线程位置。继续从主站读取中继日志。这应该在复制从站意外停止之后使用,以确保不会处理可能损坏的中继日志。默认值是0(禁用)。
在Linux(Red Hat)安装上,您可以使用此 mysql-log-rotate脚本。如果您从RPM分发版安装了MySQL,则应该自动安装此脚本。如果使用二进制日志进行复制,请小心使用此脚本。除非您确定其内容已被所有从站处理,否则不应删除二进制日志。
在其他系统上,您必须自己安装一个简短的脚本,cron开始处理日志文件。
对于binlog可以设置expire_logs_days自动过期binary log。如果有复制存在,设置的值不应该小余slave的延迟,通过flush logs手动让binary log启动一个新的日志文件。参考
定期清理:
set global expire_logs_days = 10;
禁用:
SET sql_log_bin=0
对于relay_log
reset slave;
1、删除slave_master_info ,slave_relay_log_info两个表中数据;
2、删除所有relay log文件,并重新创建新的relay log文件;
3、不会改变gtid_executed 或者 gtid_purged的值
按需清理日志:
PURGE BINARY LOGS
会在指定的日志文件名称或日期之前删除日志索引文件中列出的所有二进制日志文件。
PURGE BINARY LOGS TO'mysql-bin.010';
PURGE BINARY LOGS BEFORE'2008-04-02 22:46:26';