mysql配置文件小优化及主主模式
这只是个人工作中的参数
不区分大小写
lower_case_table_names=1
#索引和数据缓冲区大小,一般设置物理内存的60%-70%
innodb_buffer_pool_size = 5G
#缓冲池实例个数,推荐设置4个或8个
innodb_buffer_pool_instances = 4
#关键参数,0代表大约每秒写入到日志并同步到磁盘,数据库故障会丢失1秒左右事务数据。1为每执行一条SQL后写入到日志并同步到磁盘,I/O开销大,执行完SQL要等待日志读写,效率低。2代表只把日志写入到系统缓存区,再每秒同步到磁盘,效率很高,如果服务器故障,才会丢失事务数据。对数据安全性要求不是很高的推荐设置2,性能高,修改后效果明显
innodb_flush_log_at_trx_commit = 2
#默认是共享表空间,共享表空间idbdata文件不断增大,影响一定的I/O性能。推荐开启独立表空间模式,每个表的索引和数据都存在自己独立的表空间中,可以实现单表在不同数据库中移动。
innodb_file_per_table = OFF
#日志缓冲区大小,由于日志最长每秒钟刷新一次,所以一般不用超过16M
innodb_log_buffer_size = 8M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin=mysql-bin
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /data
# port = .....
server_id = 1002
# socket = .....
# 注:当设置隔离级别为READ-COMMITED必须设置二进制日志格式为ROW,MySQL官方认为STATEMENT这个已经不再适合继续使用;但mixed类型在默认的事务隔离级别下,可能会导致主从数据不一致; 推荐使用 row
binlog-format=ROW
# 启用这个参数,可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度
# 只对row binlog格式有效.启用后,会向binlog中写入更多的调试信息,比如sql语句自身都会被写进去. mysqlbinlog -vv 可以看到.
binlog-rows-query-log_events= 1
# 这个选项允许应用程序只能对行的镜像数据进行复制,而不在关心行是否已经进行了DML操作.这提高了主从机器的复制吞吐量,减少了二进制日志所占用的磁盘空间、网络资源和内存占用.
binlog-row-image = minimal
report-host= 192.168.140.199
report-port= 3306
gtid-mode= on
enforce-gtid-consistency= true
log-slave-updates= true
# master-info-repository/relay-log-info-repository都设置为TABLE,mysql.slave_master_info与 mysql.slave_relay_log_info 中,table都是innodb类型的,支持事务,比文件安全 # 默认值是FILE, 比如master info就保存在master.info文件中,relay log info保存在relay-log.info文件中,如果服务器意外关闭,正确的relay info 没有来得及更新到 relay-log.info文件,这样会造成数据丢失
master-info-repository= TABLE
relay-log-info-repository= TABLE
# 启用之后,使binlog在每N次binlog写入后与硬盘 同步
sync-master-info=1
# 以下是对二进制日志一些设置
binlog_cache_size = 4M
max_binlog_size = 1G
max_binlog_cache_size = 2G
# 以下这几个参数是启用binlog/relaylog的校验,防止日志出错
binlog-checksum= CRC32
slave_allow_batching = 1
master-verify-checksum= 1
slave-sql-verify-checksum= 1
# 开启基于库的多线程复制.默认是0,不开启,最大并发数为1024个线程
slave-parallel-workers=4
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#查询排序时缓冲区大小,只对order by和group by起作用,可增大此值为16M
sort_buffer_size = 16M
#查询缓存限制,只有1M以下查询结果才会被缓存,以免结果数据较大把缓存池覆盖
query_cache_limit = 1M
#查看缓冲区大小,用于缓存SELECT查询结果,下一次有同样SELECT查询将直接从缓存池返回结果,可适当成倍增加此值
query_cache_size = 16M
#打开文件数限制,如果show global status like 'open_files'查看的值等于或者大于open_files_limit值时,程序会无法连接数据库或卡死
open_files_limit = 1024
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[root@localhost include]# cat /etc/my.cnf
innodb_buffer_pool_size = 5G
#缓冲池实例个数,推荐设置4个或8个
innodb_buffer_pool_instances = 4
#关键参数,0代表大约每秒写入到日志并同步到磁盘,数据库故障会丢失1秒左右事务数据。1为每执行一条SQL后写入到日志并同步到磁盘,I/O开销大,执行完SQL要等待日志读写,效率低。2代表只把日志写入到系统缓存区,再每秒同步到磁盘,效率很高,如果服务器故障,才会丢失事务数据。对数据安全性要求不是很高的推荐设置2,性能高,修改后效果明显
innodb_flush_log_at_trx_commit = 2
#默认是共享表空间,共享表空间idbdata文件不断增大,影响一定的I/O性能。推荐开启独立表空间模式,每个表的索引和数据都存在自己独立的表空间中,可以实现单表在不同数据库中移动。
innodb_file_per_table = OFF
#日志缓冲区大小,由于日志最长每秒钟刷新一次,所以一般不用超过16M
innodb_log_buffer_size = 8M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin=mysql-bin
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /data
# port = .....
server_id = 1002
# socket = .....
# 注:当设置隔离级别为READ-COMMITED必须设置二进制日志格式为ROW,MySQL官方认为STATEMENT这个已经不再适合继续使用;但mixed类型在默认的事务隔离级别下,可能会导致主从数据不一致; 推荐使用 row
binlog-format=ROW
# 启用这个参数,可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度
# 只对row binlog格式有效.启用后,会向binlog中写入更多的调试信息,比如sql语句自身都会被写进去. mysqlbinlog -vv 可以看到.
binlog-rows-query-log_events= 1
# 这个选项允许应用程序只能对行的镜像数据进行复制,而不在关心行是否已经进行了DML操作.这提高了主从机器的复制吞吐量,减少了二进制日志所占用的磁盘空间、网络资源和内存占用.
binlog-row-image = minimal
report-host= 192.168.140.199
report-port= 3306
gtid-mode= on
enforce-gtid-consistency= true
log-slave-updates= true
# master-info-repository/relay-log-info-repository都设置为TABLE,mysql.slave_master_info与 mysql.slave_relay_log_info 中,table都是innodb类型的,支持事务,比文件安全 # 默认值是FILE, 比如master info就保存在master.info文件中,relay log info保存在relay-log.info文件中,如果服务器意外关闭,正确的relay info 没有来得及更新到 relay-log.info文件,这样会造成数据丢失
master-info-repository= TABLE
relay-log-info-repository= TABLE
# 启用之后,使binlog在每N次binlog写入后与硬盘 同步
sync-master-info=1
# 以下是对二进制日志一些设置
binlog_cache_size = 4M
max_binlog_size = 1G
max_binlog_cache_size = 2G
# 以下这几个参数是启用binlog/relaylog的校验,防止日志出错
binlog-checksum= CRC32
slave_allow_batching = 1
master-verify-checksum= 1
slave-sql-verify-checksum= 1
# 开启基于库的多线程复制.默认是0,不开启,最大并发数为1024个线程
slave-parallel-workers=4
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#查询排序时缓冲区大小,只对order by和group by起作用,可增大此值为16M
sort_buffer_size = 16M
#查询缓存限制,只有1M以下查询结果才会被缓存,以免结果数据较大把缓存池覆盖
query_cache_limit = 1M
#查看缓冲区大小,用于缓存SELECT查询结果,下一次有同样SELECT查询将直接从缓存池返回结果,可适当成倍增加此值
query_cache_size = 16M
#打开文件数限制,如果show global status like 'open_files'查看的值等于或者大于open_files_limit值时,程序会无法连接数据库或卡死
open_files_limit = 1024
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[root@localhost include]# cat /etc/my.cnf