mysql配置文件my.cnf详解

Mysql配置详解:


1,错误日志

--log-error[=file_name] 指定mysqld(mysql服务器)保存错误日志文件的位置。


2,二进制日志

--log-bin[=file_name] mysqld将包含所有更新数据的SQL命令写入日志文件。


二进制日志需要用mysqlbinlog工具来查看,语法如下:

#mysqlbinlog log_file


--binlog-do-db=db_name 如果当前的数据库是db_name,应该更新记录到二进制日志中

--binlog-ignore-db=db_name 如果当前的数据库是db_name,不应该更新记录到二进制日志中

如果多个数据库,可如下写法:

--binlog-do-db=db1

--binlog-do-db=db2


单个库的主从同步:

replicate_do_db=test

replicate_wild_do_table=test.%

replicate_ignore_db=mysql

replicate_wild_ignore_table=mysql.%


3,查询日志

记录了客户端所有的语句,而二进制日志不包含只查询数据库的语句

--log[=file_name] 启动mysqld时,查询日志开始被记录,默认文件名是host_name.log


4,慢查询日志

记录了包含所有执行时间超过参数long_query_time(单位:秒)所设置的SQL语句的日志,获得表锁定的时间不算作执行时间

--log-slow-queries[=file_name] myqsld时,慢查询日志开始被记录,默认文件名是host_name-slow.log


如果慢查询日志中记录内容很多,可以使用mysqldumpslow工具来对慢查询日志进行分类汇总

#mysqldumpslow ****-slow.log


5,配置文件详解:

# vi /etc/my.cnf


以下只列出my.cnf文件中[mysqld]段落中的内容,其他段落内容对MySQL运行性能影响甚微,因而姑且忽略。

[mysqld]

character-set-server = utf8

user    = mysql

port    = 3306

socket  = /data/mysql/3306/mysql.sock

basedir = /usr/local/webserver/mysql

datadir = /data/mysql/3306/data

log-error = /data/mysql/3306/mysql_error.log

pid-file = /data/mysql/3306/mysql.pid


default-storage-engine = MyISAM/InnoDB

设置默认存储引擎


skip-locking

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


skip-name-resolve

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


skip-networking

开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果CentOS系统WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!


skip-slave-start 

启动mysql,不启动复制 


back_log = 384

指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。默认值为50。对于Linux系统推荐设置为小于512的整数。


max_allowed_packet = 16M

设置最大包,限制server接受的数据包大小,避免超长SQL的执行有问题,默认值为16M,当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与MySQL服务器的连接”错误。


key_buffer_size = 256M

指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低! 


sort_buffer_size = 6M

查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。


read_buffer_size = 4M

读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!


join_buffer_size = 8M

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


myisam_sort_buffer_size = 64M

MyISAM表发生变化时重新排序所需的缓冲,用于REPAIR TABLE.


thread_stack = 256K

每个连接被创建的时候,mysql分配给它的内存.这个值一般认为默认就可以应用于大部分场景了,除非必要非则不要动它.


thread_concurrency = 8

该参数取值为服务器逻辑CPU数量×2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8


thread_cache_size = 64

表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线 程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能.通过比较Connections和Threads_created状态的变量,可以看到这个变量的作用。


table_cache = 512

参数设置表高速缓存的数目。每个连接进来,都会至少打开一个表缓存。因此, table_cache 的大小应与 max_connections 的设置有关。


query_cache_type决定查询缓存的操作模式。下表显示了可以使用的模式值:

模式 含义 

0  不要缓存查询结果或检索缓存的结果。 

1  缓存查询,除非它们以SELECT SQL_NO_CACHE开头。 

2  根据需要只缓存那些以SELECT SQL_CACHE开头的查询。

query_cache_size决定分配给缓存的内存数量,单位是字节。

query_cache_limit设置被缓存的最大结果集大小;比这个值大的查询结果不会被缓存。

query_cache_type=1

query_cache_size=16M

即使query_cache_type的值设置为零,query_cache_size指定内存数量也会被分配。为了避免浪费内存,只有在希望激活缓存的时候才把大小设置成大于零。同时,即使query_cache_type不为零,查询缓存的大小设置为零也会禁用缓存。


tmp_table_size = 256M

默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY查询,增加tmp_table_size 值。


max_connections = 768

指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提示,则需要增大该参数值。


max_connect_errors = 10000

如果某个用户发起的连接error超过该数值,则该用户的下次连接将被阻塞,直到管理员执行flush hosts ; 命令;防止黑客


wait_timeout = 10

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

本文出自 “LinuxDream” 博客,请务必保留此出处http://books.blog.51cto.com/2600359/1550179

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。