#客户端模块
[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