[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