mysql配置文件my.cnf的事例并附解释
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql配置文件my.cnf的事例并附解释相关的知识,希望对你有一定的参考价值。
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
log-error = /data/mysql/data/mysql.err
#默认存储引擎,5.5之后默认就都是innodb
default-storage-engine=INNODB
#默认表的存储引擎,5.5之后默认就都是innodb
default_table_type = InnoDB
#安装MySQL的路径,代码调用路径
basedir=/usr/local/services/mysql
#全局数据文件及结构的存放位置;表数据(包括innodb引擎),索引,日志(除非单独设置)等文件都会存放在这里
datadir=/data/mysql/data
#innodb引擎的共享表空间数据文件根目录,如果不设置,默认使用datadir
#innodb_data_home_dir = /data/mysql/data
#默认字符集类型,按需求设定
character-set-server = utf8
#关闭一个非交互的连接之前所要等待的秒数,其取值范围为1-31536000(linux),默认值28800。太长不利于高效利用.
wait_timeout=100
#禁用DNS查找,但是就不能在mysql的授权表中使用主机名了,只能使用IP
skip-name-resolve
#跳过外部锁定,防止文件目录不可用
skip-external-locking
#使用InnoDB引擎独立表空间,每个表独立表空间,不使用共享表空间
innodb_file_per_table = 1
#在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中,默认值为50。并发高需要调高这个值,但是太高会占内存,不能超过系统设定值.
back_log = 103
#安全参数,与性能无关,阻止设定值次数尝试登陆失败后的客户端登陆,以防止暴力破解密码,内网安全要求低的可以适当增加
max_connect_errors = 100000
#线程处理模式,no-threads(单线程处理),one-thread-per-connection(每个请求对应一个线程),dynamically-loaded/pool-of-threads(线程池模式,官方mysql和Percona参数名字不一样)
#thread_handling = pool-of-threads
#线程池中连接超时的时间,默认500ms,调低可以提高连接池的利用
#thread_pool_stall_limit = 200
#索引缓冲区的大小,只对MyISAM表起作用,但是系统表和临时磁盘表都还是MyISAM表,要想加快这些的运行速度,这个值还是不能太低
key_buffer_size = 32M
#批量插入缓存大小,只对MyISAM表起作用,适用于在一次性插入100-1000+条记录时,提高效率。默认值是8M
bulk_insert_buffer_size = 64M
#有时候较大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败,按实际情况配置。
max_allowed_packet = 32M
#允许存到缓存里的表的数量,增大可改善频繁打开和关闭表的操作,有一定加快sql速度的意义,默认是64
table_open_cache = 512
#排序缓存,会话级别内存缓存,一般OLTP超过512K性能增加不明显,建议值为56K-1M,如果是数据仓库(OLAP)设置8M以上能进一步提升效果
sort_buffer_size = 512K
#TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行,主要影响导入导出
net_buffer_length = 8K
#会话级别内存缓存,以顺序读扫描的方式扫描表数据的时候使用缓冲区的大小,如果很多顺序扫描,可以适当增加,只对MyISAM表起作用,
read_buffer_size = 1M
#会话级别内存缓存,以随机读扫描的方式扫描表数据的时候使用缓冲区的大小,也会用做新特性mrr的buffer
read_rnd_buffer_size = 16M
#MyISAM表发生变化时重新排序所需的缓冲,临时磁盘表都是MyISAM表,要加快临时表排序,这个值不能低,特别是数据仓库(OLAP)
myisam_sort_buffer_size = 128M
#MySQL重建索引时所允许的最大临时文件的最大大小
myisam_max_sort_file_size = 10G
#自动检查和修复没有适当关闭的 MyISAM 表
myisam_repair_threads = 1
#MyISAM表在打开的时候被自动检查,如果表被不恰当地关闭,就修复表。
myisam_recover
#启用binlog,并指定存储位置,默认存到数据目录,主库一定要开,从库可适当关闭
log-bin=/data/mysql/data/mysql-bin
#binlog类型,建议用mixed或row
binlog_format=mixed
#数据库ID号,主要用于主从复制相关
server-id = 1
#共享表空间,至少1G以上
innodb_data_file_path = ibdata1:1G:autoextend
#实例级别内存参数innodb缓存总量(包含一些其他缓存),单实例建议50%-70%,多实例建议20%左右
innodb_buffer_pool_size = 830M
#设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小。表越多需要分配越多的内存。如果超出设定值,会在错误日志写警告信息。默认值是 1MB.
innodb_additional_mem_pool_size = 2M
#默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中。
innodb_buffer_pool_load_at_startup = 1
#默认为关闭OFF。在关闭时把热数据dump到本地磁盘。
innodb_buffer_pool_dump_at_shutdown = 1
#redolog硬盘参数,建议1-2G或以上
innodb_log_file_size = 1024M
#redolog内存参数,8-32M即可
innodb_log_buffer_size = 16M
#DB中设置几组redolog,默认是2,设置多一些可以减少磁盘压力,特别是大事务的情况
innodb_log_files_in_group = 3
#redolog存放目录,建议不设置,ib_logfile默认存在数据文件目录下,使用它主要是分散磁盘压力
#innodb_log_group_home_dir = /data/mysql/data
#控制innodb数据文件及redo log的打开、刷写模式,有三个值:fdatasync(默认且速度最快),O_DSYNC,O_DIRECT(禁用了系统缓存,速度慢但最安全),看需求设定
#innodb_flush_method = O_DIRECT
#事务隔离级别,总共四种:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE,默认是RR
transaction_isolation = REPEATABLE-READ
#事务提交写到硬盘的频率,0是一定量再写入,1是立刻写入(最拖慢速度最安全),2是由系统决定
innodb_flush_log_at_trx_commit = 2
#刷新binlog的频率,0由系统决定什么时候刷新,1每次事务都刷新一次(最安全),N(其他数量)每N个事务刷新一次,如果不支持group commit那么就表示n个event刷新一次,如果是支持group commit,那么就表示攒够n个binlog group才刷新一次,即支持group commit的性能更好,减少IO次数。
sync_binlog = 0
#行格式定义,有Antelope(支持冗余,紧凑行格式)和Barracuda(支持数据压缩,动态行格式,改善blob,text字段存储布局)两种,要想支持压缩类型,必须先定义Barracuda.
innodb_file_format_max = Barracuda
#当脏页占了多少百分比后就开始刷新脏页,写得越多,应该设置越低,根据LSN来参考log sequence number,Log flushed up to的差距
innodb_max_dirty_pages_pct = 35
#刷新到磁盘的脏页数量,根据硬盘性能判定,机械硬盘1千左右,SSD硬盘4-5千左右,PCIE-SSD可以1-2万以上
innodb_io_capacity = 1000
#最大刷新到磁盘的脏页数量,根据上面参数设定,但一定要比他多
innodb_io_capacity_max = 2000
#doublewrite开关,如果存储设备支持原子写,可以关闭,写入速度增加明显,其他情况建议开启
innodb_doublewrite = 1
#限制并发线程的数量,一旦执行线程的数量达到这个限制,额外的线程在被放置到对队列中之前,会睡眠数微秒,可以通过设定参数innodb_thread_sleep_delay来配置睡眠时间。默认值为0,它表示默认情况下不限制线程并发执行的数量。
innodb_thread_concurrency = 0
#在新版本mysql中,query_cache已失去意义,并且偶尔会造成query_cache锁,增加额外开销,建议直接关闭
query_cache_size=0
query_cache_type=0
#数据结构ddl操作的锁的等待时间
lock_wait_timeout = 300
#innodb的dml操作的行级锁的等待时间,innodb有自旋锁,等待时间太长会耗费资源
innodb_lock_wait_timeout = 10
#默认值为OFF,如果事务因为加锁超时,会回滚上一条语句执行的操作.如果设置ON,则整个事务都会回滚.注重事务一致性的需要开启
innodb_rollback_on_timeout = 1
#用来配置从服务器的更新是否写入二进制日志,如果有层级从库就必须开,没有的话建议关闭,能有效提高性能
log_slave_updates
#当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,建议开启,可以有效保证数据一致性.
relay_log_recovery = 1
#临时表缓存,会话级别内存缓存,超过之后临时表会转到磁盘上,视乎表的空间大小而衡量设置,磁盘上的临时表引擎默认是myisam,内存的临时表引擎是memory,均不可读写
tmp_table_size=320M
#临时表缓存,会话级别内存缓存,和tmp_table_size一起限制临时表大小,可以创建的内存表(memory table)的最大行数,一般默认16M(不设置)就可以.
#max_heap_table_size=96M
#如果临时表实在太大,磁盘空间压力增大,则需要考虑设置临时表存储位置,默认是/tmp
#tmpdir=/tmp
#最大连接数限制,建议设置成历史最大连接数的80%,不然可能全部卡死
max_connections=638
#可以重新利用保存在缓存中线程的数量.当线程断开后不会立刻关闭,会保存到缓存中等待被再利用,并发高建议调大,且设置成与threads_connected一样,最好少于200,因为会耗内存.
thread_cache_size = 51
#会话级别缓存,按实际情况配置,join比较多就调大。
join_buffer_size = 32M
#开启慢查询参数,0关闭,1开启
slow_query_log = 0
#设置慢查询存储路径
slow_query_log_file = /tmp/slow_querys.log
#慢查询记录时间,建议少于0.1秒
long_query_time = 0.1
#用来设置是否记录没有使用索引的查询到慢查询记录,看需求开启。
#log_queries_not_using_indexes = OFF
#管理指令也会被记录到慢查询。比如OPTIMEZE TABLE, ALTER TABLE,看需求开启
#log-slow-admin-statements = OFF
#全局最大打开文件数,不可以超过系统设定的最大文件数,不然无效
open_files_limit = 65535
#innodb引擎最大打开文件数,不可以超过全局最大文件数.
innodb_open_files = 65535
#binlog会话级别内存缓存,事务没有提交的时候,产生的日志记录到Cache中;等到事务需要提交的时候,则把日志持久化到磁盘。
binlog_cache_size = 4M
#最大binlog日志的缓存区大小,所有会话的binlog_cache_size总数不能超过这个值,默认就是最大值,在32位的系统中是4G,64位的是16P,设置它是防止mysql内存溢出
max_binlog_cache_size = 4G
#binlog二进制日志写入给定值,默认值是1GB,最大不能大于1G,根据实际产生情况设置,文件太大不利于打开,但是如果你正使用大的事务,二进制日志还是会超过限制
max_binlog_size = 500M
#binlog保存天数,过期自动删除
expire_logs_days=7
#mysql5.6后参数,开启后,会将所有deadlock记录在error_log中,作为dba,你应该需要知道有多少死锁信息
#innodb_print_all_deadlocks = 1
#在5.6.2之前,slave记录的master信息以及slave应用binlog的信息存放在文件中,即master.info与relay-log.info。在5.6.2版本之后,允许记录到table中
#master_info_repository = TABLE
#同上信息
#relay_log_info_repository = TABLE
#GTID模式,5.6新功能,新的复制方式,需要就打开,binlog要改成row
#gtid_mode = on
#强制GTID的一致性,一般和上面参数一起使用,但要慎重开启,开启后只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行,像create table ... select 和 create temporarytable语句,以及同时更新事务表和非事务表的SQL语句或事务都不允许执行。
#enforce_gtid_consistency = 1
#关闭numa功能,5.6.27新参数
#innodb_numa_interleave = 1
#用于从flush队列中取事务的超时时间,这主要是防止并发事务过高,导致某些事务的RT上升,单位微秒,默认是0.
#binlog_max_flush_queue_time = 0
[mysqldump]
quick
max_allowed_packet = 32M
[mysql]
no-auto-rehash
prompt="\[email protected]\h \R:\m:\s [\d]> "
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
以上是关于mysql配置文件my.cnf的事例并附解释的主要内容,如果未能解决你的问题,请参考以下文章
mysql my.cnf 或my.ini配置文件参数解释(转):