mysql调优――参数:variables

#客户端模块


[client]


port=3306


#sock=/var/lib/mysql3306.sock


#character_set_client =gbk


 


#mysqld模块是mysql服务端的配置


[mysqld]


#端口号


port=3306


#安装目录


basedir=/usr/local/mysql


#数据目录


datadir=/data/mysqldata/3306/


#服务端scok文件


socket=/data/mysqldata/3306/mysql3306.sock


#pid信息


pid_file=/data/mysqldata/3306/mysql3306.pid


 


#临时目录,比如排序,临时表之类的内容,就放在这里,load data


tmpdir=/opt/tmp


#默认引擎


default_storage_engine=innodb


#mysql暂时无法响应新请求之前,有多少个链接可以被缓存,短连接且并发高,需要配置这个参数,默认50,高于操作系统的限制无效,一般linux系统对排队的限制为512;


back_log=100


#禁用dns解析机器名来查找,只能通过解析IP查找


skip_name_resolve


#跳过外部锁定,表锁


skip_external_locking


#规定mysql最大可以容忍多少个block错误,block错误是一种链接错误


max_connect_errors=100000


#mysql允许的最大连接数,根据服务器内存和业务并发,有无长连接来确定


max_connections=2000


#server_id信息,一般以IP后两位加端口号来确定,用于区别实例


server_id=3306


#临时表的大小


tmp_table_size=256M


#临时表的最大大小


max_heap_table_size=256M


#锁等待时间


lock_wait_timeout=120


 


 


 


#字符集相关


character_set_server=gbk


#全文索引匹配的最小和最大字节数


ft_min_word_len=4


ft_max_word_len=84


 


#一些公用的buffer_size,针对每个session单独分配,超出了就直接在硬盘操作


join_buffer_size=2M


read_buffer_size=8M


sort_buffer_size=2M


query_cache_size = 64M


read_rnd_buffer_size = 16M


 


 


#*****************replication*****************


log_slave_updates


slave_load_tmpdir = /opt/tmp/


#数据包的大小


max_allowed_packet=16M


#复制跳过某类型错误,all是跳过所有,0是禁止跳过任何错误


slave-skip-errors=all


#下面参数规定了主从复制的目标,其中binlog_*设置在主库,replicate_*设置在从库


binlog_do_db


binlog_ignore_db


replicate_do_db


replicate_ignore_db=test,mysql


replicate_do_table


replicate_ignore_table


replicate_wild_do_table


replicate_wild_ignore_table


 


#********************myisam相关***************


#myisam的索引缓存,最大4G


key_buffer_size=32M


#bulk数据导入缓存大小


bulk_insert_buffer_size = 64M


myisam_sort_buffer_size = 128M


myisam_repair_threads = 1


myisam_recover


 


#**********************innodb相关*******************


#共享表空间定义


innodb_data_file_path=ibdata1:1024M:autoextend


#共享表空间存储位置


innodb_data_home_dir=/data/mysqldata/3306


#开启独立表空间


innodb_file_per_table=1


#这两个参数规定了innodb缓存池的总大小和个数,在数据量小但访问较多的情况下,开启instance,同时提供n个buffer缓存


innodb_buffer_pool_size=16G


innodb_buffer_pool_instances=4


#additional_mem_pool_size规定了数据字典的size,一般16M,足够300*300的表使用


innodb_additional_mem_pool_size=16M


#自适应索引,我个人更倾向于关掉这个选项


innodb_adaptive_hash_index=0


#事务提交刷新日志控制,有0,1,2三个参数值,0和2都破坏了事务提交的完整性,但是在io的合理利用上有很大优势


#0表示把每秒的事务提交产生的日志刷入磁盘,1s以内的事务日志,不论事务是否提交,所产生的日志都刷入磁盘


#1表示每个事务提交前,将日志写入redo(WAL)


#2表示将事务产生的日志计入系统缓冲,但是每秒将已提交的日志写入redo,未提交的则暂时不做处理,服务器down时,可能会造成数据丢失


innodb_flush_log_at_trx_commit=2


#innodb数据文件,redo_log的打开,刷新,写入控制,有三种类型:fdatasync,O_DSYNC,O_DIRECT


#fdatasync是调用fsync()去刷数据文件与redo log的buffer,数据和redo log的刷新写入都经过os buffer,mysql只写入系统缓冲,剩余工作交给系统。


#O_DSYNC,采用o_sync打开和刷redo log,用fsync刷数据文件;o_sync是写入时也经过os buffer,但是确保写入完成后才会返回成功,而不是只交给os就不管了。


#O_DIRECT,采用O_DIRECT打开数据和redo文件,使用fsync来刷写数据;o_direct数据写入由mysql server 的buffer直接写入磁盘,不经过os buffer。


innodb_flush_method=O_DIRETC


#Innodb故障恢复级别,有0~6这几个数字。区别可自己查


innodb_force_recovery=0


#实例关闭时采取的策略,有0,1,2这三个数字可选


#0表示完成所有full purge和merge insert buffer,脏页刷入硬盘,计入redo_log;


#1表示不需要完成full purge和merge insert buffer,只把脏页刷入硬盘,日志写入redo_log。


#2表示不需要完成full purge和merge insert buffer,也不需要刷脏页,只把日志计入redo_log,下次启动的时候进行恢复。


innodb_fast_shutdown=1


#下面这几个线程影响master_thread线程刷脏页,首先需要了解master_thread刷脏页的逻辑:分为1秒刷和10秒刷,每秒判断buf_get-modified_ratio_pct脏页率是否大于#innodb_max_dirty_pages_pct,是则刷innodb_io_capacity个脏页,否则啥都不干。每10s判断io次数是否少于200次,是则刷新innodb_io_capacity个脏页,然后合并插入缓冲,合并率为#innodb_io_capacity的5%,再按照每s的规则,判断脏页率刷新。


#其中innodb_adaptive_flushing在每s发生,通过判断1s内脏页的产生率,来确认刷新脏页的数量。每s刷新数量不再受innodb_max_dirty_pages_pct的影响。关闭效果更佳。


innodb_io_capacity=200


#innodb_adaptive_flushing


innodb_max_dirty_pages_pct=75


#xa分为内部xa和外部xa,内部xa是为了保证binlog和redo_log的一致性。外部xa是为了保证分布式事务的一致性


innodb_support_xa=1


#每n次binlog写入cache之后,将binlog_cache的内容同步到file中。0为禁止,由binlog系统自己决定何时刷binlog


sync_binlog=1


#innodb的文件存储格式:plugin之前的版本文件存储格式称为Antelope,包含compact和redundant两种行存储格式;


#plugin之后的版本文件存储格式称为Barracuda,包括了之前的Antelope,还有两种新的格式:Compressed和Dynamic


innodb_file_format=barracuda


#并发执行限制,根据CPU个数和硬盘个数来决定


innodb_thread_concurrency=16


#双写innodb的datapage在刷入磁盘提交前,先在doublewrite缓存中存放一份,然后由doublewrite写入磁盘


innodb_doublewrite=1


innodb_lock_wait_timeout = 30


innodb_commit_concurrency = 0


#读写线程数,在5.1以前自带innodb中,读写都为单线程,plugin中调整为4线程,但不可修改,5.5以后,读写线程数可修改


innodb_write_io_threads = 8


innodb_read_io_threads = 8


innodb_change_buffering=all


#transaction,事务隔离级别,默认是repeatable-read


transaction-isolation = READ-COMMITTED


 


 


#***************redo_log相关***********


#redo_log文件大小


innodb_log_file_size=256M


#redo_log文件组的文件个数


innodb_log_files_in_group=3


#redo log存放目录


innodb_log_group_home_dir=/data/mysqldata/3306/


 


#****************普通logs相关*************


#binlog日志路径和日志名,定义了binlog的index文件,和binlog日志


log_bin=/data/mysqllog/3306/mysql3306


#binlog的日志记录格式,有statement,row,mixed三种,记录格式都为二进制


#statement记录执行的sql语句,执行时间,前一个pos,pos等等一些环境信息;


#row对DML语句采用针对每行操作数据记录一条sql;


#mixed格式是前两者组合,具体记录形式还跟隔离级别,sql语句有关


binlog_format = mixed


#redo_log的缓存区大小


innodb_log_buffer_size=16M


#binlog的截止大小,碰到较大事务的时候,比如事务本身的log为100M,这时候,当前binlog是不会被截断的,也就是说这个binlog的size比100M要大


max_binlog_size = 50M


#这两个参数规定了事务未提交时的binlog缓冲区大小,binlog_cache_size占用内存空间,为每一个session分配2M大小


#不够用则写入临时文件,由max_binlog_cache_size限制,再不够用,就报错,写入中断。提交之后刷新到binlog文件中,一般可以不限制max_binlog_cache_size


binlog_cache_size = 2M


max_binlog_cache_size = 512M


#删除3+1天以前的binlog,默认0,不自动删除


expire_logs_days=3


#慢查询日志,超过1s的sql


log_slow_queries=on


slow_query_log=/mysqllog/mysql3307/mysql3307_slow.log


long_query_time = 1


#中级日志的路径名称和index


relay_log=/data/mysqldata/3306/mysql3306-relay-bin


#错误日志


log_error=/data/mysqldata/3306/mysql3306.err


 


#下面参数关注一下就可以,某些特殊情况需要考虑


#******************start*********


#用于主从复制,限制自增列,避免重复,global变量


#自增列的偏移量


#auto_increment_offset=1


#自增列的自增量


#auto_increment_increment=1


#事务提交,1为自动隐式提交,0为必须显式提交


#autocommit=1


#赋予用户create存储过程权限的时候,同时赋予alter和excute的权限


#automatic_sp_privileges=1


#


#skip_show_database


#完全禁用TCP/IP链接,仅限本机访问


#skip_networking


#只读模式,禁用用户的insert,update,delete权限,但是不限制主从复制


#read_only


#文件存储格式


#innodb_file_format=Barracuda


#mysql执行计划


#event_scheduler


#**************end*************


 


#mysql其他可执行文件对应的模块


 


[mysqldump]

# Do not buffer the whole result set in memory before writing it to

# file. Required for dumping very large tables

quick


max_allowed_packet = 16M


 


[mysql]


no-auto-rehash


 


[myisamchk]


key_buffer_size = 512M

sort_buffer_size = 512M

read_buffer = 8M

write_buffer = 8M


 


[mysqlhotcopy]


interactive-timeout


 


[mysqld_safe]


# Increase the amount of open files allowed per process. Warning: Make

# sure you have set the global system limit high enough! The high value

# is required for a large number of opened tables

open-files-limit = 8192


 


  


这里附上一份我自己常用的配置文件:


服务器是64G内存,320*6SSD盘


 



[client]

#password    = [your_password]

# port        = 3306

#socket        = /var/lib/mysql/mysql.sock


[mysqld]


# generic configuration options

port        = 3306

basedir         =/usr/local/mysql55/

socket          =/mysqldata3/mysql/data/mysql3306/mysql3306.sock

datadir         =/mysqldata3/mysql/data/mysql3306/

log-error       =/mysqldata3/mysql/data/mysql3306/mysql3306.err

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



##dns resolve

skip-name-resolve       #禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间

external-locking


##tmpdir

tmpdir          = /opt/tmp/

slave_load_tmpdir = /opt/tmp/


##network

net_buffer_length = 8K

max_allowed_packet = 16M

#skip-networking


##connection

max_connections = 1700

max_connect_errors = 10000

back_log = 100



##heaptable

max_heap_table_size = 256M


##

table_open_cache = 2048

read_buffer_size = 2M

read_rnd_buffer_size = 10M

sort_buffer_size = 256M

join_buffer_size = 8M

thread_cache_size = 8

thread_concurrency = 8

query_cache_size = 64M

query_cache_limit = 2M



##engine

default-storage-engine = INNODB

#ignore_builtin_innodb

#plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so



tmp_table_size = 256M



#log

#log_warnings

slow_query_log=/mysqllog3/mysql3306/mysql3306_slow.log

long_query_time = 1

log-bin=/mysqllog3/mysql3306/mysql3306

binlog_format = mixed

max_binlog_cache_size = 512M

max_binlog_size = 50M

binlog_cache_size = 2M

sync_binlog=1



##replication

server-id = 36193306

log-slave-updates

#slave-skip-errors

replicate_ignore_db=test,mysql


#read_only


#*** MyISAM Specific options

key_buffer_size = 128M

bulk_insert_buffer_size = 64M

myisam_sort_buffer_size = 128M

myisam_max_sort_file_size = 10G

myisam_repair_threads = 1

myisam_recover



# *** INNODB Specific options ***

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 32G

#innodb_buffer_pool_instances=4

innodb_file_per_table=1

innodb_data_home_dir = /mysqldata3/mysql/data/mysql3306

innodb_force_recovery=1

innodb_thread_concurrency = 16

innodb_flush_log_at_trx_commit = 2

innodb_purge_thread=1

innodb_file_format=barracuda

innodb_support_xa=1

skip-innodb-adaptive-hash-index 


##log_buffer

innodb_log_buffer_size = 32M

innodb_log_file_size = 1024M

innodb_log_files_in_group = 3


##io

innodb_max_dirty_pages_pct = 75

innodb_flush_method=O_DSYNC

innodb_lock_wait_timeout = 30

innodb_commit_concurrency = 0

innodb_io_capacity=200

innodb_write_io_threads = 8

innodb_read_io_threads = 8

innodb_change_buffering=all



##transaction

transaction-isolation = repeatable-read


innodb_doublewrite=1



[mysqldump]

quick

max_allowed_packet = 16M


[mysql]

no-auto-rehash


[myisamchk]

key_buffer_size = 512M

sort_buffer_size = 512M

read_buffer = 8M

write_buffer = 8M


[mysqlhotcopy]

interactive-timeout


[mysqld_safe]

open-files-limit = 8192


你可能感兴趣的:(mysql,调优)