当前位置:   article > 正文

MySQL5.7: my.cnf参数速查小册子_mysql 5.7 my.cnf

mysql 5.7 my.cnf

目录

MySQL5.7: my.cnf参数速查小册子

MySQL配置文件

MySQL配置文件加载顺序

/etc/mysql/mysql.cnf是什么情况呢?

/etc/mysql/conf.d/ 和 /etc/mysql/mysql.conf.d/的作用

MySQL配置文件参数

参考链接:


MySQL5.7: my.cnf参数速查小册子

MySQL配置文件

MySQL文档包含了描述各种配置文件

  • /etc/my.cnf 全局选项

  • /etc/mysql/my.cnf 全局选项

  • SYSCONFDIR/my.cnf 全局选项

  • $MYSQL_HOME/my.cnf 服务器特定选项(仅限服务器)

  • defaults-extra-file 用 --defaults-extra-file 指定的文件,如果有的话

  • ~/.my.cnf 用户特定的选项

  • ~/.mylogin.cnf 用户特定的登录路径选项(仅限客户端)

但它没有提到mysql.cnf, 下文我们将会为大家解释

MySQL配置文件加载顺序

root@a609a3ac9400:/# which mysqld
/usr/sbin/mysqld
root@a609a3ac9400:/# /usr/sbin/mysqld --verbose --help | grep -A 5 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 

/etc/my.cnf 、/etc/mysql/my.cnf 、~/.my.cnf 是 MySQL 的默认配置文件,有先后的读取顺序

/etc/mysql/mysql.cnf是什么情况呢?

root@a609a3ac9400:~# ls -lrt /etc/alternatives/my.cnf
lrwxrwxrwx 1 root root 20 Sep 28 16:28 /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf

从上面信息可以看出,/etc/alternatives/my.cnf 其实是一个软连接,指向参数文件/etc/mysql/mysql.cnf

/etc/mysql/conf.d/ 和 /etc/mysql/mysql.conf.d/的作用

# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation.  The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
​
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

但是/etc/mysql/my.cnf参数文件下面没有任何参数设置,只看到下面两行设置,表示导入这两个目录里面的配置文件。

!includedir /etc/mysql/conf.d/

#表示包含/etc/mysql/conf.d/这个路径下面的配置文件

!includedir /etc/mysql/mysql.conf.d/

#表示包含/etc/mysql/mysql.conf.d/这个路径下面的配置文件

/etc/mysql/conf.d/ 目录下的 my.cnf 和 mysql.cnf、mysqld.cnf 区别仅仅在于后者专门用于服务端和客户端的配置,即[mysqld]节点和[mysql]节点

MySQL配置文件参数

  1. [mysqld]
  2. server-id=513306                        # Mysql唯一标识,一个集群中唯一;
  3. port=3306                               # 服务端口,默认3306
  4. user = mysql                            # 启动用户,建议用户mysql
  5. bind_address= 0.0.0.0                   # 绑定的IP地址,建议使用具体地址
  6. basedir=/mysql/app/mysql                # mysql安装路径,建议使用绝对路径
  7. datadir=/mysql/data/3306/data           # 数据目录
  8. socket=/mysql/data/3306/mysql.sock      # 指定套接字文件
  9. pid-file=/mysql/data/3306/mysql.pid     # 指定pid文件
  10. character-set-server=utf8               # 指定默认编码格式
  11. skip-character-set-client-handshake=1   # 跳过mysql程序起动时的字符参数设置 ,使用服务器端字符集设置 0:不跳过 1:跳过
  12. autocommit = 0                          # 是否开启自动提交, 0:不开启 1:开启
  13. skip_name_resolve = 1                   # 禁止域名解析   建议开启
  14. max_connections = 800                   # 最大连接数
  15. max_connect_errors = 1000               # 最大连接错误
  16. default-storage-engine=INNODB           # 设置默认引擎,常用引擎INNODB,MYISAN,建议使用INNODB
  17. transaction_isolation = READ-COMMITTED  # 事务隔离级别,可选参数有:READ-UNCOMMITTED(读取未提交内容), READ-COMMITTED(读取提交内容), REPEATABLE-READ(可重读), SERIALIZABLE(可串行化).
  18. explicit_defaults_for_timestamp = 1     # 参数是否初始化
  19. sort_buffer_size = 32M                  # 排序使用的缓存大小,MySQL5.7中,默认为1M(优化参数之一,一般情况下默认数值就够用了)
  20. join_buffer_size = 128M                 # join操作所用用的缓存大小
  21. tmp_table_size = 72M                    # 临时表大小
  22. max_allowed_packet = 16M                # 服务端最大允许接收的数据包大小
  23. sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"   # mysql支持的基本语法及校验规则
  24. interactive_timeout = 1800              # 是MySQL在等待一个活动连接关闭连接前等待的秒数。默认28800秒,8小时
  25. wait_timeout = 1800                     # 是MySQL在等待一个非活动连接关闭连接前等待的秒数。默认28800秒,8小时
  26. read_buffer_size = 16M                  # (数据文件存储顺序)是MySQL读入缓冲区的大小,将对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区,read_buffer_size变量控制这一缓冲区的大小,如果对表的顺序扫描非常频繁,并你认为频繁扫描进行的太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能,read_buffer_size变量控制这一提高表的顺序扫描的效率 数据文件顺序。
  27. read_rnd_buffer_size = 32M              # 是MySQL的随机读缓冲区大小,当按任意顺序读取行时(列如按照排序顺序)将分配一个随机读取缓冲区,进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要大量数据可适当的调整该值,但MySQL会为每个客户连接分配该缓冲区所以尽量适当设置该值,以免内存开销过大。表的随机的顺序缓冲 提高读取的效率。
  28. #event_scheduler =1             # 事件调度器 1:开启   0:不开启
  29. query_cache_type = 1                    # 控制着查询缓存工能的开启的关闭。0时表示关闭,1时表示打开,2表示只要select 中明确指定SQL_CACHE才缓存。
  30. query_cache_size=1M                     # 查询缓存大小, 一般 1M很够用了
  31. table_open_cache=2048                   # 文件描述符的缓存大小,4G内存的机器,建议设置为2048,
  32. thread_cache_size=768                   # 线程池缓存大小,当客户端断开连接后 将当前线程缓存起来 当在接到新的连接请求时快速响应 无需创建新的线程
  33. myisam_max_sort_file_size=10G           # mysql重建索引时允许使用的临时文件最大大小
  34. myisam_sort_buffer_size=64M             # MyISAM表发生变化时重新排序所需的缓冲。一般64M足矣。
  35. key_buffer_size=32M                     # Key Buffer大小,用于缓存MyISAM表的索引块。决定数据库索引处理的速度(尤其是索引读),对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低!
  36. read_buffer_size=8M                     # 用于对MyISAM表全表扫描时使用的缓冲区大小。针对每个线程进行分配(前提是进行了全表扫描)。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。
  37. read_rnd_buffer_size=4M                 # 是MySQL的随机读缓冲区大小,当按任意顺序读取行时(列如按照排序顺序)将分配一个随机读取缓冲区,进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要大量数据可适当的调整该值,但MySQL会为每个客户连接分配该缓冲区所以尽量适当设置该值,以免内存开销过大。表的随机的顺序缓冲 提高读取的效率。
  38. back_log=1024                           # 值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。由默认的50,每个连接256kb
  39. #flush_time=0
  40. open_files_limit=65536                  # MySQL打开了多少个文件描述符,默认最小1024
  41. table_definition_cache=1400             # 表定义文件缓存相比表文件描述符缓存所消耗的内存更小,其默认值是400
  42. #binlog_row_event_max_size=8K
  43. # 有时候为了避免master.info和中继日志崩溃,在容忍额外的fsync()带来的开销,推荐设置
  44. #sync_master_info=10000                 # 默认为10000,每间隔多少事务刷新master.info,如果是table(innodb)设置无效,每个事务都会更新,建议 设置为1
  45. #sync_relay_log=10000                   # 默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。为0则表示不刷新,交由OS的cache控制,建议设置为1
  46. #sync_relay_log_info=10000             # 默认为10000,每间隔多少事务刷新relay-log.info,建议设置为1
  47. ########log settings########
  48. log-output=FILE                         # 日志存储方式,TABLE、FILE,建议设置为FILE,默认为FILE
  49. general_log = 0                         # 所有到达MySQL Server的SQL语句记录下来。通用日志,不建议开启,这个很消耗磁盘空间,用于优化及故障排查
  50. general_log_file=/mysql/log/3306/itpuxdb-general.err    # 指定通用日志文件
  51. slow_query_log = ON                     # ON 为开启慢查询日志,off表示关闭慢查询日志,用于优化SQL语句
  52. slow_query_log_file=/mysql/log/3306/itpuxdb-query.err   #指定慢查询日志文件
  53. long_query_time=10                      # 指定多少秒返回查询的结果为慢查询
  54. log-error=/mysql/log/3306/itpuxdb-error.err     # 指定错误日志
  55. log_queries_not_using_indexes = 1       # 开启 记录没有使用索引查询语句,1或者ON开启,记录至慢日志中
  56. log_slow_admin_statements = 1           #记录那些慢的optimize table,analyze table和alter table语句,1或者ON开启,记录至慢日志中
  57. log_slow_slave_statements = 1           # 记录由Slave所产生的慢查询
  58. log_throttle_queries_not_using_indexes = 10     # 设定每分钟记录到日志的未使用索引的语句数目,超过这个数目后只记录语句数量和花费的总时间
  59. expire_logs_days = 90                   # 保留多少天
  60. min_examined_row_limit = 100            # 对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中
  61. #log_bin = "/log/bin_log/binlog"       # bin 日志路径设置
  62. ########replication settings########   # 主从复制设置
  63. #master_info_repository = TABLE         # 值如果为FILE,建议将其修改为TABLE
  64. #relay_log_info_repository = TABLE
  65. #log_bin = bin.log
  66.   #sync_binlog = 1               # 默认,sync_binlog=0,表示MySQL不控制binlog的刷新,如果sync_binlog>0,表示每sync_binlog次事务提交,# sync_binlog=1了,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置。sync_binlog=1,多个事务同时提交,同样很大的影响MySQL和IO性能。# MySQL DBA设置的sync_binlog并不是最安全的1,而是100或者是0。这样牺牲一定的一致性,可以获得更高的并发和性能。
  67. #gtid_mode = on                         # 是否开启开启 基于 gtid 的复制, 5.7之后才出现的新特性
  68. #enforce_gtid_consistency = 1           #
  69. #log_slave_updates
  70. #binlog_format = row
  71. #relay_log = relay.log
  72. #relay_log_recovery = 1
  73. #binlog_gtid_simple_recovery = 1
  74. #slave_skip_errors = ddl_exist_errors
  75. ########innodb settings########
  76. # 根据您的服务器IOPS能力适当调整,只有当你在频繁写操作的时候才有意义
  77. # 一般配普通SSD盘的话,可以调整到 10000 - 20000
  78. # 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
  79. innodb_io_capacity = 4000               # 动态调整刷新脏页的数量,一般设置最大值的1/2
  80. innodb_io_capacity_max = 8000           #动态调整刷新脏页的最大数量
  81. innodb_buffer_pool_size = 200M          # 缓存池大小,默认128M,建议设置为总内存大小的,设置为物理内存的80%
  82. innodb_buffer_pool_instances = 8        # 可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。
  83. innodb_buffer_pool_load_at_startup = 1  # 默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中。
  84. innodb_buffer_pool_dump_at_shutdown = 1 # 默认启用。指定在MySQL服务器关闭时是否记录在InnoDB缓冲池中缓存的页面,以便在下次重新启动时缩短预热过程。
  85. innodb_lru_scan_depth = 2000            # LRU列表中可用页的数量,默认值为1024。
  86. innodb_lock_wait_timeout = 5            # 事务锁超时时间
  87. #innodb_flush_method = O_DIRECT
  88. innodb_log_file_size = 200M             # mysql事务日志文件(ib_logfile0)的大小;
  89. innodb_log_files_in_group = 2           # 指定你有几个日志组。一般2-3个日值组。默认为两个。
  90. innodb_log_buffer_size = 16M            # 事务在内存中的缓冲大小。
  91. innodb_undo_logs = 128                  # InnoDB使用的回滚段个数,必须设置35个以上;,默认128
  92. innodb_undo_tablespaces = 3             # 是控制undo是否开启独立的表空间的参数,为0表示:undo使用系统表空间,即ibdata1,不为0表示:使用独立的表空间,一般名称为 undo001 undo002,存放地址的配置项为:innodb_undo_directory,默认配置为0,参数必须大于或等于2,即回收(收缩)一个undo log日志文件时,要保证另一个undo log是可用的。
  93. innodb_undo_log_truncate = 1            # 参数设置为1,即开启在线回收(收缩)undo log日志文件,支持动态设置。
  94. innodb_max_undo_log_size = 2G           # 每一个undo日志文件大小,默认1G
  95. innodb_flush_neighbors = 1              # 刷脏页的控制策略,参数就是用来控制这个行为的,值为 1 的时候会有上述的“连坐”机制,值为 0 时表示不找邻居,自己刷自己的。建议设置为0
  96. innodb_purge_threads = 4                # 负责回收已经使用并分配的undo页,可以指定多个innodb_purge_threads来进一步加快和提高undo回收速度。
  97. innodb_large_prefix = 1                 # 单索引限制,是否开启允许列索引最大达到3072,不开启只有767
  98. innodb_thread_concurrency = 64          # 来限制并发线程的数量
  99. innodb_print_all_deadlocks = 1          # 是否开启保存死锁日志,死锁日志存放到error_log配置的文件里面
  100. innodb_strict_mode = 1                  # InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能。开启此功能后,当创建表(CREATE TABLE)、更改表(ALTER TABLE)和创建索引(CREATE INDEX)语句时,如果写法有错误,不会有警告信息,而是直接抛出错误,这样就可直接将问题扼杀在摇篮
  101. innodb_sort_buffer_size = 64M
  102. innodb_flush_log_at_trx_commit=1        # sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数,当两个参数都设置为1的时候写入性能最差,但安全性最高,
  103. # 设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
  104. # 设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.
  105. # 设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。
  106. innodb_autoextend_increment=64          # 默认 8M ,单位为M,配置表空间自动扩展,每次扩展多大M
  107. innodb_concurrency_tickets=5000         # 这个参数设置为一种tickets,默认是5000,
  108. innodb_old_blocks_time=1000             # 页读取到mid位置后,需要等待多久才会被加入到LRU列表的热端。默认1000ms
  109. innodb_open_files=65536                 # 限制Innodb能打开的表的数据。
  110. innodb_stats_on_metadata=0              # 是否自动更新统计信息,默认为0关闭,
  111. innodb_file_per_table=1                 # MySQL InnoDB引擎 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,当增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。如果启用了innodb_file_per_talbe参数,需要注意的是每张表的表空间内存放的只是数据、索引和插入缓冲Bitmap页,其他数据如:回滚信息、插入缓冲索引页、系统事物信息、二次写缓冲(Double write buffer)等还是放在原来的共享表空间内。同时说明了一个问题:即使启用了innodb_file_per_table参数共享表空间还是会不断的增加其大小的。
  112. #innodb_checksum_algorithm=0           # 是否开启checksum算法
  113. innodb_data_file_path=ibdata1:200M;ibdata2:200M;ibdata3:200M:autoextend:max:5G      #可配置表空间相关参数。
  114. innodb_temp_data_file_path = ibtmp1:200M:autoextend:max:20G         # 可配置临时表空间相关参数。
  115. innodb_buffer_pool_dump_pct = 40        # 指定每个缓冲池最近使用的页面读取和转储的百分比,1-100,默认25
  116. innodb_page_cleaners = 4                # 多个页面清理线程刷脏页,用于指定页面清理线程的数量。其默认值1,维持了之前单个页面清理线程的配置
  117. innodb_purge_rseg_truncate_frequency = 128      # 指定purge操作被唤起多少次之后才释放rollback segments。当undo表空间里面的rollback segments被释放时,undo表空间才会被truncate。由此可见,该参数越小,undo表空间被尝试truncate的频率越高。
  118. binlog_gtid_simple_recovery=1           #这个变量用于在MySQL重启或启动的时候寻找GTIDs过程中,控制binlog 如何遍历的算法?
  119. #2. 当binlog_gtid_simple_recovery=FALSE 时:
  120. #   为了初始化 gtid_executed,算法是: 从newest_binlog -> oldest_binlog 方向遍历读取,如果发现有Previous_gtids_log_event , 那么就停止遍历
  121. #   为了初始化 gtid_purged,算法是:   从oldest_binlog -> newest_binlog 方向遍历读取, 如果发现有Previous_gtids_log_event(not empty)或者 #至少有一个Gtid_log_event的文件,那么就停止遍历
  122. #3. 当binlog_gtid_simple_recovery=TRUE 时:
  123. #   为了初始化 gtid_executed , 算法是: 只需要读取newest_binlog
  124. #   为了初始化 gtid_purged, 算法是: 只需要读取oldest_binlog
  125. #4. 当设置binlog_gtid_simple_recovery=TRUE , 如果MySQL版本低于5.7.7 , 可能会有gitd计算出错的可能,具体参考官方文档详细描述
  126. log_timestamps=system                   # 主要是控制 error log、slow_log、genera log,等等记录日志的显示时间参数,但不会影响 general log 和 slow log 写到表 (mysql.general_log, mysql.slow_log) 中的显示时间
  127. #transaction_write_set_extraction=MURMUR32     # 基于WRITESET的并行复制方式
  128. show_compatibility_56=on                # mysql兼容性是否兼容mysql5.6,这是是开启兼容
  129. lower_case_table_names=1        # 是否区分大小写 说明 0:区分大小写,1:不区分大小写
  130. read_only=1                     # 普通是否可读, 0:关闭可读, 1:开启可读
  131. super_read_only=1               # 管理员(super)用户是否可读,超级可读 ,0:关闭可读, 1:开启可读

参考链接:

http://dev.mysql.com/doc/mysql/en/server-system-variables.html

https://dev.mysql.com/doc/refman/5.7/en/option-files.html

https://dev.mysql.com/doc/refman/5.7/en/program-variables.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/121973?site
推荐阅读
相关标签
  

闽ICP备14008679号