Mysql /etc/my.cnf参数详解(二)

#buffer相关

#buffer pool根据实际内存大小调整,标准为物理内存的50%

innodb_buffer_pool_size=15996M //默认值128M,innodb_buffer_pool_size | 134217728

key_buffer_size = 33554432

#根据物理内存大小设置 确保每个instance内的内存2G左右 <5000 1,>=5000 <9000 2,>=9000 <17000 4,>=17000 <33000 8,>=33000 16

innodb_buffer_pool_instances=16 //https://blog.csdn.net/qq_32099833/article/details/123616533 多个instance实例的原理

read_rnd_buffer_size = 524288

sort_buffer_size = 524288

query_cache_size=0 //查询的缓存大小设置;

#安全相关

default_password_lifetime=0 //一个全局的MySQL密码过期时间,单位为天,也就是每过N天,就需要修改密码,否则会在连接后收到一个密码过期的报错。如果该参数设置为0,即表示密码永不过期。

#复制相关

// https://blog.csdn.net/j_ychen/article/details/109451373

//为了解决主从复制延迟问题,在MySQL 5.7中,引入了基于组提交的并行复制(Enhanced Multi-threaded Slaves)

skip-slave-start = 0 //禁用skip-slave-start,slave进程会随着mysql启动而启动。skip-slave-start为开启

slave-parallel-type = LOGICAL_CLOCK //mysql在5.7中加入了slave_parallel_type,默认值是database,需要改成基于时钟逻辑的LOGICAL_CLOCK

sync_master_info = 1000

//当 sync_master_info>0,slave在N个sync_master_info事件完成后更新mysql.slave_master_info表;当 sync_master_info = 0,不更新表

master-info-repository = TABLE

//默认值:FILE,当设置为TABLE,slave会将master的状态和连接信息写入 mysql.slave_master_info 表,当设置为FILE ,slave会将master的状态和连接信息写入 master.info 文件。

//这个参数只有在复制线程停止工作才能更改。当使用多复制通道(multiple replication channels)的时候,这个参数必须设置成TABLE.

relay-log = /data/mysql/log/mysql-relay-bin

//relay-log的结构和binlog非常相似,只不过他多了一个master.info和relay-log.info的文件。

//master.info记录了上一次读取到master同步过来的binlog的位置,以及连接master和启动复制必须的所有信息。

//relay-log.info记录了文件复制的进度,下一个事件从什么位置开始,由sql线程负责更新。

relay-log-info-repository = TABLE

//默认值:FILE 当设置为TABLE,slave在relay_log中的pos信息将写入 mysql.slave_relay_log_info 表 当设置为FILE ,slave在relay_log中的pos信息将写入 relay-log.info 文件。

//这个参数只有在复制线程停止工作才能更改。当使用多复制通道(multiple replication channels)的时候,这个参数必须设置成TABLE.

relay-log-recovery = 1

//假设当从库意外宕机后,同时从库的relay log也一起损坏了,而主库的日志已经传到了从库,只是从库还没有来得及应用这些日志,那么从库该如何处理?

//在从库中将relay_log_recovery不设置或者设置为off,如果碰到上面的情形,从库会丢失那些没有应用的日志,主从会不一致。

//在从库中将relay_log_recovery设置为on,假如果碰到上面的情形,从库会自动放弃所有未执行的relay log,重新生成一个relay //log,并将从库的io线程的position重新指向新的relay //log。并将sql线程的position退回到跟io线程的position保持一致,重新开始同步,这样在从库中事务不会丢失。这个参数建议开启。

relay_log_index = mysql-relay-bin.index //同relay_log,定义relay_log的位置和名称;一般和relay-log在同一目录

slave_exec_mode = STRICT

//MySQL主从同步中,经常遇到的三种同步错误:

//1、在master上delete一条记录,若在slave上没有这条数据,会出现报错。

//2、在master上insert一条记录,若在slave上主键值已经存在,会出现报错。

//3、在master上update一条记录,若在slave上没有这条数据,会出现报错。

//如果slave的my.cnf已经配置了slave_skip_errors参数,则可以自动跳过报错,如果没有配置该参数,则可以用以下方法解决:

//mysql> set global slave_exec_mode='idempotent';

//默认值是strict(严格模式)

slave-parallel-workers = 16 //slave_parallel_workers数,默认为0,按需修改。

slave_net_timeout = 120

//slave_net_timeout系统变量指定在slave认为连接断开、中止读取并尝试重新连接之前,slave等待来自master的更多数据或心跳信号的秒数。默认值为60秒(一分钟)。在MySQL5.7.7之//前,默认值是3600秒(一小时)。

slave_pending_jobs_size_max = 1073741824

//在多线程副本(slave_parallel_workers > 0)上,确保系统变量 slave_pending_jobs_size_max 的值等于或大于复制源中系统变量 max_allowed_packet //的设置。slave_pending_jobs_size_max 的默认设置应该是128M,是 max_allowed_packet 的默认设置(64M)的两倍。

slave_preserve_commit_order = OFF

//在启用slave_preserve_commit_order的情况下,执行线程将等待,直到提交之前的所有事务。当线程等待其他工作线程提交其事务时,它将其状态报告为等待前一个事务提交。(在MySQ//L 5.7.8之前,它显示为Waiting for its turn to commit。)在多线程SLAVE上启用此模式可确保它永远不会进入源不处于的状态。这支持将复制用于读取横向扩展。

slave_rows_search_algorithms = INDEX_SCAN,HASH_SCAN

相关推荐
limingade2 分钟前
ADB识别手机系统弹授权框-如何处理多重弹框叠加和重叠问题
adb·智能手机·android自动授权确认·安卓弹框授权·自动化点击android授权框
FREEDOM_X8 分钟前
系统调试——ADB 工具
adb
曼汐 .4 小时前
数据库管理与高可用-MySQL高可用
数据库·mysql
MickeyCV4 小时前
使用Docker部署MySQL&Redis容器与常见命令
redis·mysql·docker·容器·wsl·镜像
刘 大 望4 小时前
数据库-联合查询(内连接外连接),子查询,合并查询
java·数据库·sql·mysql
LiRuiJie5 小时前
深入剖析MySQL锁机制,多事务并发场景锁竞争
数据库·mysql
睡觉待开机5 小时前
0. MySQL在Centos 7环境安装
数据库·mysql·centos
一叶知秋哈6 小时前
Java应用Flink CDC监听MySQL数据变动内容输出到控制台
java·mysql·flink
androidwork7 小时前
Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
android·java·kotlin·androidx
每次的天空7 小时前
Android第十三次面试总结基础
android·面试·职场和发展