MySQL 的配置文件详解
MySQL 的配置文件(通常是 my.cnf 或 my.ini)是控制 MySQL 服务器举动的告急文件。不同操作系统的配置文件位置可能不同:[*]Linux/Unix:/etc/my.cnf、/etc/mysql/my.cnf、/usr/local/mysql/etc/my.cnf 或 ~/.my.cnf
[*]Windows:C:\ProgramData\MySQL\MySQL Server X.Y\my.ini(具体路径取决于安装版本)
一、配置文件结构
配置文件由多个 section(分组) 组成,每个 section 对应不同的组件或客户端工具。常见 section 如下:
1.
MySQL 服务器核心配置(必填)。
# 基础配置
port = 3306 # 监听端口(默认3306)
datadir = /var/lib/mysql # 数据存储目录
socket = /tmp/mysql.sock # Unix socket 文件路径
user = mysql # 运行MySQL的系统用户
# 字符集配置
character-set-server = utf8mb4# 服务器默认字符集
collation-server = utf8mb4_unicode_ci# 默认排序规则
# 日志配置
log-error = /var/log/mysql/error.log# 错误日志路径
slow_query_log = 1 # 开启慢查询日志
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2 # 慢查询阈值(秒)
# 内存与性能
innodb_buffer_pool_size = 1G # InnoDB缓冲池大小(建议设为物理内存的50-80%)
innodb_log_file_size = 256M # InnoDB日志文件大小
max_connections = 200 # 最大并发连接数
thread_cache_size = 10 # 线程缓存数量
# 安全相关
skip_name_resolve = 1 # 禁用DNS反向解析(提升连接速度)
secure_file_priv = /var/lib/mysql-files# 限制文件导入导出路径
2.
客户端工具(如 mysql 下令行)的默认配置。
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4
3.
mysql 下令行客户端的配置。
auto-rehash # 启用自动补全
prompt = "\\u@\\h:\\d> "# 自定义提示符(用户@主机:数据库)
4.
备份工具 mysqldump 的配置。
quick # 逐行导出数据(减少内存占用)
max_allowed_packet = 256M# 最大数据包大小
二、关键配置项详解
1. 内存与性能优化
[*] innodb_buffer_pool_size
InnoDB 引擎的核心缓存,存储数据和索引。发起设置为物理内存的 50-80%。
[*] innodb_flush_log_at_trx_commit
控制事务日志刷新计谋:
[*]0:每秒写入日志并刷新到磁盘(性能最佳,可能丢失1秒数据)。
[*]1:每次事务提交都写入并刷新(最安全,性能最低)。
[*]2:每次提交写入日志,但每秒刷新到磁盘(折中方案)。
[*] key_buffer_size
MyISAM 表的索引缓存巨细(若使用 MyISAM 表需调整)。
2. 毗连管理
[*] max_connections
最大并发毗连数。需根据应用需求调整,过高可能导致内存耗尽。
[*] wait_timeout 和 interactive_timeout
非交互式和交互式毗连的空闲超时时间(默认28800秒=8小时)。
3. 二进制日志(主从复制)
server-id = 1 # 服务器唯一ID(主从不能重复)
log_bin = /var/log/mysql/mysql-bin.log# 开启二进制日志
expire_logs_days = 7 # 日志保留天数
binlog_format = ROW # 推荐使用ROW格式(数据一致性更强)
4. 查询缓存(MySQL 8.0已废弃)
query_cache_type = 0 # 关闭查询缓存(8.0已移除该功能)
5. 其他告急配置
[*] tmp_table_size 和 max_heap_table_size
控制内存临时表的最大巨细,超出后会转为磁盘表。
[*] sql_mode
界说 SQL 严格模式,比方:
sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
三、配置文件示例
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
port = 3306
# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# InnoDB配置
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
# 连接管理
max_connections = 300
thread_cache_size = 20
wait_timeout = 600
# 日志
log-error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
# 安全
skip_name_resolve = 1
secure_file_priv = /var/lib/mysql-files
default-character-set = utf8mb4
四、注意事项
[*]修改配置后需重启 MySQL:sudo systemctl restart mysql # Linux
[*]验证配置:
通过 SHOW VARIABLES LIKE 'variable_name'; 确认配置生效。
[*]版本差别:
MySQL 不同版本(如 5.7 vs 8.0)的默认配置或参数可能不同,需参考官方文档。
通过公道配置,可以显著优化 MySQL 的性能和稳定性!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]