备注:测试数据库版本为MySQL 8.0
这个blog我们来聊聊MySQL的配置文件以及常用的参数
MySQL配置文件
-- windows
my.ini
-- linux
my.cnf
默认路径/etc/my.cnf
Linux下的配置文件my.cnf,与Oracle参数文件类似,MySQL启动的时候,会读取my.cnf文件里面的内容,但凡有一个参数配置格式错误,MySQL启动会报错,需要排查错误日志。
这个blog我们简单的聊聊常见的参数用法。
MySQL客户端应用读取,一般设置连接端口
参数值 | 参数用途 |
---|---|
port = 3306 | 指定客户端应用连接的端口 |
socket = path/filename | 指定连接socket |
default-character-set=utf8mb4 | 指定客户端应用连接的字符集 |
参数值 | 类别 | 参数用途 |
---|---|---|
basedir = path | 基础设置 | 指定安装目录 |
datadir = path | 基础设置 | 指定数据文件目录 |
tmpdir = path | 基础设置 | 指定临时文件目录 |
pid-file = path/filename | 基础设置 | 为mysqld程序指定一个存放进程ID的文件(仅适用于unix/linux) |
socket = path/filename | 基础设置 | socket文件是客户程序与服务器之间通信的文件(仅适用于unix/linux) |
server-id = 1 | 基础设置 | 表示本机的序号为1,唯一,主从复制的时候需要使用 |
tmp_table_size = 512M | 基础设置 | 临时表最大大小,超过该值,数据存放磁盘 取值范围:1024- 18446744073709551615 默认值:16777216 |
max_heap_table_size = 512M | 基础设置 | 独立的内存表所允许的最大容量,防止内存耗尽 取值范围:16384-1844674407370954752 默认值:16777216 |
********************************** | ****************** | ************************************ |
********************************** | ****************** | ************************************ |
max_connections = 1000 | 系统资源相关 | MySQL允许的最大连接进程数 取值范围:1-100000 默认值:151 |
max_connect_errors = 1000 | 系统资源相关 | 用户发起的连接 error 超过该数值,则该用户的下次连接将被阻塞,直到管理员执行 flush hosts ;或重启服务器 取值范围:1-100000 默认值:151 |
open_files_limit = 10240 | 系统资源相关 | MySQL打开的文件描述符限制; 取值范围:0-平台依赖 默认值:5000 |
connect-timeout = 10 | 系统资源相关 | 连接超时最大秒数 取值范围:2-31536000 默认值:10 |
wait-timeout = 28800 | 系统资源相关 | 等待关闭连接的时间,单位秒 取值范围:1-31536000(windows平台 最大值 2147483) 默认值:28800 |
interactive-timeout = 28800 | 系统资源相关 | 关闭连接之前,允许 interactive_timeout(取代了wait_timeout)秒的不活动时间 取值范围:1-无穷大 默认值:28800 |
slave-net-timeout = 600 | 系统资源相关 | 从库超过该时间无法与主库通信,断开连接,单位秒 取值范围:1-无穷大 默认值:60 |
net_read_timeout = 30 | 系统资源相关 | 从服务器读取信息超时时间,单位秒 取值范围:1-无穷大 默认值:30 |
net_write_timeout = 60 | 系统资源相关 | 从服务器写信息超时时间,单位秒 取值范围:1-无穷大 默认值:60 |
net_retry_count = 10 | 系统资源相关 | 读操作中断后允许的重连次数,单位秒 取值范围:1-18446744073709551615 默认值:10 |
net_buffer_length = 16384 | 系统资源相关 | 包消息缓冲区初始化为 net_buffer_length 字节, 取值范围:1024 - 1048576 默认值:16384 |
max_allowed_packet = 64M | 系统资源相关 | 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小 取值范围:1024 - 1073741824 默认值:67108864 |
table_open_cache = 512 | 系统资源相关 | 所有线程打开表的数量 取值范围:1 - 524288 默认值:4000 |
thread_stack = 192K | 系统资源相关 | 线程使用的堆大小. 此容量的内存在每次连接时被预留 取值范围:131072 - 18446744073709551615 默认值:286720 |
thread_cache_size = 20 | 系统资源相关 | 我们在 cache 中保留多少线程用于重用 取值范围:0 - 16384 默认值:-1(不指定此值) |
********************************** | ****************** | ************************************ |
********************************** | ****************** | ************************************ |
skip-name-resolve | skip相关 | 禁止MySQL对外部进行 DNS解析,Boolean类型 格式:skip-name-resolve=OFF OR ON 默认值:OFF |
skip-name-resolve | skip相关 | 禁止MySQL对外部进行 DNS解,Boolean类型 格式:skip-name-resolve=OFF OR ON 默认值:OFF |
skip-symbolic-links | skip相关 | 不能使用连接文件 格式 symbolic-links= OFF OR ON 默认:OFF |
skip-external-locking | skip相关 | 不使用系统锁定,要使用 myisamchk,必须关闭服务器 ,避免 MySQL的外部锁定,减少出错几率增强稳定性 格式:skip-external-locking = OFF or ON 默认值:ON |
skip-slave-start | skip相关 | 启动 mysql,不启动复制 格式:skip-slave-start = OFF or ON 默认值:OFF |
skip-networking | skip相关 | 开启该选项可以彻底关闭 MySQL 的 TCP/IP 连接方式 格式:skip-networking = OFF or ON 默认值:OFF |
********************************** | ****************** | ************************************ |
********************************** | ****************** | ************************************ |
default-time-zone = system | default settings 相关 | 服务器时区 |
character-set-server = utf8mb4 | default settings 相关 | 服务器字符集 |
default_storage_engine = InnoDB | default settings 相关 | 默认存储引擎 |
********************************** | ****************** | ************************************ |
********************************** | ****************** | ************************************ |
log-bin = filename | 日志相关 | 打开二进制日志功能 log-bin=mysql-bin(也可指定二进制日志生成的路径,如:log-bin=/opt/Data/mysql-bin) |
log_slave_updates | 日志相关 | 从库将复制事件写入自己的二进制日志 格式:log_slave_updates = OFF or ON 默认值:ON |
log-bin-index = file_name | 日志相关 | 二进制的索引文件名,一般是mysql-bin.index |
relay-log = relay-log | 日志相关 | 定义relay_log的位置和名称,如果值为空,则默认位置在数据文件的目录(datadir) |
relay_log_index = relay-log.index | 日志相关 | 同relay_log,定义relay_log的位置和名称;一般和relay-log在同一目录 |
log-error = filename | 日志相关 | 错误日志文件 |
log_output = FILE | 日志相关 | 参数 log_output 指定了慢查询输出的格式,默认为 FILE 可选值有:TABLE/FILE/NONE |
slow_query_log = Boolean | 日志相关 | 指定是否开启慢查询日志 格式:slow_query_log = OFF or ON 默认值:OFF |
long-query-time = 1 | 日志相关 | 设定慢查询的阀值,超过该值的sql会被记录到慢查询日志 单位:秒 默认值:10 |
slow_query_log_file = filename | 日志相关 | 慢查询日志存放目录,默认值:host_name-slow.log |
log-queries-not-using-indexes | 日志相关 | 如果运行的SQL语句没有使用索引,则mysql数据库同样会将这条SQL语句记录到慢查询日志文件中 格式:log-queries-not-using-indexes = OFF or ON 默认值:OFF |
min_examined_row_limit=1000 | 日志相关 | 记录那些由于查找了多余1000次而引发的慢查询 取值范围:0-18446744073709551615 |
log-slow-slave-statements | 日志相关 | 记录由Slave所产生的慢查询 格式:log-slow-slave-statements = OFF or ON 默认值:OFF |
general_log | 日志相关 | 将所有到达MySQL Server的SQL语句记录下来 格式:general_log = OFF or ON 默认值:OFF |
general_log_file = filename | 日志相关 | general_log路径,默认值:host_name.log |
max_binlog_size = 1G | 日志相关 | binlog最大值 取值范围:4096-1073741824 默认值:1073741824(1G) |
max_relay_log_size = 1G | 日志相关 | relay log最大值 取值范围:0-1073741824 默认值:0 |
relay-log-purge = 1 | 日志相关 | 是否自动清空不再需要中继日志时。默认值为1(启用) 格式:relay-log-purge = OFF or ON 默认值:ON |
expire_logs_days = 30 | 日志相关 | 超过 30 天的 binlog 删除 取值范围:0-99 默认值:0 |
binlog_cache_size = 1M | 日志相关 | 单个事务,binlog cache大小 取值范围:4096-18446744073709551615 默认值:32768(32K) |
replicate-wild-ignore-table = mysql.% | 日志相关 | 复制时忽略数据库及表 |
slave_skip_errors=all | 日志相关 | 定义复制过程中从服务器可以自动跳过的错误号 OFF-list of error codes all-ddl_exist_errors 默认值:OFF |
********************************** | ****************** | ************************************ |
********************************** | ****************** | ************************************ |
innodb_file_per_table = 1 | InnoDB相关 | 每个表都有自己独立的表空间 Boolean类型 innodb-file-per-table = ON or OFF 默认值:ON |
innodb_open_files = 2048 | InnoDB相关 | 限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个 取值范围: 10 - 4294967295 默认值: -1 (不设置这个值) |
innodb_buffer_pool_size = 2G | InnoDB相关 | InnoDB buffer pool的大小,用于缓存表和索引的数据 取值范围: 5242880 - 2**64-1 默认值:134217728 |
innodb_write_io_threads = 4 | InnoDB相关 | innodb写进程数 取值范围:1-64 默认值:4 |
innodb_read_io_threads = 4 | InnoDB相关 | innodb读进程数 取值范围:1-64 默认值:4 |
innodb_data_home_dir =filename | InnoDB相关 | innodb表空间存放目录 |
innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend | InnoDB相关 | InnoDB将数据保存在一个或者多个数据文件中成为表空间 |
innodb_flush_log_at_trx_commit = 1 | InnoDB相关 | 如果设置为 1 ,InnoDB 会在每次提交后刷新(fsync)事务日志到磁盘上,枚举类型 取值范围:0,1,2 默认值:1 |
innodb_log_buffer_size = 8M | InnoDB相关 | InnoDB log buffer大小 取值范围:1048576 - 4294967295 默认值:16777216 |
innodb_log_file_size = 500M | InnoDB相关 | 事物日志大小 取值范围:4194304-512GB 默认值:50331648 |
innodb_log_files_in_group = 2 | InnoDB相关 | 在日志组中的文件总数.通常来说 2~3 是比较好的 取值范围:2-100 默认值:2 |
innodb_log_group_home_dir = filename | InnoDB相关 | InnoDB 的日志文件所在位置 |
innodb_lock_wait_timeout = 50 | InnoDB相关 | InnoDB 事务在被回滚之前可以等待一个锁定的超时秒数 取值范围: 1-1073741824 默认值:50 |
innodb_flush_method = O_DSYNC | InnoDB相关 | InnoDB 用来刷新日志的方法.表空间总是使用双重写入刷新方法 取值范围: windows:unbuffered/normal Unix: fsync/O_DSYNC/littlesync/nosync/O_DIRECT/O_DIRECT_NO_FSYNC 默认值: unbuffered(windows)/fsync(unix) |
innodb_force_recovery=1 | InnoDB相关 | 如果你发现 InnoDB 表空间损坏, 设置此值为一个非零值可能帮助你导出你的表 取值范围:0-6 默认值:0 |
innodb_fast_shutdown | InnoDB相关 | 速 InnoDB 的关闭 |
innodb_thread_concurrency = 8 | InnoDB相关 | 此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量 取值范围:0-100 默认值:0(无限并发) |
参数值 | 参数用途 |
---|---|
default-character-set = utf8 | 数据库字符集 |
connect-timeout = 3 | 连接超时时间,单位秒 取值范围:2-31536000 默认值:10 |
pid_file = filename | pid文件位置 |
参数值 | 参数用途 |
---|---|
open-files-limit = 8192 | 每个进程的可打开文件数量 取值范围:0-操作系统上限 默认值:5000 |