目录
一.模板
二.注释
1.基本
2.日志相关
3.双一标准(sync_binlog 和 innodb_flush_log_at_trx_commit)
4.事务
5.GTID与主从复制
6.表空间
7.优化
一.模板(数值仅供参考)
一.基本
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
server_id=1
port=3306
socket=/tmp/mysql.sock
secure-file-priv=/tmp
default_storage_engine=innodb
#innodb_read_only=0
read_only=0
super_read_only=0
二.日志相关
log_error=/data/mysql/mysql.err
log_timestamps=system
innodb_print_all_deadlocks = 1
log_bin=/data/mysql/mysql-bin
#log_bin_basename
binlog_format=row
binlog_cache_size = 2M
max_binlog_cache_size = 8M
max_binlog_size=1073741824
expire_logs_days=15
sync_binlog=1
slow_query_log=1
slow_query_log_file=/data/mysql/slow.log
long_query_time=0.1
log_queries_not_using_indexes=1
general_log=1
general_log_file=/data/mysql/general.log
#事务(REDO)日志
innodb_log_buffer_size=128M
innodb_log_file_size=48M
innodb_log_files_in_group = 3
三.双一标准(sync_binlog 和 innodb_flush_log_at_trx_commit)
#最高安全模式
##sync_binlog=1
innodb_flush_log_at_trx_commit=1
Innodb_flush_method=O_DIRECT
#最高性能
##innodb_flush_log_at_trx_commit=0
##Innodb_flush_method=fsync
四.事务
autocommit=0
transaction_isolation=REPEATABLE READ
五.GTID与主从复制
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
#主主复制
auto_increment_increment=2
auto_increment_offset=1
relay_log_purge =0
slave-skip-errors = 1032,1062,1007
#从库多线程MTS
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
六.表空间
innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend
innodb_autoextend_increment=64
innodb_file_per_table= 1
七.优化
skip-name-resolve
##innodb_flush_log_at_trx_commit=1
innodb_buffer_pool_size=2048M
key_buffer_size=64M
max_connections=1024
#max_used_connections
max_allowed_packet=32M
thread_cache_size=32
query_cache_size=128M
query_cache_type=1
query_cache_limit =50M
query_cache_min_res_unit=4096
wait_timeout=60
interactive_timeout=1200
back_log=1024
max_connect_errors=2000
sort_buffer_size=1M
join_buffer_size=2M
innodb_thread_concurrency=8
read_buffer_size =1M
read_rnd_buffer_size =1M
bulk_insert_buffer_size =8M
二.注释
1.基本
user=mysql
mysql启动时使用的用户
basedir=/usr/local/mysql
安装路径
datadir=/data/mysql
数据路径
server_id=1
标识数据库不同实例
port=3306
端口号
socket=/tmp/mysql.sock
本地socket连接的文件路径及文件名
secure-file-priv=/tmp
导入导出(select into outfile)权限路径
default_storage_engine=innodb
默认存储引擎
#innodb_read_only=0
read_only=0
只读模式开关,限定的是普通用户
super_read_only=0
只读模式开关,限定的是普通用户
2.日志相关
log_error=/data/mysql/mysql.err
错误日志的路径及文件名,默认开启
log_timestamps=system
控制错误日志、慢查询日志等日志中的显示时间。但它不会影响查询日志和慢日志写到表(mysql.general_log, mysql.slow_log) 中的显示时间
innodb_print_all_deadlocks = 1
死锁监控信息记录到错误日志的开关,1表示写进错误日志
log_bin=/data/mysql/mysql-bin
binlog日志(开关)路径及文件名
#log_bin_basename
binlog_format=row
binlog日志的格式
binlog_cache_size = 2M
为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存, 提高记录bin-log的效率。没有什么大事务,dml也不是很频繁的情况下可以设置小一点,如果事务大而且多,dml操作也频繁,则可以适当的调大一点。前者建议是--1M,后者建议是:即 2--4M
max_binlog_cache_size = 8M
表示的是binlog 能够使用的最大cache 内存大小
max_binlog_size=1073741824
max_binlog_size= 512M //指定binlog日志文件的大小,如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志。你不能将该变量设置为大于1GB或小于4096字节。默认值是1GB。在导入大容量的sql文件时,建议关闭sql_log_bin,否则硬盘扛不住,而且建议定期做删除。
expire_logs_days=15
binlog日志文件的保留时间
sync_binlog=1
"双一标准,每次事务提交都立即刷写binlog到磁盘。
sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新。这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。
sync_binlog>0,表示每sync_binlog次事务提交,MySQL调用文件系统的刷新操作将缓存刷下去。
sync_binlog=1是最安全的,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置"
slow_query_log=1
慢查询日志开关
slow_query_log_file=/data/mysql/slow.log
慢查询日志路径及文件名
long_query_time=0.1
设置慢查询的时间
log_queries_not_using_indexes=1
没走索引的语句也记录到慢查询日志
general_log=1
常规(查询)日志开关,默认不开启,一般也不开启
general_log_file=/data/mysql/general.log
常规日志路径及文件名
#事务(REDO)日志
innodb_log_buffer_size=128M
此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,对于较大的事务,可以增大缓存大小。
innodb_log_file_size=48M
"设置 ib_logfile0 ib_logfile1
此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能."
innodb_log_files_in_group = 3
为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3
3.双一标准(sync_binlog 和 innodb_flush_log_at_trx_commit)
#最高安全模式
##sync_binlog=1
innodb_flush_log_at_trx_commit=1
主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0、1、2三个
1,每次事物的提交都会引起日志文件写入、flush磁盘的操作,确保了事务的ACID;flush 到操作系统的文件系统缓存 fsync到物理磁盘;
0,表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入文件系统缓存并且秒fsync磁盘一次;
2,每次事务提交引起写入文件系统缓存,但每秒钟完成一次fsync磁盘操作。
Innodb_flush_method=O_DIRECT
控制的是,log buffer 和data buffer,刷写磁盘的时候是否经过文件系统缓存,
O_DIRECT :数据缓冲区写磁盘,不走OS buffer;
fsync :日志和数据缓冲区写磁盘,都走OS buffer;
O_DSYNC :日志缓冲区写磁盘,不走 OS buffer
#最高性能
##sync_binlog=1
##innodb_flush_log_at_trx_commit=0
##Innodb_flush_method=fsync
4.事务
autocommit=0
关闭事务自动提交
transaction_isolation=REPEATABLE READ
事务隔离级别
5.GTID与主从复制
gtid-mode=on
启用gtid类型,否则就是普通的复制架构
enforce-gtid-consistency=true
强制GTID的一致性
log-slave-updates=1
slave更新是否记入日志
auto_increment_increment=2
自增步长,主主复制中,一般有n台主MySQL就填n
auto_increment_offset=1
自增偏移量,主主复制中,一般第m台主MySQL就填m。
relay_log_purge =0
当 relay_log_purge=1时,旧relay logs会在SQL线程执行完毕后被自动删除;
当 relay_log_purge=0时,旧的 relay log 则会被保留。虽然这并不会影响从库复制本身,但还是会有坑:由于崩溃或停止 MySQL 时,SQL 线程可能没有执行完全部的 relay log,最后一个 relay log 中的一部分数据会被重新下载到新的文件中。也就是说,这部分数据重复了两次。如果 SQL 跟得很紧,则可能在 IO 线程写入 relay log ,但还没有将同步到磁盘时,就已经读取执行了。这时,就会造成新的文件和旧的文件中少了一段数据。
slave-skip-errors = 1032,1062,1007
从库重做SQL出错时设置跳过的错误操作编号
1007:对象已存在
1032:无法执行DML
1062:主键冲突,或约束冲突"
#从库多线程MTS
slave-parallel-type=LOGICAL_CLOCK
本地时钟,支持基于事务级别的sql并发回放
slave-parallel-workers=16
并发回放线程个数,取cpu核心个数的一半
master_info_repository=TABLE
master_info以表的方式存储信息
relay_log_info_repository=TABLE
relay_log_info以表的方式存储信息
relay_log_recovery=ON
开启relay_log的恢复功能
6.表空间
innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend
共享表空间文件设置,8.0前undo log存储在共享表空间
innodb_autoextend_increment=64
共享表空间自增大小设置,初始化前可写入cnf
innodb_file_per_table= 1
开启独立表空间模式
7.优化
*****
skip-name-resolve
禁止 MySql Server 对外部连接进行 DNS 解析,使用这一选项可以消除 MySql 进行 DNS 解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求
##innodb_flush_log_at_trx_commit=1
innodb_buffer_pool_size=2048M
"缓冲区池,一般建议最多是物理内存的75-80%,InnoDB使用该参数指定大小的内存来缓冲数据和索引。
对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%,一般我们建议不要超过物理内存的70%。"
key_buffer_size=64M
指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度
max_connections=1024
最大连接数
#max_used_connections
合理范围0.9max<=$
1.基本
user=mysql
mysql启动时使用的用户
basedir=/usr/local/mysql
安装路径
datadir=/data/mysql
数据路径
server_id=1
标识数据库不同实例
port=3306
端口号
socket=/tmp/mysql.sock
本地socket连接的文件路径及文件名
secure-file-priv=/tmp
导入导出(select into outfile)权限路径
default_storage_engine=innodb
默认存储引擎
#innodb_read_only=0
read_only=0
只读模式开关,限定的是普通用户
super_read_only=0
只读模式开关,限定的是普通用户
2.日志相关
log_error=/data/mysql/mysql.err
错误日志的路径及文件名,默认开启
log_timestamps=system
控制错误日志、慢查询日志等日志中的显示时间。但它不会影响查询日志和慢日志写到表(mysql.general_log, mysql.slow_log) 中的显示时间
innodb_print_all_deadlocks = 1
死锁监控信息记录到错误日志的开关,1表示写进错误日志
log_bin=/data/mysql/mysql-bin
binlog日志(开关)路径及文件名
#log_bin_basename
binlog_format=row
binlog日志的格式
binlog_cache_size = 2M
为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存, 提高记录bin-log的效率。没有什么大事务,dml也不是很频繁的情况下可以设置小一点,如果事务大而且多,dml操作也频繁,则可以适当的调大一点。前者建议是--1M,后者建议是:即 2--4M
max_binlog_cache_size = 8M
表示的是binlog 能够使用的最大cache 内存大小
max_binlog_size=1073741824
max_binlog_size= 512M //指定binlog日志文件的大小,如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志。你不能将该变量设置为大于1GB或小于4096字节。默认值是1GB。在导入大容量的sql文件时,建议关闭sql_log_bin,否则硬盘扛不住,而且建议定期做删除。
expire_logs_days=15
binlog日志文件的保留时间
sync_binlog=1
"双一标准,每次事务提交都立即刷写binlog到磁盘。
sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新。这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。
sync_binlog>0,表示每sync_binlog次事务提交,MySQL调用文件系统的刷新操作将缓存刷下去。
sync_binlog=1是最安全的,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置"
slow_query_log=1
慢查询日志开关
slow_query_log_file=/data/mysql/slow.log
慢查询日志路径及文件名
long_query_time=0.1
设置慢查询的时间
log_queries_not_using_indexes=1
没走索引的语句也记录到慢查询日志
general_log=1
常规(查询)日志开关,默认不开启,一般也不开启
general_log_file=/data/mysql/general.log
常规日志路径及文件名
#事务(REDO)日志
innodb_log_buffer_size=128M
此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,对于较大的事务,可以增大缓存大小。
innodb_log_file_size=48M
"设置 ib_logfile0 ib_logfile1
此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能."
innodb_log_files_in_group = 3
为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3
3.双一标准(sync_binlog 和 innodb_flush_log_at_trx_commit)
#最高安全模式
##sync_binlog=1
innodb_flush_log_at_trx_commit=1
主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0、1、2三个
1,每次事物的提交都会引起日志文件写入、flush磁盘的操作,确保了事务的ACID;flush 到操作系统的文件系统缓存 fsync到物理磁盘;
0,表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入文件系统缓存并且秒fsync磁盘一次;
2,每次事务提交引起写入文件系统缓存,但每秒钟完成一次fsync磁盘操作。
Innodb_flush_method=O_DIRECT
控制的是,log buffer 和data buffer,刷写磁盘的时候是否经过文件系统缓存,
O_DIRECT :数据缓冲区写磁盘,不走OS buffer;
fsync :日志和数据缓冲区写磁盘,都走OS buffer;
O_DSYNC :日志缓冲区写磁盘,不走 OS buffer
#最高性能
##sync_binlog=1
##innodb_flush_log_at_trx_commit=0
##Innodb_flush_method=fsync
4.事务
autocommit=0
关闭事务自动提交
transaction_isolation=REPEATABLE READ
事务隔离级别
5.GTID与主从复制
gtid-mode=on
启用gtid类型,否则就是普通的复制架构
enforce-gtid-consistency=true
强制GTID的一致性
log-slave-updates=1
slave更新是否记入日志
auto_increment_increment=2
自增步长,主主复制中,一般有n台主MySQL就填n
auto_increment_offset=1
自增偏移量,主主复制中,一般第m台主MySQL就填m。
relay_log_purge =0
当 relay_log_purge=1时,旧relay logs会在SQL线程执行完毕后被自动删除;
当 relay_log_purge=0时,旧的 relay log 则会被保留。虽然这并不会影响从库复制本身,但还是会有坑:由于崩溃或停止 MySQL 时,SQL 线程可能没有执行完全部的 relay log,最后一个 relay log 中的一部分数据会被重新下载到新的文件中。也就是说,这部分数据重复了两次。如果 SQL 跟得很紧,则可能在 IO 线程写入 relay log ,但还没有将同步到磁盘时,就已经读取执行了。这时,就会造成新的文件和旧的文件中少了一段数据。
slave-skip-errors = 1032,1062,1007
从库重做SQL出错时设置跳过的错误操作编号
1007:对象已存在
1032:无法执行DML
1062:主键冲突,或约束冲突"
#从库多线程MTS
slave-parallel-type=LOGICAL_CLOCK
本地时钟,支持基于事务级别的sql并发回放
slave-parallel-workers=16
并发回放线程个数,取cpu核心个数的一半
master_info_repository=TABLE
master_info以表的方式存储信息
relay_log_info_repository=TABLE
relay_log_info以表的方式存储信息
relay_log_recovery=ON
开启relay_log的恢复功能
6.表空间
innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend
共享表空间文件设置,8.0前undo log存储在共享表空间
innodb_autoextend_increment=64
共享表空间自增大小设置,初始化前可写入cnf
innodb_file_per_table= 1
开启独立表空间模式
7.优化
*****
skip-name-resolve
禁止 MySql Server 对外部连接进行 DNS 解析,使用这一选项可以消除 MySql 进行 DNS 解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求
##innodb_flush_log_at_trx_commit=1
innodb_buffer_pool_size=2048M
"缓冲区池,一般建议最多是物理内存的75-80%,InnoDB使用该参数指定大小的内存来缓冲数据和索引。
对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%,一般我们建议不要超过物理内存的70%。"
key_buffer_size=64M
指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度
max_connections=1024
最大连接数
#max_used_connections
合理范围0.9max<=$
log_error=/data/mysql/mysql.err 错误日志的路径及文件名,默认开启 log_timestamps=system 控制错误日志、慢查询日志等日志中的显示时间。但它不会影响查询日志和慢日志写到表(mysql.general_log, mysql.slow_log) 中的显示时间 innodb_print_all_deadlocks = 1 死锁监控信息记录到错误日志的开关,1表示写进错误日志 log_bin=/data/mysql/mysql-bin binlog日志(开关)路径及文件名 #log_bin_basename binlog_format=row binlog日志的格式 binlog_cache_size = 2M 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存, 提高记录bin-log的效率。没有什么大事务,dml也不是很频繁的情况下可以设置小一点,如果事务大而且多,dml操作也频繁,则可以适当的调大一点。前者建议是--1M,后者建议是:即 2--4M max_binlog_cache_size = 8M 表示的是binlog 能够使用的最大cache 内存大小 max_binlog_size=1073741824 max_binlog_size= 512M //指定binlog日志文件的大小,如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志。你不能将该变量设置为大于1GB或小于4096字节。默认值是1GB。在导入大容量的sql文件时,建议关闭sql_log_bin,否则硬盘扛不住,而且建议定期做删除。 expire_logs_days=15 binlog日志文件的保留时间 sync_binlog=1 "双一标准,每次事务提交都立即刷写binlog到磁盘。 sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新。这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。 sync_binlog>0,表示每sync_binlog次事务提交,MySQL调用文件系统的刷新操作将缓存刷下去。 sync_binlog=1是最安全的,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置" slow_query_log=1 慢查询日志开关 slow_query_log_file=/data/mysql/slow.log 慢查询日志路径及文件名 long_query_time=0.1 设置慢查询的时间 log_queries_not_using_indexes=1 没走索引的语句也记录到慢查询日志 general_log=1 常规(查询)日志开关,默认不开启,一般也不开启 general_log_file=/data/mysql/general.log 常规日志路径及文件名 #事务(REDO)日志 innodb_log_buffer_size=128M 此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,对于较大的事务,可以增大缓存大小。 innodb_log_file_size=48M "设置 ib_logfile0 ib_logfile1 此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能." innodb_log_files_in_group = 3 为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3
3.双一标准(sync_binlog 和 innodb_flush_log_at_trx_commit)
#最高安全模式
##sync_binlog=1
innodb_flush_log_at_trx_commit=1
主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0、1、2三个
1,每次事物的提交都会引起日志文件写入、flush磁盘的操作,确保了事务的ACID;flush 到操作系统的文件系统缓存 fsync到物理磁盘;
0,表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入文件系统缓存并且秒fsync磁盘一次;
2,每次事务提交引起写入文件系统缓存,但每秒钟完成一次fsync磁盘操作。
Innodb_flush_method=O_DIRECT
控制的是,log buffer 和data buffer,刷写磁盘的时候是否经过文件系统缓存,
O_DIRECT :数据缓冲区写磁盘,不走OS buffer;
fsync :日志和数据缓冲区写磁盘,都走OS buffer;
O_DSYNC :日志缓冲区写磁盘,不走 OS buffer
#最高性能
##sync_binlog=1
##innodb_flush_log_at_trx_commit=0
##Innodb_flush_method=fsync
4.事务
autocommit=0
关闭事务自动提交
transaction_isolation=REPEATABLE READ
事务隔离级别
5.GTID与主从复制
gtid-mode=on
启用gtid类型,否则就是普通的复制架构
enforce-gtid-consistency=true
强制GTID的一致性
log-slave-updates=1
slave更新是否记入日志
auto_increment_increment=2
自增步长,主主复制中,一般有n台主MySQL就填n
auto_increment_offset=1
自增偏移量,主主复制中,一般第m台主MySQL就填m。
relay_log_purge =0
当 relay_log_purge=1时,旧relay logs会在SQL线程执行完毕后被自动删除;
当 relay_log_purge=0时,旧的 relay log 则会被保留。虽然这并不会影响从库复制本身,但还是会有坑:由于崩溃或停止 MySQL 时,SQL 线程可能没有执行完全部的 relay log,最后一个 relay log 中的一部分数据会被重新下载到新的文件中。也就是说,这部分数据重复了两次。如果 SQL 跟得很紧,则可能在 IO 线程写入 relay log ,但还没有将同步到磁盘时,就已经读取执行了。这时,就会造成新的文件和旧的文件中少了一段数据。
slave-skip-errors = 1032,1062,1007
从库重做SQL出错时设置跳过的错误操作编号
1007:对象已存在
1032:无法执行DML
1062:主键冲突,或约束冲突"
#从库多线程MTS
slave-parallel-type=LOGICAL_CLOCK
本地时钟,支持基于事务级别的sql并发回放
slave-parallel-workers=16
并发回放线程个数,取cpu核心个数的一半
master_info_repository=TABLE
master_info以表的方式存储信息
relay_log_info_repository=TABLE
relay_log_info以表的方式存储信息
relay_log_recovery=ON
开启relay_log的恢复功能
6.表空间
innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend
共享表空间文件设置,8.0前undo log存储在共享表空间
innodb_autoextend_increment=64
共享表空间自增大小设置,初始化前可写入cnf
innodb_file_per_table= 1
开启独立表空间模式
7.优化
*****
skip-name-resolve
禁止 MySql Server 对外部连接进行 DNS 解析,使用这一选项可以消除 MySql 进行 DNS 解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求
##innodb_flush_log_at_trx_commit=1
innodb_buffer_pool_size=2048M
"缓冲区池,一般建议最多是物理内存的75-80%,InnoDB使用该参数指定大小的内存来缓冲数据和索引。
对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%,一般我们建议不要超过物理内存的70%。"
key_buffer_size=64M
指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度
max_connections=1024
最大连接数
#max_used_connections
合理范围0.9max<=$
autocommit=0 关闭事务自动提交 transaction_isolation=REPEATABLE READ 事务隔离级别
5.GTID与主从复制
gtid-mode=on
启用gtid类型,否则就是普通的复制架构
enforce-gtid-consistency=true
强制GTID的一致性
log-slave-updates=1
slave更新是否记入日志
auto_increment_increment=2
自增步长,主主复制中,一般有n台主MySQL就填n
auto_increment_offset=1
自增偏移量,主主复制中,一般第m台主MySQL就填m。
relay_log_purge =0
当 relay_log_purge=1时,旧relay logs会在SQL线程执行完毕后被自动删除;
当 relay_log_purge=0时,旧的 relay log 则会被保留。虽然这并不会影响从库复制本身,但还是会有坑:由于崩溃或停止 MySQL 时,SQL 线程可能没有执行完全部的 relay log,最后一个 relay log 中的一部分数据会被重新下载到新的文件中。也就是说,这部分数据重复了两次。如果 SQL 跟得很紧,则可能在 IO 线程写入 relay log ,但还没有将同步到磁盘时,就已经读取执行了。这时,就会造成新的文件和旧的文件中少了一段数据。
slave-skip-errors = 1032,1062,1007
从库重做SQL出错时设置跳过的错误操作编号
1007:对象已存在
1032:无法执行DML
1062:主键冲突,或约束冲突"
#从库多线程MTS
slave-parallel-type=LOGICAL_CLOCK
本地时钟,支持基于事务级别的sql并发回放
slave-parallel-workers=16
并发回放线程个数,取cpu核心个数的一半
master_info_repository=TABLE
master_info以表的方式存储信息
relay_log_info_repository=TABLE
relay_log_info以表的方式存储信息
relay_log_recovery=ON
开启relay_log的恢复功能
6.表空间
innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend
共享表空间文件设置,8.0前undo log存储在共享表空间
innodb_autoextend_increment=64
共享表空间自增大小设置,初始化前可写入cnf
innodb_file_per_table= 1
开启独立表空间模式
7.优化
*****
skip-name-resolve
禁止 MySql Server 对外部连接进行 DNS 解析,使用这一选项可以消除 MySql 进行 DNS 解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求
##innodb_flush_log_at_trx_commit=1
innodb_buffer_pool_size=2048M
"缓冲区池,一般建议最多是物理内存的75-80%,InnoDB使用该参数指定大小的内存来缓冲数据和索引。
对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%,一般我们建议不要超过物理内存的70%。"
key_buffer_size=64M
指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度
max_connections=1024
最大连接数
#max_used_connections
合理范围0.9max<=$
innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend 共享表空间文件设置,8.0前undo log存储在共享表空间 innodb_autoextend_increment=64 共享表空间自增大小设置,初始化前可写入cnf innodb_file_per_table= 1 开启独立表空间模式



