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