MYSQL的my.cnf详解

[client]

port = 3306

default-character-set=utf8

socket = /usr/local/mysql/var/mysql.sock

[mysqld]

default-character-set=utf8

port = 3306

socket =/data/mysql/mysql.sock

basedir = /data/mysql

datadir = /data/mysql/data

pid-file = /data/mysql/data/mysql.pid

user = mysql

bind-address = 0.0.0.0

open_files_limit = 65535

log_bin = mysql-bin

skip-name-resolve     不进行反向解析

server-id = 1  主从同步的ID

log_slave_updates=1 级联复制,用于搭建从库

binlog_format = row

expire_logs_days = 30  binlog 过期天数

log_error = /data/mysql/data/mysql-error.log

back_log = 450  每个连接256kb,默认450。  MySql的连接数达到max_connections时,新来的请求将会被存在堆栈中,待某一连接释放资源

max_connections = 3000  所有账号所有客户端并行连接到mysql服务的最大并行连接数

max_user_connections = 1000  同一个账号同时连接的mysql服务的最大连接数

max_connect_errors = 3000  某个IP主机连接中断与mysql服务的连接次数,通过show global status like “max_user%” 通过max_used_connectinos看开机已来最大的连接数

table_open_cache = 8000   通过show global status like “open%” opened_tables已经打开表,若快要相等,要调table_open_cache值

max_allowed_packet = 16M  服务端最大允许接收的数据包大小。在没有调整该配置项的时候,服务端默认是4M

binlog_cache_size = 1M 默认是32KB  二进制日志缓存,未提交的事务会记录到一个缓存中,等待事务提交,通过 show global status like “binlog_cache%”;   binlog_cache_disk_use=0 若该值大于0,binlog_cache_size要调大

binlog_stmt_cache_size=64KB  默认是32KB 非事务二进制日志缓存,通过binlog_stmt_cache_disk_use=0,若该值大于0,binlog_stmt_cache_size要调大

max_heap_table_size = 64M  默认16M管理heap memory存储引擎表

tmp_table_size = 64M  默认是16M,SQL语句的排序或者分组时没有用到索引就会使用临时表空间.通过show global status like “created_tmp%” created_tmp_disk_table(硬盘)=0,如不等于0,tmp_table_size值要调大

这两个建议设置成一样值,若不一样,则会取小的值来起限制作用。   不能太小会出现“converted heap to myisam”的报错,

default_tmp_storage_engine=innodb是指临时表默认的存储引擎

internal_tmp_disk_storage_engine  是5.7才有。磁盘上临时表的管理,有参数create temporary table决定

read_buffer_size = 2M    仅仅用于MyISAM引擎,   读入缓冲区...对表进行顺序扫描的请求将分配一个读入缓冲区,MySql会为它分配一段内存缓冲区 read_buffer_size

read_rnd_buffer_size = 12M 不仅仅用在MyISAM引擎,而是用在所有引擎,,随机读缓冲区大小...该变量可以被任何存储引擎使用,当从一个已经排序的键值表中读取行时,会先从该缓冲区中获取而不再从磁盘上获取。默认为256K。

sort_buffer_size = 4M   内存中临时排序   是MySql执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。如果不能,可以尝试增加sort_buffer_size变量的大小,sort后的数据是以key-value的形式存在的,使用这些行指针去读取数据,将是以指针数据物理的顺序去读取,很大程度上是随机的方式读取数据的。MySQL从sort_buffer中读取这些行指针数据,然后通过指针排序后存入read_rnd_buffer中,之后再通过指针读取数据时,基本上都是顺序读取了

如果你取出很少字段的数据(小于max_length_for_sort_data),行数据将会全部存储在sort buffer里,因此将不需要read_rnd_buffer_size这个参数。而如果你查询的字段数据很长(这些字段很可能含有Text/Blob字段),比max_length_for_sort_data还长,read_rnd_buffer_size这个参数将派上用场。

join_buffer_size =  表连接使用默认256k,用于BKA 5.6后开始支持

key_buffer_size = 8192M  顺序扫描缓存,只用于MyISAM

thread_cache_size = 16  保存在内存中可以重复使用的线程的数量

query cache生产中关闭,原因只能缓存静态数据信息,数据如变化,会经常读写

mysql5.6之前是开启,5.6之后默认是关闭的。有两个参数组成

query_cache_size =0

query_cache_type  必须开始就设置为off

query_cache_size =

query_cache_limit =

ft_min_word_len = 4 全文索引功能,默认是4

slow_query_log = 1

long_query_time = 5 某条sql语句超过该参数设置的时间,就会记录慢查询日志中。单位是秒

slow_query_log_file = /data/mysql/data/mysql-slow.log

log_queries_not_using_indexes =on  如何运行的sql语句没有索引,会把sql语句记录到慢查询日志中

performance_schema = 0  5.5新增默认关闭,5.6默认是打开的,主要用于收集数据库服务器性能参数

explicit_defaults_for_timestamp=true

Skip_external_locking=on  默认开启

default_storage_engine = InnoDB

innodb_file_per_table = 1

innodb_open_files = 65535  可同时打开.ibd文件的个数 默认300.建议调大

innodb_buffer_pool_size = 6G  一般是物理内存50%-80%   5.7就可以在线改了

innodb_buffer_pool_instances = 3  默认是1,只有innodb_buffer大于1G 实例才生效,并发下

每个缓冲区各自管理自己的数据,互不影响。通过show engine innodb status 看到每个installce使用内存情况

innodb_buffer_pool_load_at_startup=1

innodb_buffer_pool_dump_at_shutdown=1      

这两个默认关闭,为1将的热点数据保存到ib_buffer_pool文件中,避免消失

#innodb_data_file_path =ibdata1:12M:autoextend

#//防止在高并发下,数据库受影响建议12M调成1GB

innodb_write_io_threads = 4  使用高转速磁盘可以额适当调大,可以按cpu个数来分配,不支持在线改

innodb_read_io_threads = 4  使用高转速磁盘可以额适当调大,可以按cpu个数来分配,不支持在线改

innodb_thread_concurrency = 8  内核最大并发线程数(innodb内部并发数),默认是0,代表不受限制,调整逻辑cpu核数的两倍

innodb_purge_threads = 1

innodb_flush_log_at_trx_commit = 1

sync_binlog=1

#innodb_flush和sync_binlog为1保持数据一致性,每次事务提交都会把log buffer 刷到文件中,并调用文件‘flush’操作刷新到磁盘,数据库对IO要求非常高。硬件提供IOPS比较差,可能数据库并发受到硬件IO问题无法提升

innodb_log_buffer_size = 16M 日志缓冲大小 把会这次改动的记录先写入日志缓冲中 范围16-64M

如何global中innodb_log_waits的值大于0,且在增长,要调大innodb_log_buffer的值

innodb_log_file_size = 200M

#//不能太大,恢复起来时间长,不能太小,频繁切换redolog日志, 可以看每分钟产生日志大小成60,一小时的来设置

innodb_log_files_in_group = 3  redo log 文件组中日志文件的数量,默认至少2个

innodb_max_dirty_pages_pct = 50   innodb缓存池中的脏页大于50%,就会触发脏页刷新 ,默认75

innodb_adaptive_flushing=1参数控制,默认开启,影响每秒刷新脏页的数目,通过buf_flush_get_desired_flush_reate函数判断重做日志产生的速度,来确定需要刷新脏页的最合适数量,替换之前的innodb_max_dirty_pages_pct,刷新至少100个脏页到磁盘。这样使得脏页比例小于innodb_max_dirty_pages_pct参数设置的值,也会刷新一定量的脏页。

innodb_change_buffer_max_size=50  插入缓冲大小占整个缓冲池的25%内存大小默认是25%,建议25%到50%

innodb_lock_wait_timeout = 120 的是事务等待获取资源等待的最长时间,超过这个时间还未分配到资源则会返回应用失败

innodb_flush_method=O_DIRECT 影响innodb数据文件,redo log文件的打开刷写模式有O_SYNC  O_DSYNC  O_DIRECT   选择O_DIRECT模式,数据直接从innodb buffer写入磁盘,不用通过os buffer

interactive_timeout = 400 服务器关闭交互式连接前等待活动的时间

wait_timeout = 400 服务器关闭非交互式连接之前等待活动的时间

两个参数要一起调整,且数值一样建议300-600

 

 

#########################################################

[client]
port = 3306
default-character-set=utf8
socket = /data/mysql/mysql.sock


[mysqld]
##############################
#不进行反解析
###############################
skip-name-resolve


##########################
#summary
##########################
port = 3306
datadir = /data/mysql/data
socket = /data/mysql/mysql.sock
user = mysql
pid-file = /data/mysql/data/mysql.pid


#################################
#timestamp
##################################
explicit_defaults_for_timestamp=true

open_files_limit = 65535


server-id = 100
log_slave_updates=1
binlog_format = row
expire_logs_days = 30  
log_error = /data/mysql/mysql-error.log
log_bin = /data/mysql/mysql-bin
 

max_connections = 3000  
max_user_connections = 1000  
max_connect_errors = 3000
back_log = 450
##back_log对超出连接暂存
 

table_open_cache = 8000   
max_allowed_packet = 16M  
#允许接受数据包大小

binlog_cache_size = 1M
#默认是32KB,受binlog_cache_disk_use来调节

binlog_stmt_cache_size=64KB
# 默认是32KB ,受binlog_stmt_cache_disk_use来调节

max_heap_table_size = 64M  
tmp_table_size = 64M  
#建议max_heap_table_size 和tmp_table_size值一样,tmp_table_size受created_tmp_disk_table

#default_tmp_storage_engine=innodb
#internal_tmp_disk_storage_engine  
#read_buffer_size = 2M    
read_rnd_buffer_size = 12M
#随机读缓冲大小

sort_buffer_size = 4M   
#key_buffer_size = 8192M  
thread_cache_size = 16  
query_cache_size =0
ft_min_word_len = 4
 

slow_query_log = on
long_query_time = 5
slow_query_log_file = /data/mysql/data/mysql-slow.log
log_queries_not_using_indexes =on  


default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_open_files = 65535  
innodb_buffer_pool_size = 2G  
innodb_buffer_pool_instances = 3  
#####################################################
innodb_buffer_pool_load_at_startup=1
innodb_buffer_pool_dump_at_shutdown=1      
#热点数据保存到ib_buffer_pool文件中,避免消失
########################################################
#innodb_data_file_path =ibdata1:1G:autoextend
#防止在高并发下,数据库受影响建议12M调成1GB


innodb_write_io_threads = 4  
innodb_read_io_threads = 4  
innodb_thread_concurrency = 4
innodb_purge_threads = 1


############################################
innodb_flush_log_at_trx_commit = 1
sync_binlog=1
##############################################
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3  
#redo log 文件组中日志文件的数量,默认至少2个

innodb_max_dirty_pages_pct = 50   
innodb_adaptive_flushing=1
innodb_lock_wait_timeout = 120
innodb_flush_method=O_DIRECT


interactive_timeout = 400
wait_timeout = 400


#plugin-load=validtae_password.so
#validate-password=FORCE_PLUS_PERMANENT
#validate_password_policy=0
#validate_password_length=6
#skip-grant-tables


#rpl_semi_sync_master_enabled=ON
#rpl_semi_sync_slave_enabled=ON
 

#######################################
#relay-log  slave mysql需要
########################################
relay-log-index = /data/mysql/mysqld-relay-bin
relay-log-info-file = /data/mysql/relay-log.info
relay-log = /data/mysql/mysqld-relay-bin

你可能感兴趣的:(MYSQL的my.cnf详解)