mysql 日志设置可以作为优化数据库的一部分,不同的设置可能使性能得到较大的提升或者下降。
1.backup_log
back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多
连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限
制。试图设定back_log高于你的操作系统的限制将是无效的。
当使用show processlist 查看MySQL进程列表,发现大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL |
Connect | NULL | login |NULL 的待连接进程时,就要加大 back_log 的值。back_log默认值为50。
2.binlog_cache_size
“binlog_cache_size":在事务过程中容纳二进制日志SQL 语句的缓存大小。二进制日志缓存是服务器支持事务存储引擎并且服务器
启用了二进制日志(—log-bin 选项)的前提下为每个客户端分配的内存,注意,是每个Client 都可以分配设置大小的binlog cache 空
间。如果系统中经常会出现多语句事务,可以尝试增加该值的大小,以获得更有的性能。当然,可以通过MySQL 的以下两个状态变量
来判断当前的binlog_cache_size 的状况:Binlog_cache_use 和Binlog_cache_disk_use。
设定binlog_cache_size: set binlog_cache_size=32768;
查看binlog_cache_use和binlog_cache_disk_use
show global status like 'binlog_cache%'
Binlog_cache_use表示有多少个事物使用了binlog_cache_size来缓存未提交的事物日志。
Binlog_cache_disk_use 当事务日志比binlog_cache_size大时,他会创建临时文件,该状态表示有多少个事务使用了临时文件
以上两个参数可以用来动态调整binlog_cache_size变量,并且以上两个值只有在启动log-bin日志时才会有变化
3.binlog_direct_non_transactional_updates
4. binlog_format
binlog_format 有三种,一种是基于SQL的复制(statement-based replication),一种是基于行的复制(row-based
replication, RBR) ,还有一种混合模式复制(mixed-based replication, MBR).binlog的三种格式分别为,STATEMENT,
ROW,MIXED,混合模式中,SBR默认。
5. expire_logs_days
mysql二进制日志保留天数。
6. general_log
general_log会记录所有的SQL,为了性能考虑,一般不开启。
开启general_log: set global_general_log=on;
7. general_log_file
MYSQL general_log 存放日志的文件的路径;
8. LOG_OUTPUT
日志信息保存到文件或者表;
Set global log_output= ‘file’ | ‘table’ 两者选其一;
9. LOG
记录所有的查询操作日志。
开启:SET GLOBAL LOG=ON;
关闭:SET GLOBAL LOG=OFF;
10.LOG_bin
二进制日志包含所有更新数据的语句。LOG_BIN可以指定日志文件,如果不指定文件名,LOG_BIN将自己产生缺省的文件
名。
这个参数要在MY.CNF中修改。
11.log_bin_trust_function_creators
是否允许创建函数;
开启:set global log_bin_trust_function_creators=1;
关闭:set global log_bin_trust_function_creators=0;
12.log_bin_trust_routine_creators
12.log_error
记录mysql启动和停止的时候以及运行过程中出现的错误信息,这些信息一般在数据目录下,名字为hostname.err.
14.log_queries_not_using_indexes
记录没有使用索引的慢日志;
开启:set global log_queries_not_using_indexes=1;
关闭:set global log_queries_not_using_indexes=0;
15.log_slave_updates
如果使用链状同步需要开启此选项;
开启:set global log_slave_updates=1;
16.log_slow_queries
记录慢查询日志,开启时可以指定日志路径;
开启:set global log_slow_queries=1;
可以在开启的时候指定文件路径;
set global slow_query_log_file='file';
可以通过long_query_time指定慢查询的时间值;
set global long_query_time=1;
17.log_warnings
记录警告到错误日志;默认值为1;
开启:set global log_warnings=1;
关闭:set global log_warnings=0;
18.max_binlog_cache_size
“max_binlog_cache_size”:和"binlog_cache_size"相对应,但是所代表的是binlog 能够使用的最大cache 内存大小。当我们
执行多语句事务的时候,max_binlog_cache_size 如果不够大的话,系统可能会报出“ Multi-statement transaction required
more than 'max_binlog_cache_size' bytes ofstorage”的错误。
19.max_binlog_size
“max_binlog_size”:Binlog 日志最大值,一般来说设置为512M 或者1G,但不能超过1G。该大小并不能非常严格控制Binlog 大
小,尤其是当到达Binlog 比较靠近尾部而又遇到一个较大事务的时候,系统为了保证事务的完整性,不可能做切换日志的动作,只能将
该事务的所有SQL 都记录进入当前日志,直到该事务结束。
20.sync_binlog
sync_binlog=0,当事务提交之后,MySQL 不做fsync 之类的磁盘同步指令刷新binlog_cache 的信息到磁盘,而让Filesystem
自行决定什么时候来做同步,或者cache 满了之后才同步到磁盘。
sync_binlog=n,当每进行n 次事务提交之后,MySQL 将进行一次fsync 之类的磁盘同步指令来将binlog_cache 中的数据强制写入
磁盘。
在MySQL 中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大
的。因为一旦系统Crash,在binlog_cache 中的所有binlog 信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的
设置。
21.relay_log
配置中继日志,用于复制。
中继日志是从主机的 二进制日志中读取事务,并且由从机的I/O 线程作为SQL线程的一部分在从机上执行。
22.relay_log_index
可以设置为:relay_log_index = mysql-relay-bin.index
记录了最后的中转日志列表的位置与名称。
23.relay_log_info_file
中转日志信息文件的位置与名称。
24.relay_log_purge
设置为0时,表示不清楚中继日志,在设置为1时,表示在不需要的时候立即清除中继日志。
25.relay_log_space_limit
用于所有中转日志的最大空间。
27.log_slave_update
是否记录SLAVE 的二进制日志,当设置为1时,可以让从服务器变为主服务器。
是否允许创建SP;
开启:set log_bin_trust_routine_creators =1;
关闭:set log_bin_trust_routine_creators =0;