您的位置:首页 > 数据库 > MySQL

mysql调优——参数:variables

2014-08-18 12:24 218 查看
#客户端模块

[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 调优