MySQL 技术参数解读和设置
1、back_log
参数含义
MySQL每处理一个连接请求的时候都会对应的创建一个新线程,那么在主线程创建新线程期间,如果前端应用有大量的短连接进入到数据库,为了保证当前事务及MySQL本身的稳定性,MySQL不可能无限制的接受新连接进入请求队列。请求队列的大小就是由back_log控制,如果等待的连接数量超过back_log,则将不会接受新的连接请求,所以如果需要MySQL并发处理大量的短连接,需要提高此参数的大小
取值范围
1–65535
推荐值
600
注意
该参数值不能超过MySQL服务器TCP/IP连接的侦听队列的大小。若超过则无效,查看当前系统的TCP/IP连接的侦听队列的大小命令:
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
2、binlog_error_action
参数含义
Binlog_error_action参数控制当不能写binlog时,mysql本身会怎样处理这个状态。设置binlog_error_action=ABORT_SERVER会使mysql在写binlog遇到错误时退出。在ABORT_SERVER模式下,binlog和从库都是安全的。binlog_error_action=IGNORE_ERROR,如果无法写入binlog,mysql会在error.log中记录相关错误信息并强制关闭binlog功能。这会使mysql在不记录binlog的模式下继续运行,导致从库无法继续获取到主库的binlog。
取值范围
IGNORE_ERROR | ABORT_SERVER
推荐值
ABORT_SERVER
注意
3、binlog_format
参数含义
该参数控制MySQL是以如何格式记录二进制日志Binlog的。STATEMENT(SBR):Binlog记录的只是sql语句,日志量最少。ROW(RBR):Binlog记录完成的数据变更记录,日志量最大,但是最安全的。MIXED(MBR):MySQL根据一定的规则决定以何种格式记录binlog。在以下场景自动从STATEMENT格式转换为ROW格式。如:UUID(), UDF, AUTO_INCREMENT columns, LOAD_FILE(), USER(), CURRENT_USER(), or CURRENT_USER等等
取值范围
ROW | MIXED | STATEMENT
推荐值
ROW
注意
4、lower_case_table_names
参数含义
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
unix,linux下lower_case_table_names默认值为 0 .Windows下默认值是 1 .Mac OS X下默认值是 2
取值范围
0 | 1
推荐值
1
注意
5、innodb_file_format
参数含义
控制Innodb引擎的行存储机制。Innodb引擎还支持行数据压缩特性,不过前提是采用Barracuda行存储格式。表空间启用压缩的前提是innodb表空间文件存储格式修改成Barracuda,此外需要修改innodb_file_format_max= Barracuda
取值范围
Antelope | Barracuda
推荐值
Barracuda
注意
6、max_binlog_size
参数含义
控制单个Binlog日志大小,一旦达到该参数的限制,会产生新的binlog文件(一个binlog文件最大 1G)
取值范围
4096–1073741824
推荐值
512M
注意
7、innodb_log_file_size
参数含义
该参数控制Innodb事务日志文件的大小,日志写满后进行日志切换。所有日志的总大小不能超过512GB,即innodb_log_file_size * innodb_log_files_in_group的值不能大于512GB
取值范围
推荐值
512M
注意
8、innodb_log_files_in_group
参数含义
控制Innodb事务日志的个数。如果设置的太小,遭遇事务高峰期,会产生大量的事务日志,频繁发生日志切换。当日志1写满需要切换日志2时,如果日志2中事务对应的脏数据未完成落盘,日志切换只能等待,严重影响mysql的性能。
取值范围
2-100
推荐值
2
注意
9、relay_log_info_repository
参数含义
控制从库的重做信息以何种方式保存。设置为file,sql线程先提交事务,再记录relay.info文件。假如在relay.info刷盘那一刻宕机,relay.info文件中没有记录,那么从库重启mysql进程后们就会执行两边同样的sql,导致同步复制报错。设置为table,sql线程执行完事务后,立即更新slave_relay_log_info表,如果在更新过程中宕机,则事务会回滚,slave_relay_log_info表并不会记录同步的点,下次重新同步时,从之前的pos点再次执行。
取值范围
table|file
推荐值
table
注意
10、relay_log_recovery
参数含义
Slave宕机重启后,对relay-log的处理方式。当slave宕机后,假如relay_log损坏,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从MASTER上索取日志,保证relay的完整性。默认情况下该功能是关闭的。建议在从库上开启次功能
取值范围
ON | OFF
推荐值
ON