17MySQL生产环境my.cnf配置文件解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了17MySQL生产环境my.cnf配置文件解析相关的知识,希望对你有一定的参考价值。

[client]

port = 3306    #端口号

socket = /ryzc/mysql/data/mysql.sock         #sock文件路径


[mysqld]

port = 3306            

socket = /ryzc/mysql/data/mysql.sock                   # 服务端sock文件路径

pid-file        = /ryzc/mysql/data/localhost.pid       # pid文件存放路径

datadir         = /ryzc/mysql/data                     # 数据存放目录

log-error           = /ryzc/mysql/data/err.log         # 日志错误目录

slow-query-log-file  =/ryzc/mysql/data/mysql-slow.log  # 慢查询日志文件和目录

slow-query-log = 0          #开启慢查询日志,0为关闭,1为开启,此是5.6配置文件,5.5跟5.6打开方法不一样

long_query_time = 2    #慢查询时间 超过2秒则为慢查询,默认为10秒

innodb_data_home_dir = /ryzc/mysql/data/              #这是InnoDB表的目录共用设置

innodb_log_group_home_dir = /ryzc/mysql/data/         #InnoDB 日志文件的路径


master-info-file=master.info    #master信息文件

relay-log=relay-bin-2    # 中继日志路径和文件名,都可以自定义

relay-log-index=relay-bin.index     # 中继日志index文件

relay-log-info-file=relay-log.info    # 中继日志信息文件可以定定义名字和路径,这里只定义名字

replicate-ignore-db=mysql    #用来设置不需要同步的库

replicate-wild-ignore-table=mysql.%   #用来设置不需要同步的库

innodb_data_file_path=ibdata1:1G:autoextend

log-slave-updates #这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,但是,如果这个从服务器B是服务器A的从服务器,同时还作为服务器C的主服务器,那么就需要开发这个选项,这样它的从服务器C才能获得它的二进制日志进行同步操作

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


server-id = 2   #sever-id号主跟从不能一样


binlog-format    = ROW

expire_logs_days = 10        #超过10天的binlog日志文件删除

#max_binlog_cache_size = 8M  # 最大binlog缓存大小

#max_binlog_size = 512M      # 最大binlog大小

log-bin          = mysql-bin    # 开启binlog日志

open_files_limit = 65535    # MySQL打开的文件描述符限制,默认最小1024;当open_files_limit没有被配置的时候,比较max_connections*5和ulimit -n的值,哪个大用哪个,当open_file_limit被配置的时候,比较open_files_limit和max_connections*5的值,哪个大用哪个。

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

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

#lower_case_table_names     #实现表名不区分大小写,慎用

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

sync_binlog=1  #在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。

event_scheduler = ON  #开启事件调度器,事件调度器event_scheduler的语法主要包括创建,修改,删除

max_allowed_packet = 128M   #MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。

table_open_cache = 2048  #表描述符缓存大小,可减少文件打开/关闭次数;默认为64,偏小

wait_timeout = 100      #指的是mysql在关闭一个非交互的连接之前所要等待的秒数,其取值范围为1-2147483(Windows),1-31536000(linux),默认值28800。

interactive_timeout = 100  #指的是mysql在关闭一个交互的连接之前所要等待的秒数(交互连接如mysql gui tool中的连接),其取值范围随wait_timeout变动,默认值28800。

net_buffer_length = 1M     #此参数指定了一个缓存区的大小,用来存放用户发送的SQL语句。

read_buffer_size = 8M          # MySQL读入缓冲区大小。

read_rnd_buffer_size = 8M      #主要用于表顺序扫描的缓存大小

max_connections = 2000         # MySQL的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。可以过‘conn%‘通配符查看当前状态的连接数量,以定夺该值的大小。

max_connect_errors = 1000000   # 对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。

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

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

thread_cache_size = 1024  #线程缓存大小点

symbolic-links   = 0

query_cache_type = 0   #查询结果放到查询缓存中,0为关闭,1为开启

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

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

myisam_max_sort_file_size = 10G # 如果临时文件会变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出

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

Myisam_revocer                  # 控制了Myisam查找和修复错误的方式。

innodb_log_files_in_group = 3   #日志组中的日志文件数目。InnoDB 以环型方式(circular fashion)写入文件。数值 3 被推荐使用。在 my.cnf 中以数字格式设置。

thread_concurrency = 12   #默认设置为 0,表示不限制并发数,现在设置成12个并发

innodb_file_io_threads = 6      #InnoDB 中的文件 I/O 线程。 通常设置为 4,但是在 Windows 下可以设定一个更大的值以提高磁盘 I/O。在 my.cnf 中以数字格式设置。

innodb_write_io_threads = 6    #写线程大小

innodb_read_io_threads = 6     #读线程大小

innodb_thread_concurrency = 8   # InnoDB 会试图将 InnoDB 服务的使用的操作系统进程小于或等于这里所设定的数值。此参数默认值为 8。如果计算机系统性能较低或 innodb_monitor 显示有很多线程等侍信号,应该将这个值设小一点。

innodb_buffer_pool_size = 15G   #这个参数主要作用是缓存innodb表的索引,数据,插入数据时的缓冲,专用mysql服务器设置的大小: 操作系统内存的70%-80%最佳。

innodb_log_file_size = 256M    I#日志组中的每个日志文件的大小(单位 MB)。

innodb_log_buffer_size = 16M    #InnoDB 将日志写入日志磁盘文件前的缓冲大小。理想值为 1M 至 8M。

innodb_flush_log_at_trx_commit = 0  #通常设置为 1,意味着在事务提交前日志已被写入磁盘, 事务可以运行更长以及服务崩溃后的修复能力。如果你愿意减弱这个安全,或你运行的是比较小的事务处理,可以将它设置为 0 ,以减少写日志文件的磁盘 I/O。这个选项默认设置为 0。

innodb_support_xa = 0    #你设置innodb_support_xa为0将减少磁盘刷新,有利于磁盘数据和二进制日志的序列化。

innodb_flush_method = O_DIRECT    #这个参数仅仅与 Unix 相关。这个参数默认值为 fdatasync。 另一个设置项为 O_DSYNC。这仅仅影响日志文件的转储,在 Unix 下以 fsync 转储数据。

innodb_additional_mem_pool_size = 16M     #InnoDB 用来存储数据字典(data dictionary)信息和其它内部数据结构(internal data structures)的存储器组合(memory pool)大小。理想的值为 2M

innodb_sort_buffer_size = 16M   #排序缓冲大小

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

key_buffer_size = 2G   #指定用于索引的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),注意:该参数值设置的过大反而会是服务器整体效率降低

sort_buffer_size = 8M      # MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。如果不能,可以尝试增加sort_buffer_size变量的大小

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

slave_skip_errors = all   #跳过所有错误,避免了由于sql出错导致的从复制失效。

query_cache_size = 64M   #MySQL查询缓存大小

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

tmp_table_size = 256M  MySQL的heap(堆积)表缓冲大小。

#default-storage-engine = InnoDB #默认存储引擎

#default-table-type = InnoDB  #默认表类型

#innodb_local_wait_timeout = 120 #等待锁超时时间

#innodb_file_per_table = 0  #独立表空间,0表示关闭,1表示开启

#innodb_max_dirty_pages_pct = 90 #是用来控制在 InnoDB Buffer Pool 中可以不用写入数据文件中的Dirty Page 的比例(已经被修但还没有从内存中写入到数据文件的脏数据)。这个比例值越大,从内存到磁盘的写入操作就会相对减少,所以能够一定程度下减少写入操作的磁盘IO。

#根据以往的经验,重启恢复的数据如果要超过1GB的话,启动速度会比较慢,几乎难以接受,所以建议不大于 1GB/innodb_buffer_pool_size(GB)*100 这个值。当然,如果你能够忍受启动时间比较长,而且希望尽量减少内存至磁盘的flush,可以将这个值调整到90,但不建议超过90


[mysqldump]

quick                      #通过quick参数可以加快mysql命令行下导出数据

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




[mysql]            

no-auto-rehash     #sql语句没有自动补全


[myisamchk]

key_buffer_size = 8M

sort_buffer_size = 8M

read_buffer = 8M

write_buffer = 8M


[mysqlhotcopy]

interactive-timeout   #服务器关闭交互式连接前等待活动的秒数,默认8小时


本文出自 “wsyht的博客” 博客,请务必保留此出处http://wsyht2015.blog.51cto.com/9014030/1790691

以上是关于17MySQL生产环境my.cnf配置文件解析的主要内容,如果未能解决你的问题,请参考以下文章

shell解析my.cnf配置文件

mysql配置文件my-small.cnf解析,汉文翻译,配置

mysql进阶简单解析

mysql案例mysql5.6.14配置my.cnf多实例,mysql_install_db初始化不读取my.cnf配置文件

详解MySql的配置文件my.cnf

[转]MySQL5.5 my.cnf配置参考