MySQL my.cnf 参数 详解

[client]
port= 3306//客户端端口号为3306
socket= /tmp/mysql.sock//套接字文件(sockets),这种文件一般用在网络上的资料套接,mysqld守护进程生成了这个文件,其他与mysql相关的程序想使用mysql,估计就是通过这个文件了。

[mysql]
no-auto-rehash//仅仅允许使用键值的 UPDATEs 和 DELETEs .
[mysqld]
character-set-server = utf8//新数据库或数据表的默认字符集。为了与MySQL的早期版本保持兼容,这个字符集也可以用–default-character-set选项给出; 但这个选项已经显得有点过时了。
replicate-ignore-db = mysql//不对这个数据库进行镜像处理。
replicate-ignore-db = test
replicate-ignore-db = information_schema
user= mysql//mysqld程序在启动后将在给定UNIX/Linux账户下执行; mysqld必须从root账户启动才能在启动后切换到另一个账户下执行; mysqld_safe脚本将默认使用–user=mysql选项来启动mysqld程序。
port= 3306//为MySQL程序指定一个TCP/IP通信端口(通常是3306端口)。
socket= /tmp/mysql.sock
basedir = /usr/local/mysql//使用给定目录作为根目录(安装目录)。
datadir = /data/mysql/data//从给定目录读取数据库文件。
open_files_limit= 10240//设置打开文件数量允许至少值。
back_log = 600//back_log是操作系统在监听队列中所能保持的连接数,队列保存了再mysql连接管理器线程处理之前的连接,如果你有非常高的连接率并且出现"connection refused"报错,你就应该增加此处的值。检查你的操作系统文档来获取这个变量的最大值,如果将back_log设定到比你操作系统限制更高的值,将会没有效果。
max_connections = 3000//MySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。
max_connect_errors = 6000//每个客户端连接最大的错误允许数量,如果达到了此限制,这个客户端将会被mysql服务阻止直到执行了“flush hosts”或者服务重启;非法的密码以及其他在链接时的错误会增加此值,查看“aborted_connects”状态来获取全局计数器。
table_cache = 614//同时打开的数据表的数量(默认设置是64)。所有线程所打开表的数量,增加此值就增加了Mysqld所需要的文件描述符的数量,这样你需要确认在【mysqld】中“open-files-limit”变量设置打开文件数量允许至少4096, table_cache=2048.
external-locking = FALSE //允许外部文件级别的锁,打开文件锁会对性能造成负面影响,所以只有在你在同样的文件上运行多个数据库实例时才使用此选项(注意仍会有其他约束!),或者你在文件层面上使用了其他一些软件依赖来锁定MyISAM表。
max_allowed_packet = 32M//服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要),每个链接独立的大小,大小动态增加。
sort_buffer_size = 2M//为排序操作分配的缓存区的长度(默认设置是2M); 如果这个缓存区太小,则必须创建一个临时文件来进行排序。
join_buffer_size = 2M//在参加JOIN操作的数据列没有索引时为JOIN操作分配的缓存区长度(默认设置是128K)。
thread_cache_size = 300//我们在cache中保留多少线程用于重用,当一个客户端断开连接后,如果cache中的线程还少于thread_cache_size,则客户端线程被放入cache中,这可以在你需要大量新连接的时候极大的减少线程创建的开销(一般来说如果你有好的线程模型的话,这不会有明显的性能提升)。
thread_concurrency = 8//允许线程并发大小,官方推荐设置和 CPU 最大线程一样。
query_cache_size = 512M//查询缓存区的最大长度(默认设置是0,不开辟查询缓存区)。
query_cache_limit = 2M//允许临时存放在查询缓存区里的查询结果的最大长度(默认设置是1M)。
query_cache_min_res_unit = 2k //设置查询缓存分配内存的最小单位,要适当地设置此参数,可以做到为减少内存块的申请和分配次数,但是设置过大可能导致内存碎片数值上升。默认值为4K,建议设置为1k~16K。
default-storage-engine = MyISAM//新数据表的默认数据表类型(默认设置是MyISAM)。这项设置还可以通过–default-table-type选项来设置。
default_table_type = MyISAM//当创建新表时作为默认使用的表类型,如果在创建表示没有特别执行表类型,将会使用此值。
thread_stack = 192K//线程使用的堆大小,此容量的内存在每次连接时被预留。mysql本身常不会需要超过64K的内存,如果你使用你自己的需要大量堆的UDF函数,或者你的操作系统对于某些操作需要更多的堆,你也许需要将其设置的更高一点。
transaction_isolation = READ-COMMITTED//设定默认的事务隔离级别,可用的级别有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE。
tmp_table_size = 246M//临时HEAP数据表的最大长度(默认设置是32M); 超过这个长度的临时数据表将被转换为MyISAM数据表并存入一个临时文件。
max_heap_table_size = 246M//HEAP数据表的最大长度(默认设置是16M); 超过这个长度的HEAP数据表将被存入一个临时文件而不是驻留在内存里。
long_query_time = 3//慢查询的执行用时上限(默认设置是10s)。
log-bin = /data/mysql/3306/mysql-bin//把对数据进行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二进制格式记入日志(二进制变更日志,binary update log)。这种日志的文件名是filename.n或默认的hostname.n,其中n是一个6位数字的整数(日志文件按顺序编号)。
binlog_cache_size = 4M//在一个事务中binlog为了记录sql状态所持有的cache大小,如果你经常使用大的,多声明的事务,你可以增加此值来获得更大的性能,所有从事务来的状态都被缓冲在binlog缓冲中,然后再提交后一次性写入到binlog中,如果事务比此值大,会使用磁盘上的临时文件来替代,此缓冲在每个链接的事务第一次更新状态时被创建。
binlog_format = MIXED//STATEMENT,ROW,MIXED # 基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。相应地,binlog的格式也有三种:STATEMENT,ROW,MIXED。
max_binlog_cache_size = 8M//最大的二进制Cache日志缓冲区尺寸。
max_binlog_size = 1G//二进制日志文件的最大长度(默认设置是1GB)。在前一个二进制日志文件里的信息量超过这个最大长度之前,MySQL服务器会自动提供一个新的二进制日志文件接续上。
expire_logs_days = 30//超过30天的binlog删除。
key_buffer_size = 256M//用来存放索引区块的RMA值(默认设置是8M)。
read_buffer_size = 1M//为从数据表顺序读取数据的读操作保留的缓存区的长度(默认设置是128KB); 这个选项的设置值在必要时可以用SQL命令SET SESSION read_buffer_size = n命令加以改变。
read_rnd_buffer_size = 16M//类似于read_buffer_size选项,但针对的是按某种特定顺序(比如使用了ORDER BY子句的查询)输出的查询结果(默认设置是256K)。
bulk_insert_buffer_size = 64M//为一次插入多条新记录的INSERT命令分配的缓存区长度(默认设置是8M)。
myisam_sort_buffer_size = 128M//MyISAM 设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区。
myisam_max_sort_file_size = 10G//MyISAM 如果临时文件会变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出.重建MyISAM索引(在REPAIR TABLE、ALTER TABLE或LOAD DATA INFILE过程中)时,允许MySQL使用的临时文件的最大空间大小。如果文件的大小超过该值,则使用键值缓存创建索引,要慢得多。该值的单位为字节。
myisam_repair_threads = 1//如果该值大于1,在Repair by sorting过程中并行创建MyISAM表索引(每个索引在自己的线程内)。
myisam_recover//允许的GROUP_CONCAT()函数结果的最大长度。

skip-name-resolve//grant 时,必须使用ip不能使用主机名。
master-connect-retry = 10//如果与主控服务器的连接没有成功,则等待n秒(s)后再进行管理方式(默认设置是60s)。如果从属服务器存在mater.info文件,它将忽略此选项。
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396//即使发生出错代码为n1、n2等的错误,镜像处理工作也继续进行(即不管发生什么错误,镜像处理工作也继续进行)。如果配置得当,从属服务器不应该在执行 SQL命令时发生错误(在主控服务器上执行出错的SQL命令不会被发送到从属服务器上做镜像处理); 如果不使用slave-skip-errors选项,从属服务器上的镜像工作就可能因为发生错误而中断,中断后需要有人工参与才能继续进行。
server-id = 1//给服务器分配一个独一无二的ID编号; n的取值范围是1~2的32次方启用二进制日志功能。
innodb_additional_mem_pool_size = 16M//帧缓存的控制对象需要从此处申请缓存,所以该值与innodb_buffer_pool对应。
innodb_buffer_pool_size = 1024M//包括数据页、索引页、插入缓存、锁信息、自适应哈希所以、数据字典信息。
innodb_data_home_dir = /data/mysqldata///InnoDB主目录,所有与InnoDB数据表有关的目录或文件路径都相对于这个路径。在默认的情况下,这个主目录就是MySQL的数据目录。
innodb_data_file_path = ibdata1:2000M; ibdata2:10M:autoextend//用来容纳InnoDB为数据表的表空间: 可能涉及一个以上的文件; 每一个表空间文件的最大长度都必须以字节(B)、兆字节(MB)或千兆字节(GB)为单位给出; 表空间文件的名字必须以分号隔开; 最后一个表空间文件还可以带一个autoextend属性和一个最大长度(max:n)。例如,ibdata1:1G; ibdata2:1G:autoextend:max:2G的意思是: 表空间文件ibdata1的最大长度是1GB,ibdata2的最大长度也是1G,但允许它扩充到2GB。除文件名外,还可以用硬盘分区的设置名来定义表 空间,此时必须给表空间的最大初始长度值加上newraw关键字做后缀,给表空间的最大扩充长度值加上raw关键字做后缀(例如/dev/hdb1: 20Gnewraw或/dev/hdb1:20Graw); MySQL 4.0及更高版本的默认设置是ibdata1:10M:autoextend。#innodb_data_file_path = ibdata1:50M:autoextend
innodb_log_group_home_dir = /data/mysqldata///用来存放InnoDB日志文件的目录路径(如ib_logfile0、ib_logfile1等)。在默认的情况下,InnoDB驱动程序将使用 MySQL数据目录作为自己保存日志文件的位置。
innodb_file_io_threads = 4//I/O操作(硬盘写操作)的最大线程个数(默认设置是4)。
innodb_thread_concurrency = 8//InnoDB驱动程序能够同时使用的最大线程个数(默认设置是8)。
innodb_flush_log_at_trx_commit = 2//这个选项决定着什么时候把日志信息写入日志文件以及什么时候把这些文件物理地写(术语称为”同步”)到硬盘上。设置值0的意思是每隔一秒写一次日志并进行 同步,这可以减少硬盘写操作次数,但可能造成数据丢失; 设置值1(设置设置)的意思是在每执行完一条COMMIT命令就写一次日志并进行同步,这可以防止数据丢失,但硬盘写操作可能会很频繁; 设置值2是一般折衷的办法,即每执行完一条COMMIT命令写一次日志,每隔一秒进行一次同步。
innodb_log_buffer_size = 16M//事务日志文件写操作缓存区的最大长度(默认设置是1MB)。
innodb_log_file_size = 128M//事物日志大小.
innodb_log_files_in_group = 3 //使用多少个日志文件(默认设置是2)。InnoDB数据表驱动程序将以轮转方式依次填写这些文件; 当所有的日志文件都写满以后,之后的日志信息将写入第一个日志文件的最大长度(默认设置是5MB)。这个长度必须以MB(兆字节)或GB(千兆字节)为单 位进行设置。
innodb_max_dirty_pages_pct = 90//innodb主线程刷新缓存池中的数据,使脏数据比例小于90%.
innodb_lock_wait_timeout = 120//如果某个事务在等待n秒(s)后还没有获得所需要的资源,就使用ROLLBACK命令放弃这个事务。这项设置对于发现和处理未能被InnoDB数据表驱动 程序识别出来的死锁条件有着重要的意义。这个选项的默认设置是50s。
innodb_file_per_table = 0//0表示关闭独立的表空间,1表示开启独立的表空间
[mysqldump]
quick//不要在将内存中的整个结果写入磁盘之前缓存. 在导出非常巨大的表时需要此项 。
max_allowed_packet = 32M//服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要),每个链接独立的大小,大小动态增加。
【MySQL my.cnf 参数 详解】

    推荐阅读