[client]
#指定MySQL客户端端口
port=33306
#套接字文件,设置socke文件所在目录,
socket = /mysql/data/33306/mysql.sock
[mysql]
no-beep
prompt="\u@mysqldb \R:\m:\s [\d]> "
#no-auto-rehash
#在MySQL终端开启tab补齐功能
auto-rehash
#设置客户端默认字符集
default-character-set=utf8
[mysqld]
########basic settings########
#mysql服务的ID,在主从同步时来标记服务的唯一身份
server-id=161100
#MySQL服务器启动时,默认的端口
port=33306
#MySQL服务启动时的用户
user = mysql
#ip绑定,0.0.0.0标识允许所有的远程访问,127.0.0.1只能本地访问,固定ip则只能接受改ip的远程访问。
bind_address= 192.168.16.11
#设置MySQL的安装目录
basedir=/mysql/app/mysql
#设置MySQL的数据存放目录
datadir=/mysql/data/33306/data
#mysql的客户端和服务端之间建立通信时需要指定一个通信stock文件
socket = /mysql/data/33306/mysql.sock
#mysql服务启动后会记录进程id到该文件中,用于记录服务的运行情况
pid-file = /mysql/data/33306/mysql.pid
#设置服务端默认的字符集
character-set-server=utf8mb4
#ci和cs的区别,就是大小写敏感和不敏感 ci是case ignore,cs是case senstive
#collation_server=utf8mb4_general_ci
#设置事务自动提交,设置commit提交autocommit=0;
#在8.0.21版本后,autocommit=0初始化时,sys库会丢失。
autocommit = 1
#只能用IP地址检查客户端的登录,不用主机名
#skip_name_resolve = 1
#最大连接数,默认值为151,上限值是16384,实际连接数是最大连接数的85%较为合适
max_connections = 800
#最大错误连接数
max_connect_errors = 10
#永久表的默认存储引擎
default-storage-engine=INNODB
#事务的隔离级别,读未提交(READ-UNCOMMITTED),读已提交(READ-COMMITTED)
#可重复读 (REPEATABLE-READ),序列化 (SERIALIZABLE)
transaction_isolation = READ-COMMITTED
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = 1
'group by' 与 'order by' 语句占用的大小,建议先调整为2M,后期观察再调整
sort_buffer_size = 32M
#使用join语句的缓存区
join_buffer_size = 128M
#大数据量的group by,order by时可能用到临时表,超过了这个值将写入磁盘,系统IO压力增大
#临时内部堆积表的大小,动态页面要调大点,100M以上,静态内容,一般64M足够。
tmp_table_size = 1024M
最大内存表大小
max_heap_table_size = 1024M
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 16M
#sql_mode默认模式:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#NO_AUTO_CREATE_USER模式在8.0取消
#sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
#用于表的顺序扫描,读出的数据暂存于read_buffer_size中,当buff满时或读完,将数据返回上层调用者
read_buffer_size = 16M
#设置服务器随机读取缓冲区的大小
read_rnd_buffer_size = 32M
#禁用mysql的缓存查询结果集功能,大部分情况下关闭下面两项
#query_cache_type = 1
#query_cache_size=1M
#表描述符缓存大小,可减少文件打开/关闭次数
table_open_cache=4096
#用于缓存空闲的线程
thread_cache_size=768
myisam_max_sort_file_size=10G
myisam_sort_buffer_size=135M
指定索引缓冲区的大小
key_buffer_size=32M
#读缓冲区的大小
read_buffer_size=8M
read_rnd_buffer_size=4M
#请求堆栈大小,默认50,该值设置为最大并发连接数的20%~30%
back_log=240
#flush_time=0
#控制文件打开个数
open_files_limit=65536
#内存中可打开的表结构数量
table_definition_cache=1400
#binlog_row_event_max_size=8K
#sync_master_info=10000
#sync_relay_log=10000
#sync_relay_log_info=10000
########log settings########
#表示查询日志和慢查询日志到文件(FILE)还是表中(TABLE)
log-output=FILE
#通用查询日志打开ON/关闭OFF 1/0 ,最好不开
general_log = 0
通用查询日志存放路径
general_log_file=/mysql/log/33306/mysql-general.err
#慢查询日志打开/关闭
slow_query_log = ON
#慢查询日志存放路径
slow_query_log_file=/mysql/log/33306/mysql-query.err
#慢查询日志阈值
long_query_time=10
#检索的行数必须达到100,才可被记为慢查询
min_examined_row_limit = 100
#错误日志的存放路径
log-error=/mysql/log/33306/mysql-error.err
#检查未使用到索引的sql
log_queries_not_using_indexes = 1
#针对log_queries_not_using_indexes开启后,记录慢sql的频次,每分钟记录的条数
log_throttle_queries_not_using_indexes = 10
log_slow_admin_statements = 1
#log_slow_slave_statements = 1参数作为从库时生效,从库复制中如果有慢sql也将被记录
#8.0.26之前为log_slow_slave_statements = 1 之后为 log_slow_replica_statements=1
log_slow_replica_statements = 1
#二进制日志的目录及名称
log_bin=/mysql/log/33306/binlog/mysql-binlog
#二进制日志索引文件的目录及名称
log_bin_index=/mysql/log/33306/binlog/mysql-binlog.index
#基于行复制,binlog记录内容的方式,记录被操作的每一行
binlog_format='ROW'
#binlog日志文件保存的过期时间,过期后自动删除,在8.0版本前expire_logs_days的单位为天,最小值为1
#expire_logs_days = 90
#在MySQL8.0 版本中新增参数binlog_expire_logs_seconds,可以精确到秒,默认值为30天
binlog_expire_logs_seconds=604800
binlog_rows_query_log_events=on
#一般数据库中没什么大的事务,设成1~2M,默认32kb
binlog_cache_size = 2M
########replication settings########
#master status and connection information输出到表mysql.slave_master_info中
#master_info_repository = TABLE
#the slave's position in the relay logs输出到表mysql.slave_relay_log_info中
#relay_log_info_repository = TABLE
#开启binlog功能
#log_bin = bin.log
#sync_binlog = 1
#gtid_mode = on
#enforce_gtid_consistency = 1
#作为从库时生效,想进行级联复制,则需要此参数
#log_slave_updates
#binlog记录内容的方式,记录被操作的每一行
#binlog_format = row
#relay_log = relay.log
#作为从库时生效,中继日志relay-log可以自我修复
#relay_log_recovery = 1
#binlog_gtid_simple_recovery = 1
#作为从库时生效,主从复制时忽略的错误
#slave_skip_errors = ddl_exist_errors
########innodb settings########
根据服务器IOPS能力适当调整
一般配普通SSD盘的话,可以调整到 10000 - 20000
配置高端PCIe SSD卡的话,则可以调整更高,比如 50000 - 80000
#这个参数据控制Innodb checkpoint时的IO能力
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
#并发线程数,默认为0,代表线程数无上限,并发线程数应该设置为cpu核心数的两倍
innodb_thread_concurrency = 64
#用来高速缓冲数据和索引内存缓冲大小,InnoDB缓存的大小可以设置为主机内存的70%~80%
innodb_buffer_pool_size = 500M
#动态统计的功能,参数配置成off更合理些(默认是on)
innodb_stats_on_metadata=0
#innodb_buffer_pool_size的值是innodb_buffer_pool_instanes的值倍数最大为64g,
innodb_buffer_pool_instances = 8
#默认启用。指定在MySQL服务器启动时,InnoDB缓冲池通过加载之前保存的相同页面自动预热, 通常与innodb_buffer_pool_dump_at_shutdown结合使用
innodb_buffer_pool_load_at_startup = 1
#默认启用,指定在MySQL服务器关闭时是否记录在InnoDB缓冲池中缓存的页面,以便在下次重新启动时缩短预热过程。
innodb_buffer_pool_dump_at_shutdown = 1
#影响page cleaner线程每次刷脏页的数量
innodb_lru_scan_depth = 2000
#在回滚(rooled back)之前,InnoDB 事务将等待超时的时间(单位 秒)
innodb_lock_wait_timeout = 30
innodb_old_blocks_time=1000
#使用O_DIRECT模式打开数据文件,用fsync()函数去更新日志和数据文件;
#innodb_flush_method = O_DIRECT
#可以减少刷新缓冲池的次数,从而减少磁盘 I/O
innodb_log_file_size = 200M
#指定有两个日志组
innodb_log_files_in_group = 2
#日志缓存,大的日志缓冲可以减少磁盘I/O
innodb_log_buffer_size = 16M
#innodb_undo_logs = 128
#innodb_undo_tablespaces = 3
#启用后,超过定义的阈值的撤消表空间将 innodb_max_undo_log_size被标记为截断,默认on
innodb_undo_log_truncate = 1
#定义撤消表空间的阈值大小
innodb_max_undo_log_size = 2G
#指定从InnoDB缓冲池刷新页面是否也会刷新同一范围内的其他脏页。
#默认值为0,设置为 0 禁用innodb_flush_neighbors相同范围内的脏页不会被刷新
#设置为 1 会刷新相同范围内的连续脏页,设置为 2 会刷新相同范围内的脏页。
innodb_flush_neighbors = 1
#开始碎片回收线程,等号后边控制该线程数量,默认是4,最大64;
innodb_purge_threads = 4
#innodb_large_prefix = 1
#启用此选项后,有关用户事务中的所有 死锁的 信息都会InnoDB记录在 mysqld 错误日志中。默认off
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 64M
#每次commit 日志缓存中的数据刷到磁盘中
innodb_flush_log_at_trx_commit=1
innodb_autoextend_increment=64
innodb_concurrency_tickets=5000
#限制Innodb能打开的表的数量
innodb_open_files=65536
#作用:使每个Innodb的表,有自已独立的表空间。如删除文件后可以回收那部分空间。
#分配原则:只有使用不使用。但DB还需要有一个公共的表空间
innodb_file_per_table=1
innodb_checksum_algorithm=0
#单独指定数据文件的路径与大小
innodb_data_file_path=ibdata1:200M;ibdata2:200M;ibdata3:200M:autoextend:max:5G
#指定临时文件的大小
innodb_temp_data_file_path = ibtmp1:200M:autoextend:max:20G
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
#transaction_write_set_extraction=MURMUR32
#密码复杂度5.7
#default_authentication_plugin=mysql_native_password
#密码复杂度8.0
default_authentication_plugin=caching_sha2_password