配置文件
前言
官方文档:
- https://dev.mysql.com/doc/refman/8.0/en/server-option-variable-reference.html
- https://mariadb.com/kb/en/full-list-of-mariadb-options-system-and-status-variables/
/etc/my.cnf #Global选项
/etc/mysql/my.cnf #Global选项
/etc/my.cnf.d/*
/etc/my.cnf.d/client.conf #客户端的子配置文件
~/.my.cnf #User-specific 选项MySQL 配置文件格式
格式:
- parameter = value
说明:
- _和- 相同
- 1,ON,TRUE意义相同(不写=号和值默认为ON), 0,OFF,FALSE意义相同
MySQL 服务器端配置
自动生成服务器端配置文件
配置文件生成工具参考链接:
获取mysqld的可用选项列表
- 可以通过mysqld选项,服务器系统变量和服务器状态变量进行MySQL的配置和查看状态
#查看mysqld可用选项列表和及当前值
mysqld --verbose --help
#获取mysqld当前启动选项
mysqld --print-defaults
#查看mysqld的当前启动选项
mysqld --print-defaults临时修改服务器端配置
- 在命令行中设置,永久修改服务器端配置需写配置文件
/usr/bin/mysqld_safe --skip-name-resolve=1
/usr/libexec/mysqld --basedir=/usr服务器端配置文件说明
[root@mysql-master ~]# vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4 #服务端的默认字符集,新版本已默认utf8mb4
skip-networking=1 #只侦听本地客户端, 所有客户端和服务器的交互都通过一个socket文件实现,socket的配置存放在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf修改
skip_name_resolve=1
skip-grant-tables #忽略授权表
max_connections=2000 #最大连接数量,数量过大时还要修改service文件中[Service]块中的LimitNOFILE=65535,以及limit文件
[mysqld_safe]
[mysqld_multi]
[server]不停服务修改配置文件的方法
-
首先确定要修改的值即是服务器变量 又是服务器选项
- 通过官方文档查看:max_connections,确定是否即是服务器变量 又是服务器选项(可以查看官方文档中Cmd-Line 和 Option File 以及 Dynamic 是否可以动态修改,可以添加到配置文件或再启动时指定)
-
动态修改服务器变量的值
-
mysql> set global max_connections=2000;`
-
-
最后将键值对写入配置文件(下次重启服务不会丢失)
-
# vim /etc/my.cnf [mysqld] max_connections=2000 ...
-
生产环境服务器端配置文件参考
- 参考硬件:内存32G
# 打开独立表空间
innodb_file_per_table = 1
# MySQL 服务所允许的同时会话数的上限,经常出现Too Many Connections的错误提示,则需要增大此值
max_connections = 8000
# 所有线程所打开表的数量
open_files_limit = 10240
# back_log 是操作系统在监听队列中所能保持的连接数
back_log = 300
# 每个客户端连接最大的错误允许数量,当超过该次数,MYSQL服务器将禁止此主机的连接请求,直到MYSQL服务器重启或通过flush hosts命令清空此主机的相关信息
max_connect_errors = 1000
# 每个连接传输数据大小.最大1G,须是1024的倍数,一般设为最大的BLOB的值
max_allowed_packet = 32M
# 指定一个请求的最大连接时间
wait_timeout = 10
# 排序缓冲被用来处理类似ORDER BY以及GROUP BY队列所引起的排序
sort_buffer_size = 16M
# 不带索引的全表扫描.使用的buffer的最小值
join_buffer_size = 16M
# 查询缓冲大小
query_cache_size = 128M
# 指定单个查询能够使用的缓冲区大小,缺省为1M
query_cache_limit = 4M
# 设定默认的事务隔离级别
transaction_isolation = REPEATABLE-READ
# 线程使用的堆大小. 此值限制内存中能处理的存储过程的递归深度和SQL语句复杂性,此容量的内存在每次连接时被预留.
thread_stack = 512K
# 二进制日志功能
log-bin=/data/mysqlbinlogs/
# 二进制日志格式
binlog_format=row
# InnoDB使用一个缓冲池来保存索引和原始数据, 可设置这个变量到物理内存大小的80%
innodb_buffer_pool_size = 24G
# 用来同步IO操作的IO线程的数量
innodb_file_io_threads = 4
# 在InnoDb核心内的允许线程数量,建议的设置是CPU数量加上磁盘数量的两倍
innodb_thread_concurrency = 16
# 用来缓冲日志数据的缓冲区的大小
innodb_log_buffer_size = 16M
# 在日志组中每个日志文件的大小
innodb_log_file_size = 512M
# 在日志组中的文件总数
innodb_log_files_in_group = 3
# SQL语句在被回滚前,InnoDB事务等待InnoDB行锁的时间
innodb_lock_wait_timeout = 120
# 慢查询时长
long_query_time = 2
# 将没有使用索引的查询也记录下来
log-queries-not-using-indexesMySQL 客户端配置
[mysql]
default-character-set=utf8mb4 #客户端的默认字符集,新版本已默认utf8mb4
user=azheng #客户端自动登录的账号
password=123 #客户端自动登录的密码
[mysqldump]
[client] #客户端的配置文件也可以写到此处,便于直观管理