当前位置: 首页 > news >正文

my.cnf详解

文章目录

  • 一、常见配置
  • 二、最小配置
  • 三、主从配置
    • (1)主库
    • (2)从库

一、常见配置

适用于大多数场景,包含 基础连接存储引擎日志字符集等关键配置,可直接复制使用

[mysqld]
# 基础配置
datadir = /var/lib/mysql  # MySQL 数据存储目录(容器内默认路径,需与卷挂载一致)
socket = /var/run/mysqld/mysqld.sock  # 套接字文件路径
pid-file = /var/run/mysqld/mysqld.pid  # PID 文件路径# 字符集配置(避免中文乱码)
character-set-server = utf8mb4  # 支持所有 Unicode 字符(含 emoji)
collation-server = utf8mb4_unicode_ci  # 对应字符集的排序规则
init_connect = 'SET NAMES utf8mb4'  # 初始化连接时设置字符集# 连接配置
max_connections = 1000  # 最大连接数(根据业务需求调整,默认151)
wait_timeout = 600  # 连接空闲超时时间(秒,默认28800)
interactive_timeout = 600  # 交互式连接超时时间(秒,默认28800)# 存储引擎与表配置
default-storage-engine = InnoDB  # 默认存储引擎(推荐 InnoDB 支持事务)
innodb_file_per_table = 1  # 每张表独立存储为一个文件(便于管理和备份)
innodb_buffer_pool_size = 1G  # InnoDB 缓冲池大小(建议设为容器内存的 50%-70%,如 2G 内存设 1G)
innodb_log_file_size = 256M  # InnoDB 日志文件大小(默认48M,调大减少日志切换频率)
innodb_log_buffer_size = 64M  # InnoDB 日志缓冲区大小(默认16M)
innodb_flush_log_at_trx_commit = 1  # 事务提交时立即写入磁盘(1=安全,0=性能优先,2=折中)# 日志配置(便于问题排查)
slow_query_log = 1  # 开启慢查询日志(默认0关闭)
slow_query_log_file = /var/log/mysql/slow.log  # 慢查询日志路径
long_query_time = 2  # 慢查询阈值(秒,超过该时间记录日志)
log_error = /var/log/mysql/error.log  # 错误日志路径(必须配置,排查启动故障)
general_log = 0  # 关闭通用查询日志(默认0,开启会占用大量磁盘)# 性能优化配置
query_cache_type = 0  # 关闭查询缓存(MySQL 8.0 已移除,5.7 建议关闭)
query_cache_size = 0  # 查询缓存大小(0=禁用)
tmp_table_size = 64M  # 临时表最大大小(默认16M,避免临时表过大导致磁盘写入)
max_heap_table_size = 64M  # 内存表最大大小(默认16M,与 tmp_table_size 保持一致)# 安全配置
skip-name-resolve  # 禁用 DNS 反向解析(加快连接速度,避免解析失败问题)
max_allowed_packet = 64M  # 允许最大数据包大小(默认4M,需根据业务调整,如上传大文件)[mysql]
default-character-set = utf8mb4  # MySQL 客户端默认字符集[mysqld_safe]
log-error = /var/log/mysql/error.log  # 安全模式下错误日志路径
socket = /var/run/mysqld/mysqld.sock  # 安全模式下套接字路径

二、最小配置

[mysqld]
# 数据存储目录(Docker 容器内默认路径,必须正确)
datadir = /var/lib/mysql# 套接字文件路径(用于本地连接)
socket = /var/run/mysqld/mysqld.sock# PID 文件路径(记录 MySQL 进程 ID)
pid-file = /var/run/mysqld/mysqld.pid# 字符集配置(避免中文乱码,推荐 utf8mb4)
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

三、主从配置

为了突出问题的要点,本例在最小配置的基础上修改。

(1)主库

[mysqld]
# 数据存储目录
datadir = /var/lib/mysql
# 套接字文件路径
socket = /var/run/mysqld/mysqld.sock
# PID 文件路径
pid-file = /var/run/mysqld/mysqld.pid
# 字符集配置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci# ----------------- 新增配置 -----------------
# 服务器唯一ID (1-4294967295 之间的整数)
server-id = 1# ----------------- 新增配置 -----------------
# 开启二进制日志(主从复制必需)
log_bin = /var/log/mysql/mysql-bin.log
# 二进制日志索引文件
log_bin_index = /var/log/mysql/mysql-bin.index

注意,一般都没有权限,要到容器内指定权限
docker exec -it <容器id> /bin/bash
在容器内执行以下命令:创建日志目录 + 授权给 mysql 用户

mkdir -p /var/log/mysql # 递归创建目录(包括父目录)
chown -R mysql:mysql /var/log/mysql # 赋予 mysql 用户读写权限
chmod 755 /var/log/mysql # 目录权限设置为 755(只读+执行)

(2)从库

[mysqld]
# ===================== 基础配置(与主库一致) =====================
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pidcharacter-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'# ===================== 从库核心配置 =====================
# 1. 从库唯一ID(必须与主库、其他从库不同,建议取值范围:100-200)
server-id = 101# 2. 中继日志配置(从库接收主库二进制日志后,存储为中继日志,再应用到从库)
relay-log = /var/log/mysql/relay-bin  # 中继日志文件名前缀
relay-log-index = /var/log/mysql/relay-bin.index  # 中继日志索引文件
relay-log-info-file = /var/log/mysql/relay-log.info  # 中继日志信息文件(记录复制进度)# 3. 复制过滤配置(可选,仅同步需要的数据库/表)
# 忽略所有数据库(优先级高于白名单,谨慎使用)
# replicate-ignore-db = mysql
# 仅同步指定数据库(多个数据库用逗号分隔)
# replicate-do-db = test_db1
# replicate-do-db = test_db2
# 仅同步指定表(格式:数据库.表)
# replicate-do-table = test_db1.user
# 忽略指定表
# replicate-ignore-table = test_db1.log# 4. 从库只读配置(防止从库写入数据,确保主从数据一致性)
read-only = 1  # 开启只读模式(仅允许 SUPER 权限用户写入)
super-read-only = 1  # 严格只读(SUPER 权限用户也无法写入,MySQL 8.0+ 支持)# 5. 其他优化配置
max_connections = 1000  # 最大连接数(根据从库负载调整)
innodb_buffer_pool_size = 1G  # InnoDB 缓冲池(建议为从库内存的 50%-70%)
log_error = /var/log/mysql/error.log  # 错误日志(排查复制故障必备)# 6. 主从复制 GTID 模式配置(可选,推荐开启,便于复制管理)
gtid_mode = ON  # 开启 GTID 模式
enforce_gtid_consistency = ON  # 强制 GTID 一致性(防止非 GTID 事务)
http://www.dtcms.com/a/610148.html

相关文章:

  • 做网站时最新菜品的背景图wordpress连接ftp
  • Java是编译型语言还是解释型语言 | 深入解析Java的执行机制与性能特点
  • 积分模式陷兑付危机:传统实体商业的“承诺陷阱”与破局之道
  • 网页版预编译SQL转换工具
  • 基于Springboot+vue的心理健康测评预约心理咨询师论坛系统
  • MySQL数据库入门指南
  • 品牌营销型网站建设策划工程在哪个网站做推广比较合适
  • 安卓 4.4.2 电视盒子 ADB 设置应用开机自启动
  • 绝对值伺服“编码器计数值溢出“保护报警
  • 小程序下载图片问题处理
  • 网站首页被k网站信息同步
  • 线性代数 - 叉积的分量形式与矩阵形式
  • 做网站业务的 怎么跑客户元氏网站制作
  • 2025-11-14 学习记录--Python-特征归一化方法(Min-Max或StandardScaler)
  • 一款基于鲁班猫和STM32的自主导航实践
  • Cognex VisionPro 相机工具集成代码分析笔记
  • 五大3D软件深度横评:Maya、3DMax、Cinema 4D、Houdini与Blender
  • 网站可以不备案有口碑的武进网站建设
  • 重庆建网站 私单建设银行人力资源系统网站怎么进
  • 基于ADP自适应动态规划算法的控制系统matlab性能仿真,采用RNN进行控制对象参数辨识
  • 宝塔面板建站教程中国建设银行北京天竺支行网站
  • 本地建站教程企业邮箱邮箱
  • 开源的力量:如何用开源技术构建高效IT架构?
  • 如何降低程序的时间复杂度,提高运行时效?
  • openEuler系统下sudo权限配置与使用指南
  • 一个网站好不好做网站赔钱了
  • 受欢迎的丹阳网站建设有哪些调查网站可以做兼职
  • 品牌型网站成功案例图片网站建设的流程分析
  • 手机网站用什么域名潍坊网站建设 世纪环球16楼
  • 17、grafana安装