来源华为云

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

注意