mysql配置文件详解

[client]

​port = 3306 # 设置mysql客户端连接服务端时默认使用的端口

socket = /tmp/mysql.sock​

default-character-set=utf8 # 设置mysql客户端默认字符集​

[mysql]

no-auto-rehash

[mysqld]​

port=3306 # mysql服务端默认监听(listen on)的TCP/IP端口

basedir = /usr/local/mysql  # 基准路径,其他路径都相对于这个路径

datadir = /etc/mysql  # mysql数据库文件所在目录

default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎

max_connections=100 # mysql服务器支持的最大并发连接数(用户数)。但总会预留其中的一个连接给管理员使用超级权限登录,即使连接数目达到最大限制。如果设置得过小而用户比较多,会经常出现“Too many connections”错误

query_cache_size=512M #指定MySQL查询缓冲区的大小。可以通过在MySQL控制台观察,如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多

query_cache_size​对于1G内存的小服务器,设个50M就可以了,不然mysql没多久就down了哈哈

query_cache_limit = 2M#指定单个查询能够使用的缓冲区大小,默认1M​

table_open_cache = 512  #用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与       max_connections有关。当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存

tmp_table_size = 64M​  # 内存中的每个临时表允许的最大大小。如果临时表大小超过该值,临时表将自动转为基于磁盘的表(Disk Based Table)。

thread_cache_size = 6  # 缓存的最大线程数。当客户端连接断开时,如果客户端总连接数小于该值,则处理客户端任务的线程放回缓存。在高并发情况下,如果该值设置得太小,就会有很多线程频繁创建,线程创建的开销会变大,查询效率也会下降。一般来说如果在应用端有良好的多线程处理,这个参数对性能不会有太大的提高

thread_cache_size太大,mysql也会挂​

1G  —> 8

2G  —> 16

3G  —> 32

​>3G  —> 64

skip-locking #避免MySQL的外部锁定,减少出错几率增强稳定性。​

skip-name-resolve #禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求! 

back_log = 500 #back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。

max_allowed_packet = 32M​

thread_stack = 512K

sort_buffer_size=8M # connection级参数(为每个线程配置),500个线程将消耗500*256K的sort_buffer_size

join_buffer_size = 8M# 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享​

max_connect_errors = 10000000​

wait_timeout = 10 #指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。​

thread_concurrency = 8 #该参数取值为服务器逻辑CPU数量*2​

skip-networking #开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!​

binlog_cache_size = 1M# 一个事务,在没有提交的时候,产生的日志,记录到Cache中;等到事务提交需要提交的时候,则把日志持久化到磁盘。默认binlog_cache_size大小32K​

max_heap_table_size = 8M# 定义了用户可以创建的内存表(memory table)的大小。这个值用来计算内存表的最大行数值。这个变量支持动态改变​

transaction_isolation = REPEATABLE-READ# MySQL支持4种事务隔离级别,他们分别是:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.如没有指定,MySQL默认采用的是REPEATABLE-READ,ORACLE默认的是READ-COMMITTED​

log-bin = mysql-bin

ft_min_word_len = 4 # 分词词汇最小长度,默认4​

binlog_format = mixed​

expire_logs_days = 30 #超过30天的binlog删除

log_error = /etc/log/mysql/mysql_3306.err #错误日志路径

slow_query_log = 1

​long_query_time = 1 #慢查询时间 超过1秒则为慢查询

​slow_query_log_file = /etc/mysql/slow.log​

performance_schema = 0

explicit_defaults_for_timestamp

lower_case_table_names = 1 #不区分大小写

​skip-external-locking #MySQL选项以避免外部锁定。该选项默认开启

interactive_timeout = 28800# 服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。默认值:28800秒(8小时)​

# MyISAM相关参数

myisam_max_sort_file_size=10G # mysql重建索引时允许使用的临时文件最大大小

​myisam_sort_buffer_size=128M # MyISAM设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区

​key_buffer_size=256M # Key Buffer大小,用于缓存MyISAM表的索引块。决定数据库索引处理的速度(尤其是索引读)

read_buffer_size=2M # 用于对MyISAM表全表扫描时使用的缓冲区大小。针对每个线程进行分配(前提是进行了全表扫描)。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。

read_rnd_buffer_size=16M

bulk_insert_buffer_size = 8M# 批量插入缓存大小, 这个参数是针对MyISAM存储引擎来说的。适用于在一次性插入100-1000+条记录时, 提高效率。默认值是8M。可以针对数据量的大小,翻倍增加

myisam_repair_threads = 1# 如果该值大于1,在Repair by sorting过程中并行创建MyISAM表索引(每个索引在自己的线程内)

# InnoDB相关参数

innodb_additional_mem_pool_size=3M # InnoDB用于存储元数据信息的内存池大小,一般不需修改

​innodb_flush_log_at_trx_commit =1 # 事务相关参数,如果值为1,则InnoDB在每次commit都会将事务日志写入磁盘(磁盘IO消耗较大),这样保证了完全的ACID特性。而如果设置为0,则表示事务日志写入内存log和内存log写入磁盘的频率都为1次/秒。如果设为2则表示事务日志在每次commit都写入内存log,但内存log写入磁盘的频率为1次/秒。

​innodb_log_buffer_size=2M # InnoDB日志数据缓冲大小,如果缓冲满了,就会将缓冲中的日志数据写入磁盘(flush)。由于一般至少都1秒钟会写一次磁盘,所以没必要设置过大,即使是长事务。

​innodb_buffer_pool_size=105M # InnoDB使用缓冲池来缓存索引和行数据。该值设置的越大,则磁盘IO越少。一般将该值设为物理内存的80%。

innodb_buffer_pool_size对于1G小服务器设个50M就好了呵呵​

​innodb_log_file_size=53M # 每一个InnoDB事务日志的大小。一般设为innodb_buffer_pool_size的25%到100%

​innodb_thread_concurrency=9 # InnoDB内核最大并发线程数。

innodb_file_per_table = 1# InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间# 独立表空间优点: 1.每个表都有自已独立的表空间。 2.每个表的数据和索引都会存在自已的表空间中。 3.可以实现单表在不同的数据库中移动。 4.空间可以回收(除drop table操作处,表空不能自已回收) 缺点: 单表增加过大,如超过100G结论:共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整:innodb_open_files

innodb_open_files = 500# 限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个值默认是300

innodb_write_io_threads = 4

​innodb_read_io_threads = 4# innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求,根据你的 CPU 核数来更改,默认是4  注:这两个参数不支持动态改变,需要把该参数加入到my.cnf里,修改完后重启MySQL服务,允许值的范围从 1-64

innodb_purge_threads = 1# InnoDB中的清除操作是一类定期回收无用数据的操作。在之前的几个版本中,清除操作是主线程的一部分,这意味着运行时它可能会堵塞其它的数据库操作。从MySQL5.5.X版本开始,该操作运行于独立的线程中,并支持更多的并发数。用户可通过设置innodb_purge_threads配置参数来选择清除操作是否使用单独线程,默认情况下参数设置为0(不使用单独线程),设置为 1 时表示使用单独的清除线程。建议为1​

innodb_flush_log_at_trx_commit = 2# 0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件(REDO LOG)中。不论事务是否已经提交)默认的日志文件是ib_logfile0,ib_logfile1,1:当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志 2:如果设为2,每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会刷到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这要取决于进程的调度。每次事务提交的时候将数据写入事务日志,而这里的写入仅是调用了文件系统的写入操作,而文件系统是有 缓存的,所以这个写入并不能保证数据已经写入到物理磁盘, 默认值1是为了保证完整的ACID。当然,你可以将这个配置项设为1以外的值来换取更高的性能,但是在系统崩溃的时候,你将会丢失1秒的数据。设为0的话,mysqld进程崩溃的时候,就会丢失最后1秒的事务。设为2,只有在操作系统崩溃或者断电的时候才会丢失最后1秒的数据。InnoDB在做恢复的时候会忽略这个值。 总结: 设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能​

innodb_log_files_in_group = 3# 为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3​

innodb_max_dirty_pages_pct = 90# innodb主线程刷新缓存池中的数据,使脏数据比例小于90%​

innodb_lock_wait_timeout = 120 # InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒


[mysqldump]​

quick

​max_allowed_packet = 16M #服务器发送和接受的最大包长度

[myisamchk]

​key_buffer_size = 8M

​sort_buffer_size = 8M

​read_buffer = 4M

​write_buffer = 4M​

[mysqld_safe]​

open-files-limit = 16384

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值