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

相关推荐
恒辉信达4 分钟前
hhdb数据库介绍(8-4)
服务器·数据库·mysql
萌面小侠Plus36 分钟前
Android笔记(三十三):封装设备性能级别判断工具——低端机还是高端机
android·性能优化·kotlin·工具类·低端机
慢慢成长的码农36 分钟前
Android Profiler 内存分析
android
大风起兮云飞扬丶37 分钟前
Android——多线程、线程通信、handler机制
android
L725643 分钟前
Android的Handler
android
清风徐来辽43 分钟前
Android HandlerThread 基础
android
HerayChen2 小时前
HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
android·macos·智能手机
顾北川_野2 小时前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
hairenjing11232 小时前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小黄人软件2 小时前
android浏览器源码 可输入地址或关键词搜索 android studio 2024 可开发可改地址
android·ide·android studio