MySQL8配置文件通用模板🧲
MySQL8配置文件通用模板🧲
本文整理一份MySQL8通用配置文件my.cnf,只是相对通用基础的配置,还需自己具体分析修改。
MySQL8部署参考👉:https://www.cnblogs.com/haoee/p/19386401 (麒麟arm版)
https://www.cnblogs.com/haoee/p/16944366.html (X86版)
配置文件如下:(基于48C192G服务器)
主库:
[root@localhost ~]# vim /etc/my.cnf
[client]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock
[mysqld]
# ===== 基础配置 =====
user=mysql
basedir=/usr/local/mysql-8.0.44
datadir=/usr/local/mysql-8.0.44/data
port=3307
socket=/usr/local/mysql-8.0.44/run/mysql.sock
pid-file=/usr/local/mysql-8.0.44/run/mysqld.pid
# ===== 表名大小写 =====
lower_case_table_names=1 # Linux 环境统一表名大小写,避免跨环境问题
# ===== 主从配置 =====
server-id=10
log-bin=mysql-bin
binlog_format=ROW # 行级复制,避免函数/触发器不一致
binlog_row_image=FULL # 记录完整行,安全优先
sync_binlog=1 # 每次事务同步 binlog,主库必开
max_binlog_size=1G
binlog_expire_logs_seconds=2592000 # 30 天自动清理,避免 binlog 爆盘
relay-log=/usr/local/mysql-8.0.44/data/relay-bin
log_replica_updates=ON # 8.0 正确参数,级联复制必须
# ===== GTID 核心 =====
gtid_mode=ON
enforce_gtid_consistency=ON # 禁止不安全语句,保证 GTID 可用
# ===== 日志配置 =====
log-error=/usr/local/mysql-8.0.44/logs/error.log
slow-query-log=1
slow-query-log-file=/usr/local/mysql-8.0.44/logs/mysql-slow.log
long_query_time=2 # 超过 2s 记录,便于发现慢 SQL
log_error_verbosity=2 # 记录 error + warning,不刷屏
# ===== InnoDB 核心配置 =====
innodb_buffer_pool_size=120G # ≈ 60% 内存,预留系统/备份空间,稳态值
innodb_buffer_pool_instances=24 # BP 实例不是越多越好,过多反而增加管理开销
innodb_log_file_size=2G # 单个 redo 文件大小,控制 crash recovery 时间
innodb_log_files_in_group=2 # redo 总量=4G,稳定优先
innodb_log_buffer_size=64M # 大事务写入更平滑
innodb_file_per_table=ON # 表独立空间,方便回收和迁移
innodb_flush_log_at_trx_commit=1 # 每次提交刷盘,保证事务持久性
innodb_flush_method=O_DIRECT # 避免 OS cache 与 InnoDB 双缓存
innodb_page_size=16K # 官方默认页大小,最稳定
# ===== InnoDB 并发 & IO =====
innodb_io_capacity=3000 # InnoDB 认为的“正常”磁盘 IOPS,偏保守
innodb_io_capacity_max=6000 # 后台刷脏页上限,避免 IO 抢占前台
innodb_read_io_threads=16 # 读 IO 线程,48C 下合适
innodb_write_io_threads=16 # 写 IO 线程,避免过多导致抖动
innodb_thread_concurrency=0 # 由 InnoDB 自动调度,8.0 推荐
# ===== Undo(8.0 稳态关键)=====
innodb_undo_tablespaces=4 # undo 独立表空间,防止系统表空间膨胀
innodb_undo_log_truncate=ON # 自动回收 undo,长期运行必开
# ===== 连接与线程(稳定性关键)=====
max_connections=1000 # 防止连接数过高导致内存雪崩
max_connect_errors=10000
thread_cache_size=256 # 复用线程,降低频繁创建/销毁开销
table_open_cache=8192
open_files_limit=65535
wait_timeout=1800 # 空闲连接自动释放
interactive_timeout=1800
# ===== 内存 & 临时表(防 OOM)=====
tmp_table_size=128M # 单连接临时表上限,避免内存被吃光
max_heap_table_size=128M # 与 tmp_table_size 配套
internal_tmp_mem_storage_engine=TempTable # 8.0 默认引擎,更稳定
max_allowed_packet=1G # 支持大事务/大字段,避免中断
# ===== 字符集配置 =====
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci # MySQL 8.0 官方默认排序规则,稳定可靠
# ===== 认证策略 =====
authentication_policy=mysql_native_password # 兼容旧客户端,减少认证问题
# ===== 事务 =====
#transaction_isolation=REPEATABLE-READ # 默认隔离级别,保持一致性
从库:
[client]
default-character-set=utf8mb4
socket=/usr/local/mysql-8.0.44/run/mysql.sock
[mysqld]
# ========== 基础配置 =====
user=mysql
basedir=/usr/local/mysql-8.0.44
datadir=/usr/local/mysql-8.0.44/data
port=3307
socket=/usr/local/mysql-8.0.44/run/mysql.sock
pid-file=/usr/local/mysql-8.0.44/run/mysqld.pid
# ======== 表名大小写 =====
lower_case_table_names=1 # 主从必须一致,否则直接炸
# ======== 主从复制 =====
server-id=11 # ★ 每个实例唯一,不能和主库重复
read_only=ON # 防止误写(超级用户除外)
super_read_only=ON # 连 SUPER 用户也禁止写,更稳
# ======== 二进制日志(GTID 从库必须)=====
log-bin=mysql-bin # ★ GTID 模式下,从库也必须开 binlog
binlog_format=ROW
binlog_row_image=FULL
sync_binlog=1 # 稳态优先,避免 crash 后位点异常
max_binlog_size=1G
binlog_expire_logs_seconds=2592000
relay-log=/usr/local/mysql-8.0.44/data/relay-bin
relay-log-recovery=ON # 从库 crash 自动恢复 relay log(非常重要)
log_replica_updates=ON # ★ GTID 链路必开
# ======== GTID 核心 =====
gtid_mode=ON
enforce_gtid_consistency=ON
skip_replica_start=ON # ★ 启动不自动拉主库,避免误连
# ======= 日志配置 =====
log-error=/usr/local/mysql-8.0.44/logs/error.log
slow-query-log=1
slow-query-log-file=/usr/local/mysql-8.0.44/logs/mysql-slow.log
long_query_time=2
log_error_verbosity=2
# ===== InnoDB 核心配置 =====
innodb_buffer_pool_size=120G # 从库可与主库一致,承担读
innodb_buffer_pool_instances=24
innodb_log_file_size=2G
innodb_log_files_in_group=2
innodb_log_buffer_size=64M
innodb_file_per_table=ON
innodb_flush_log_at_trx_commit=1 # 从库也保持强一致,避免复制错乱
innodb_flush_method=O_DIRECT
innodb_page_size=16K
# ===== InnoDB 并发 & IO =====
innodb_io_capacity=3000
innodb_io_capacity_max=6000
innodb_read_io_threads=16
innodb_write_io_threads=16
innodb_thread_concurrency=0
# ===== Undo(8.0 稳态关键)=====
innodb_undo_tablespaces=4
innodb_undo_log_truncate=ON
# ===== 连接与线程 =====
max_connections=1000
max_connect_errors=10000
thread_cache_size=256
table_open_cache=8192
open_files_limit=65535
wait_timeout=1800
interactive_timeout=1800
# ===== 内存 & 临时表 =====
tmp_table_size=128M
max_heap_table_size=128M
internal_tmp_mem_storage_engine=TempTable
max_allowed_packet=1G
# ===== 字符集 =====
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
# ===== 认证策略 =====
authentication_policy=mysql_native_password
# ===== 事务 =====
#transaction_isolation=REPEATABLE-READ

浙公网安备 33010602011771号