######mysql configuration for 16G memory######
[client]
port = 3309
default-character-set=utf8
socket=/home/mysql/mysql/mysql.sock
######the mysql server######
######basic########
[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server_id=42
#服务端口号 默认3306
port = 3309
#mysql安装根目录
basedir=/home/mysql/mysql
#mysql数据文件所在位置
datadir=/home/mysql/mysql/data
#临时目录 比如load data infile会用到
tmpdir=/home/mysql/mysql/tmp
#设置socke文件所在目录
socket=/home/mysql/mysql/mysql.sock
#MySQL选项以避免外部锁定。该选项默认开启
skip-external-locking
#只能用IP地址检查客户端的登录,不用主机名
skip-name-resolve=1
#mysql默认存储引擎
default-storage-engine=INNODB
#数据库默认字符集
character-set-server=utf8
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#请求的最大连接时间, interactive_timeout参数需要同时配置才能生效
wait_timeout=100
interactive_timeout=100
connect_timeout=20
#在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中
#官方建议back_log = 50 + (max_connections / 5),封顶数为900
back_log=250
#开启mysql的计划任务
event_scheduler=ON
#设置mysql打开的文件描述符
open-files-limit=10240
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#######binlog########
#开启mysql binlog功能
#log_bin=mysql-bin
log_bin=binlog
#binlog记录内容的方式,记录被操作的每一行
binlog_format=row
#设置二进制日志最大大小
max_binlog_size=128M
#binlog 能够使用的最大cache 内存大小
binlog_cache_size=2M
#mysql binlog日志文件保存的过期时间,过期后自动删除
expire-logs-days=5
#开启gtid复制模式
gtid_mode=ON
enforce_gtid_consistency=ON
#slave-parallel-type=LOGICAL_CLOCK
master_info_repository=TABLE
relay_log_info_repository=TABLE
#slave-parallel-workers=16
#######replication#######
#binlog_checksum=NONE
#作为从库时生效,想进行级联复制,则需要此参数
#log_slave_updates=1
#作为从库时生效,中继日志relay-log可以自我修复
#relay_log_recovery=1
#relay_log=/home/mysql/mysql/logs/relay_42_3309
######group replication#####
binlog_checksum=NONE
log_slave_updates=ON
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaccc"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="192.168.206.42:24901" #本台
loose-group_replication_group_seeds="192.168.206.xxxx:24901,192.168.206.xxx2:24901,192.168.206.xxxx3:24901,192.168.206.xxxx4:24901"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks=TRUE
######slow log######
#启用慢查询日志
slow_query_log=1
#慢查询日志文件路径
slow_query_log_file=/home/mysql/mysql/logs/slowquery.log
#慢查询时间
long_query_time=2
######error log######
#开启mysql错误日志
log-error=/home/mysql/mysql/logs/error.log
#开启没使用索引的查询日志
log-queries-not-using-indexes=/home/mysql/mysql/logs/nouseindex.log
######per_thread_buffers######
#设置最大连接数
max_connections=1000
#设置允许的最大连接错误数
max_connect_errors=10000
#索引缓冲区的大小
key_buffer_size=16M
#限制server接受的数据包大小
max_allowed_packet=32M
#每个需要进行排序的线程分配该大小的一个缓冲区
sort_buffer_size=512k
#MySQL读入缓冲区大小
read_buffer_size=512k
#随机读缓冲区大小
read_rnd_buffer_size=512k
#联合查询操作所能使用的缓冲区大小
join_buffer_size=512k
#用户可以创建的临时表的大小
tmp_table_size=64M
#用户可以创建的内存表(memory table)的大小
max_heap_table_size=64M
#关闭查询缓存
query_cache_type=0
#MySQL查询缓冲区的大小
query_cache_size=0
bulk_insert_buffer_size=32M
#可以复用的保存在中的线程的数量
thread_cache_size=64
#设置为每一个线程栈分配多大的内存
thread_stack=256k
######InnoDB######
innodb_data_home_dir=/home/mysql/mysql/data
innodb_log_group_home_dir=/home/mysql/mysql/logs
#InnoDB使用该参数指定大小的内存来缓冲数据和索引。对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。
innodb_buffer_pool_size=12G
innodb_buffer_pool_instances=8
# 此参数确定数据日志文件的大小,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间
innodb_log_file_size=128M
# 此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据。MySQL开发人员建议设置为1-8M之间
innodb_log_buffer_size=16M
# 为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3
innodb_log_files_in_group=3
# 0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。
# 主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件(REDO LOG)中。不论事务是否已经提交)默认的日志文件是ib_logfile0,ib_logfile1
# 1:当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志。
# 2:如果设为2,每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会刷到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这要取决于进程的调度。
# 每次事务提交的时候将数据写入事务日志,而这里的写入仅是调用了文件系统的写入操作,而文件系统是有 缓存的,所以这个写入并不能保证数据已经写入到物理磁盘
# 默认值1是为了保证完整的ACID。当然,你可以将这个配置项设为1以外的值来换取更高的性能,但是在系统崩溃的时候,你将会丢失1秒的数据。
# 设为0的话,mysqld进程崩溃的时候,就会丢失最后1秒的事务。设为2,只有在操作系统崩溃或者断电的时候才会丢失最后1秒的数据。InnoDB在做恢复的时候会忽略这个值。
# 总结
# 设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能
innodb_flush_log_at_trx_commit=2
#MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)
innodb_lock_wait_timeout=10
#自旋锁的轮转数
innodb_sync_spin_loops=40
# innodb主线程刷新缓存池中的数据,使脏数据比例小于90%
innodb_max_dirty_pages_pct=90
#开启分布式事务
innodb_support_xa=1
# 默认设置为 0,表示不限制并发数,这里推荐设置为0,更好去发挥CPU多核处理能力,提高并发量
innodb_thread_concurrency=0
#等待线程睡眠时间
innodb_thread_sleep_delay=500
innodb_concurrency_tickets=2000
#允许function的同步
log-bin-trust-function-creators=1
#innodb_flush_method=O_DIRECT
# InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
innodb_file_per_table=1
# innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求,根据你的 CPU 核数来更改,默认是4
# 注:这两个参数不支持动态改变,需要把该参数加入到my.cnf里,修改完后重启MySQL服务,允许值的范围从 1-64
innodb_read_io_threads=16
innodb_write_io_threads=16
innodb_io_capacity=2000
# InnoDB中的清除操作是一类定期回收无用数据的操作。在之前的几个版本中,清除操作是主线程的一部分,这意味着运行时它可能会堵塞其它的数据库操作。
# 从MySQL5.5.X版本开始,该操作运行于独立的线程中,并支持更多的并发数。用户可通过设置innodb_purge_threads配置参数来选择清除操作是否使用单
# 独线程,默认情况下参数设置为0(不使用单独线程),设置为 1 时表示使用单独的清除线程。建议为1
innodb_purge_threads=1
#控制每次full purge回收的undo页的数量
innodb_purge_batch_size=32
#控制old page子链表在LRU链表中的长度
innodb_old_blocks_pct=75
#innodb_change_buffering默认值为all,表示缓存所有操作
innodb_change_buffering=all
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation=READ-COMMITTED
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#skip-grant-tables #由于升级需要,跳过权限验证
#sql_mode=NO_ENGINE_SUBSTITUTION
[mysqldump]
quick
#max_allowd_packet=128M
#myisam_max_sort_file_size=10G
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size=64M
sort_buffer_size=256k
read_buffer=2M
write_buffer=2M
[mysqlhotcopy]
interative-timeout
[mysqld_safe]
open-files-limit=65535
log-error=/home/mysql/mysql/logs/error.log
pid-file=/home/mysql/mysql/mysql.pid