my.cnf文件详解

本文主要介绍的是mysql5.7版本的my.cnf配置文件,详情如下:

[client]
#指定客户端连接的端口号
port = 5300
#指定客户端连接使用的sock文件
socket = /app/mysql/mysql5300/run/mysql5300.sock

[mysql]
#在mysql提示符中显示当前用户、数据库、时间等信息
prompt="\\u@\\h [\\d]>" 
#不使用自动补全功能
no-auto-rehash

[mysqld]
####### Baes dir #######
#定义mysql主程序目录
basedir = /usr/local/mysql
#定义数据目录
datadir = /app/mysql/mysql5300/data
#定义sock文件
socket = /app/mysql/mysql5300/run/mysql5300.sock
#定义临时目录
tmpdir = /app/mysql/mysql5300/tmp
#pid 文件
pid-file = /app/mysql/mysql5300/run/mysql5300.pid

####### Base configure info #######
#启动的用户
user = mysql
#定义端口
port = 5300
#server id,需要修改,不能冲突
server-id = 55300
#指定客户端字符集
character-set-server = utf8mb4
#关闭EVENT支持
event_scheduler = 0
#清空sql_mode规则
sql_mode=''

#time zone
default-time-zone = SYSTEM
log_timestamps = SYSTEM

#timeout
interactive_timeout = 28800
wait_timeout = 28800

#定义打开最大文件数
open_files_limit = 65535
#设置最大连接数
max_connections = 10000
#设置每个主机的连接请求异常中断的最大次数
max_connect_errors = 1000000
#大小写不敏感
lower_case_table_names =1
#关闭dns解析
skip_name_resolve = 1

#开启gtid模式
gtid-mode = on
enforce-gtid-consistency=1


lock_wait_timeout = 3600

###### slow log ######
#slow存储方式
log-output=file
#开启慢查询日志记录功能
slow_query_log = 1
#慢日志记录超过1秒的SQL执行语句,可调小到0.1秒
long_query_time = 1
#慢日志文件
slow_query_log_file = /app/mysql/mysql5300/logs/slow5300.log
#记录由Slave所产生的慢查询
log-slow-slave-statements = 1
#开启DDL等语句慢记录到slow log
log_slow_admin_statements = 1
#记录没有走索引的查询语句
log_queries_not_using_indexes =1
#表示每分钟允许记录到slow log的且未使用索引的SQL语句次数
log_throttle_queries_not_using_indexes = 60
#查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
min_examined_row_limit = 100



###### mysql错误日志文件 ######
log-error = /app/mysql/mysql5300/logs/error5300.log
#将新发起连接时产生的“失败的连接”和“拒绝访问”类的错误信息也记录进错误日志
log_warnings = 2

###### binlog ######
#binlog 格式
binlog_format = row
#binlog文件
log-bin = /app/mysql/mysql5300/logs/mysql5300-bin
#binlog的cache大小
binlog_cache_size = 4M
#binlog 能够使用的最大cache
max_binlog_cache_size = 2G
#最大的binlog file size
max_binlog_size = 1G
#当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,注重binlog安全性可以设为1
sync_binlog = 0

#procedure 
log_bin_trust_function_creators=1

#保存bin log的天数
expire_logs_days = 10

#限制mysqld的导入导出只能发生在/tmp/目录下
secure_file_priv="/tmp"




#relay log
#复制进程就不会随着数据库的启动而启动
skip_slave_start = 1
#relay log的最大的大小
max_relay_log_size = 128M
#SQL线程在执行完一个relay log后自动将其删除
relay_log_purge = 1
#relay log受损后,重新从主上拉取最新的一份进行重放
relay_log_recovery = 1
#relay log文件
relay-log=/app/mysql/mysql5300/logs/relay-bin
relay-log-index=/app/mysql/mysql5300/logs/relay-bin.index
#开启slave写realy log到binlog中
log_slave_updates
#开启relay log自动清理,如果是MHA架构,需要关闭
relay-log-purge = 1


#设置relay log保存在mysql表里面
#master_info_repository = TABLE
#relay_log_info_repository = TABLE

#关闭query
query_cache_size = 0
query_cache_type = 0

#buffers & cache
table_open_cache = 1024
table_definition_cache = 1024
table_open_cache_instances = 64

max_heap_table_size = 96M
sort_buffer_size = 16M
join_buffer_size = 16M
thread_cache_size = 200
#每个连接线程被创建时,MySQL给它分配的内存大小,单位:K
thread_stack = 512K
tmp_table_size = 96M
key_buffer_size = 32M
read_buffer_size = 8M
#MySql的随机读缓冲区大小
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M

thread_cache_size = 7518

back_log = 1024


###### myisam ######
#MyISAM表发生变化时重新排序所需的缓冲
myisam_sort_buffer_size = 128M
#MySQL重建索引时所允许的最大临时文件的大小
myisam_max_sort_file_size = 1G
#如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们
myisam_repair_threads = 1

###### innodb ######
#pool的大小
innodb_buffer_pool_size = 2G
#pool的个数
innodb_buffer_pool_instances = 8
#开启实例down了,dump出innodb buffer
innodb_buffer_pool_dump_at_shutdown = 1
#开启实例重启后,预加载innodb buffer
innodb_buffer_pool_load_at_startup = 1
#mysql数据字典文件
innodb_data_file_path = ibdata1:1G:autoextend
#事物提交,redo log不写入硬盘而是写入系统缓存,就认为事务成功,日志仍然会每秒flush到硬盘,安全性要求高的话,可以设置为1
innodb_flush_log_at_trx_commit = 2
#存redo log的buffer大小
innodb_log_buffer_size = 8M
#redo log文件大小
innodb_log_file_size = 1G
#一组redo log的文件个数
innodb_log_files_in_group = 3
#脏页占innodb buffer pool到50%,触发刷新
innodb_max_dirty_pages_pct = 50
#开启独立表空间模式
innodb_file_per_table = 1
#事务因加锁超时,回滚整个事务
innodb_rollback_on_timeout
#事务隔离级别为RR模式
transaction_isolation = REPEATABLE-READ
#innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log
innodb_flush_method = O_DIRECT
#关闭查询I_S库的相关统计表时,触发更新统计信息
innodb_stats_on_metadata = 0

#innodb_max_undo_log_size = 4G
#事务等待获取资源等待的最长时间,单位秒
innodb_lock_wait_timeout = 10
#事务B在锁等待超时后是回滚事务内所有的statement还是最后一条语句,0表示rollback最后一条语句,默认值;1表示回滚事务B内所有的statements;
innodb_rollback_on_timeout = 1
#开启死锁相关信息保存到MySQL错误日志
innodb_print_all_deadlocks = 1

#使用哪个存储引擎来管理磁盘上的内部临时表
internal_tmp_disk_storage_engine = InnoDB


innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 4
innodb_page_cleaners = 4


#performance_schema
performance_schema = 1
performance_schema_instrument = '%=on'

#单盘SAS/SATA --> 200
#SAS*12 RAID10 --> 2000
#SSD --> 10000-20000
#PCIe --> 50000
#调整刷新脏页的数量
#一次刷新2000个页到磁盘,SAS raid10建议2000,ssd建议1000,单盘建议200
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
#刷新脏页时,检查相邻页
innodb_flush_neighbors = 1

#打开计数器innodb monitor
innodb_monitor_enable="module_innodb"
innodb_monitor_enable="module_server"
innodb_monitor_enable="module_dml"
innodb_monitor_enable="module_ddl"
innodb_monitor_enable="module_trx"
innodb_monitor_enable="module_os"
innodb_monitor_enable="module_purge"
innodb_monitor_enable="module_log"
innodb_monitor_enable="module_lock"
innodb_monitor_enable="module_buffer"
innodb_monitor_enable="module_index"
innodb_monitor_enable="module_ibuf_system"
innodb_monitor_enable="module_buffer_page"
innodb_monitor_enable="module_adaptive_hash"

[mysqldump]
quick
max_allowed_packet = 32M

 

你可能感兴趣的:(MySQL)