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

相关推荐
Hi_Lyn38 分钟前
MySQL表的增删改查基础版
数据库·mysql
鸿蒙布道师2 小时前
鸿蒙NEXT开发土司工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
小小鸭程序员2 小时前
Spring Boot整合MyBatis-Plus实现CRUD操作教程
java·spring boot·python·mysql·spring
智想天开2 小时前
11.使用依赖注入容器实现松耦合
android
快来卷java3 小时前
MySQL篇(四)事务相关知识详解
java·数据库·mysql·链表
振鹏Dong3 小时前
MySQL系统库汇总
数据库·mysql
yunteng5214 小时前
音视频(四)android编译
android·ffmpeg·音视频·x264·x265
tangweiguo030519874 小时前
(kotlin) Android 13 高版本 图片选择、显示与裁剪功能实现
android·开发语言·kotlin
匹马夕阳4 小时前
(一)前端程序员转安卓开发分析和规划建议
android·前端
Kika写代码4 小时前
【Android】UI开发:XML布局与Jetpack Compose的全面对比指南
android·xml·ui