`
student_lp
  • 浏览: 437284 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

    mysql编译的默认配置并不都是靠谱的,虽然其大部分都比较合适。它们被设计成不要使用大量的资源,因为mysql的使用目标是非常灵活的,它并没有假设自己是服务器上唯一的应用。默认情况下,mysql只是使用恰好足够的资源来启动,运行一些少量数据的简单查询。如果数据量比较大后,就一定需要自己配置mysql的配置。

    在配置的时候建议:不要使用mysql发行版中提供的实例配置文件,也不要使用操作系统的安装包自带的配置文件,最好从头开始。

    实际上mysql的可配置性太强也可以说是个弱点,看起来好像需要花很多时间在配置上,其实大多数配置的默认值已经是最佳配置了,所以最好不要改动太多配置,甚至可以忘记某些配置的存在。

    下面是一个完整的最小配置文件:

[mysqld]
#GENERAL
datadir    =    /var/lib/mysql
socket     =    /var/lib/mysql/mysql.sock
pid_file    =    /var/lib/mysql/mysql.pid
user        =    mysql
port         =   3306
default_storage_engine=InnoDB
#INNODB
innodb_buffer_pool_size   = <value>
innodb_log_file_size          =<value>
innodb_file_per_table        =1
innodb_flush_method        =O_DIRECT
#MyISAM
key_buffer_size       = <value>
#LOGGING
log_error   = /var/lib/mysql/mysql-error.log
slow_query_log = /var/lib/mysql/mysql-slow.log
#OTHER
tmp_table_size    = 32M
max_heap_table_size   = 32M
query_cache_type  = 0
query_cache_size = 0
max_connections = <value>
thread_cache = <value>
table_cache = <value>
open_files_limit = 65535
[client]
socket = /var/lib/mysql/mysql.sock
port = 3306

    和其他配置文件相比,这里的配置选项可能太少了。但实际上已经超过了许多人的需要。还有其他一些比较重要的配置,比如二进制日志。

1、配置内存使用

    配置mysql正确地使用内存对高性能至关重要。mysql的内存分为两类:可控制的内存和不可控制的内存。无法控制mysql服务器运行、解析查询,以及其内部管理所消耗的内存,但是特定条目使用多少内存由很多参数可以控制。一般配置内存方式如下:

  • 确定可以使用的内存上限
  • 确定每个连接mysql需要使用多少内存,例如排序缓冲和临时表
  • 确定操作系统需要多少内存才够用。包括同一台机器上其他程序使用的内存
  • 把剩下的内存全部给mysql的缓存,例如InnoDB的缓冲区、MyISAM键缓存、线程缓存、表缓存、InnoDB数据字典等。

2、配置mysql的I/O行为

    有些配置项影响着mysql怎样同步数据到磁盘以及如何恢复操作。这些操作对性能的影响非常大,因为都涉及到昂贵的I/O操作。他们也表现了性能和数据安全之间的权衡。通常保证数据立刻并且一致的写到磁盘是很昂贵的。如果能够冒一点磁盘写可能没有真正持久化到磁盘的风险,就可以增加并发性和减少I/O等待,但是必须决定可以容忍多大的风险。

3、配置mysql并发

    当mysql承受高并发时,可能会遇到不曾遇到过的瓶颈,这需要根据mysql采用的引擎具体配置。一般常用的引擎有MyISAM和InnoDB。这就需要从引擎方面入手,根据他们的特性进行配置。

下面是mysql配置文件的配置项:

[client]  
port = 3306
socket = /home/mysql/mysql/tmp/mysql.sock  
[mysqld]  
!include /home/mysql/mysql/etc/mysqld.cnf #包含的配置文件 ,把用户名,密码文件单独存放  
port = 3306 
socket = /home/mysql/mysql/tmp/mysql.sock  
pid-file = /longxibendi/mysql/mysql/var/mysql.pid  
basedir = /home/mysql/mysql/  
datadir = /longxibendi/mysql/mysql/var/  
# tmp dir settings  
tmpdir = /home/mysql/mysql/tmp/  
slave-load-tmpdir = /home/mysql/mysql/tmp/  
#当slave 执行 load data infile 时用  
#language = /home/mysql/mysql/share/mysql/english/  
character-sets-dir = /home/mysql/mysql/share/mysql/charsets/  
# skip options  
skip-name-resolve #grant 时,必须使用ip不能使用主机名  
skip-symbolic-links #不能使用连接文件  
skip-external-locking #不使用系统锁定,要使用myisamchk,必须关闭服务器  
skip-slave-start #启动mysql,不启动复制  
#sysdate-is-now  
# res settings  
back_log = 100#接受队列,对于没建立tcp连接的请求队列放入缓存中,队列大小为back_log,受限制与OS参数  
max_connections = 1000 #最大并发连接数 ,增大该值需要相应增加允许打开的文件描述符数  
max_connect_errors = 10000 #如果某个用户发起的连接error超过该数值,则该用户的下次连接将被阻塞,直到管理员执行flush hosts ; 命令;防止黑客  
#open_files_limit = 10240 
connect-timeout = 10 #连接超时之前的最大秒数,在Linux平台上,该超时也用作等待服务器首次回应的时间  
wait-timeout = 28800 #等待关闭连接的时间  
interactive-timeout = 28800 #关闭连接之前,允许interactive_timeout(取代了wait_timeout)秒的不活动时间。客户端的会话wait_timeout变量被设为会话interactive_timeout变量的值。  
slave-net-timeout = 600 #从服务器也能够处理网络连接中断。但是,只有从服务器超过slave_net_timeout秒没有从主服务器收到数据才通知网络中断  
net_read_timeout = 30 #从服务器读取信息的超时  
net_write_timeout = 60 #从服务器写入信息的超时  
net_retry_count = 10 #如果某个通信端口的读操作中断了,在放弃前重试多次  
net_buffer_length = 16384 #包消息缓冲区初始化为net_buffer_length字节,但需要时可以增长到max_allowed_packet字节  
max_allowed_packet = 64M #  
#table_cache = 512 #所有线程打开的表的数目。增大该值可以增加mysqld需要的文件描述符的数量  
thread_stack = 192K #每个线程的堆栈大小  
thread_cache_size = 20 #线程缓存  
thread_concurrency = 8 #同时运行的线程的数据 此处最好为CPU个数两倍。本机配置为CPU的个数  
# qcache settings  
query_cache_size = 256M #查询缓存大小  
query_cache_limit = 2M #不缓存查询大于该值的结果  
query_cache_min_res_unit = 2K #查询缓存分配的最小块大小  
# default settings  
# time zone  
default-time-zone = system #服务器时区  
character-set-server = utf8 #server级别字符集  
default-storage-engine = InnoDB #默认存储  
# tmp & heap  
tmp_table_size = 512M #临时表大小,如果超过该值,则结果放到磁盘中  
max_heap_table_size = 512M #该变量设置MEMORY (HEAP)表可以增长到的最大空间大小  
log-bin = mysql-bin #这些路径相对于datadir  
log-bin-index = mysql-bin.index  
relayrelay-log = relay-log  
relayrelay_log_index = relay-log.index  
# warning & error log  
log-warnings = 1 
log-error = /home/mysql/mysql/log/mysql.err  
log_output = FILE #参数log_output指定了慢查询输出的格式,默认为FILE,你可以将它设为TABLE,然后就可以查询mysql架构下的slow_log表了  
# slow query log  
slow_query_log = 1 
long-query-time = 1 #慢查询时间 超过1秒则为慢查询  
slow_query_log_file = /home/mysql/mysql/log/slow.log  
#log-queries-not-using-indexes  
#log-slow-slave-statements  
general_log = 1 
general_log_file = /home/mysql/mysql/log/mysql.log  
max_binlog_size = 1G 
max_relay_log_size = 1G 
# if use auto-ex, set to 0  
relay-log-purge = 1 #当不用中继日志时,删除他们。这个操作有SQL线程完成  
# max binlog keeps days  
expire_logs_days = 30 #超过30天的binlog删除  
binlog_cache_size = 1M #session级别  
# replication  
replicate-wild-ignore-table = mysql.% #复制时忽略数据库及表  
replicate-wild-ignore-table = test.% #复制时忽略数据库及表  
# slave_skip_errors=all 
key_buffer_size = 256M #myisam索引buffer,只有key没有data  
sort_buffer_size = 2M #排序buffer大小;线程级别  
read_buffer_size = 2M #以全表扫描(Sequential Scan)方式扫描数据的buffer大小 ;线程级别  
join_buffer_size = 8M # join buffer 大小;线程级别  
read_rnd_buffer_size = 8M #MyISAM以索引扫描(Random Scan)方式扫描数据的buffer大小 ;线程级别  
bulk_insert_buffer_size = 64M #MyISAM 用在块插入优化中的树缓冲区的大小。注释:这是一个per thread的限制  
myisam_sort_buffer_size = 64M #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 = 64K#允许的GROUP_CONCAT()函数结果的最大长度  
transaction_isolation = REPEATABLE-READ  
innodb_file_per_table  
#innodb_status_file = 1 
#innodb_open_files = 2048 
innodb_additional_mem_pool_size = 100M #帧缓存的控制对象需要从此处申请缓存,所以该值与innodb_buffer_pool对应  
innodb_buffer_pool_size = 2G #包括数据页、索引页、插入缓存、锁信息、自适应哈希所以、数据字典信息  
innodb_data_home_dir = /longxibendi/mysql/mysql/var/  
#innodb_data_file_path = ibdata1:1G:autoextend  
innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend #表空间  
innodb_file_io_threads = 4 #io线程数  
innodb_thread_concurrency = 16 #InnoDB试着在InnoDB内保持操作系统线程的数量少于或等于这个参数给出的限制  
innodb_flush_log_at_trx_commit = 1 #每次commit 日志缓存中的数据刷到磁盘中  
innodb_log_buffer_size = 8M #事物日志缓存  
innodb_log_file_size = 500M #事物日志大小  
#innodb_log_file_size =100M 
innodb_log_files_in_group = 2 #两组事物日志  
innodb_log_group_home_dir = /longxibendi/mysql/mysql/var/#日志组  
innodb_max_dirty_pages_pct = 90 #innodb主线程刷新缓存池中的数据,使脏数据比例小于90%  
innodb_lock_wait_timeout = 50 #InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的 锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒  
#innodb_flush_method = O_DSYNC 
[mysqldump]  
quick  
max_allowed_packet = 64M 
[mysql]  
disable-auto-rehash #允许通过TAB键提示  
default-character-set = utf8 
connect-timeout = 3 

 

分享到:
评论

相关推荐

    MySQL各版本my.cnf配置文件.rar

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,其性能和效率很大程度上取决于配置文件my.cnf。my.cnf文件包含了MySQL服务器的启动参数和配置选项,它决定了数据库的行为、资源使用以及性能优化策略。在这个名为...

    MySQL中配置文件my.cnf因权限问题导致无法启动的解决方法

    本文主要给大家介绍了关于MySQL中配置文件my.cnf因权限问题导致无法启动的相关解决过程,分享出来供大家参考学习,下面来一起看看详细的介绍: 问题描述 MySQL 无法启动,报如下错误: 问题分析 查看 MySQL 错误...

    mysql-5.7.24的my.cnf

    mysql-5.7.24的my.cnf。适用于生产环境。相关配置已经写好,直接可以用。 mysql-5.7.24的my.cnf。适用于生产环境。相关配置已经写好,直接可以用。 mysql-5.7.24的my.cnf。适用于生产环境。相关配置已经写好,直接...

    修改my.cnf之后启动mysql出错(完美解决).docx

    MySQL 配置文件 my.cnf 是 MySQL 数据库的核心配置文件,该文件用于存储 MySQL 服务器的各种配置选项,例如数据库的连接参数、缓存设置、日志记录等。my.cnf 文件通常位于 /etc/mysql/ 目录下。 MySQL 启动错误的...

    ubuntu mysql my.cnf 服务器最佳配置

    ubuntu mysql my.cnf 服务器最佳配置(16G,32G 内存)

    mysql5.7 my.cnf配置文件优化

    mysql5.7优化后的配置文件,mysql5.7主从架构配置环境,生产环境直接使用,推荐生产环境5.7版本使用最稳定版本5.7.21。

    mysql配置文件my.cnf

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,而`my.cnf`是MySQL服务器的主要配置文件,它定义了数据库的运行参数和服务行为。这个文件对于优化性能、确保安全性以及满足特定的系统需求至关重要。以下是对`my....

    MySQL 8.0 的详细 配置 my.cnf

    MySQL 教程 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库 MySQL8.0数据库的一般配置 Linux环境的配置文件

    CentOS7下MySQL8的主主互备安装文档和my.cnf配置文件

    "my.cnf配置文件"是MySQL服务器的关键配置文件,其中包含了服务器启动时的各种参数设置。它影响着MySQL的性能和行为。【描述】中提到my.cnf的详细配置带有注释,这意味着我们可以清晰地了解每个配置项的作用,这对于...

    linux下mysql配置文件my.cnf详解.pdf

    在Linux环境中,MySQL的主要配置文件是`my.cnf`,它是数据库服务器启动时读取的配置文件,用于设定各种参数和选项,以优化数据库的性能、安全性以及资源使用。这份文档将深入探讨`my.cnf`的结构、主要配置项及其作用...

    MySQL配置my.cnf说明.zip

    MySQL的配置文件`my.cnf`是MySQL服务器的核心配置文档,它定义了数据库服务的各种运行参数,直接影响到MySQL的性能、稳定性和安全性。本篇将详细介绍`my.cnf`中的重要参数及其作用。 1. **[mysqld]部分** 这是...

    大型电商 生产环境的 Mysql配置文件 my.cnf

    某电商网站的生产环境的Mysql配置文件,放入/etc/下面即可

    Mysql主从配置my.cnf.zip

    Mysql主从配置文件,主文件my.cnf,从文件my.cnf完整版。部分配置如下: [client] port = 3306 socket =/tmp/mysql.sock [mysql] no-auto-rehash prompt="\u@\h [\d]&gt;" #pager="less -i -n -S" #tee=/opt/mysql/...

    MySQL 5.6 my.cnf 配置

    MySQL 5.6是MySQL数据库管理系统的一个重要版本,它的配置文件`my.cnf`是数据库服务器启动时读取的关键文件,用于定义各种参数和设置,从而影响MySQL的性能、安全性以及资源消耗。在这个版本中,`my.cnf`通常位于...

    MySQL中my.cnf文件选项

    ### MySQL中的my.cnf配置文件详解 在MySQL的配置与管理过程中,`my.cnf`文件扮演着极其重要的角色。该文件通常包含了MySQL服务器启动时所遵循的各种参数设置,包括但不限于内存分配、缓存大小、日志记录以及安全...

    mysql linux 下配置my.cnf

    mysql linux 下配置my.cnfmysql linux 下配置my.cnfmysql linux 下配置my.cnf

    【荐】mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)

    ### MySQL服务性能优化——my.cnf/my.ini配置详解 #### 背景介绍 本文档旨在详细介绍一套已在生产环境中经过验证、适用于16GB内存环境下的MySQL服务性能优化方案。通过对my.cnf/my.ini配置文件的各项关键参数进行...

    linux下mysql my.cnf 文件

    linux下mysql my.cnf 文件已经配置好 路径根据实际情况自己修改linux下mysql my.cnf 文件已经配置好 路径根据实际情况自己修改linux下mysql my.cnf 文件已经配置好 路径根据实际情况自己修改

    linux下mysql配置文件my.cnf详解

    Linux 下 Mysql 配置文件 my.cnf 详解 Mysql 配置文件 my.cnf 是 Mysql 数据库服务器的核心配置文件,在 Linux 下 plays a crucial role in configuring Mysql 服务器的行为。该文件中包含了多个配置选项,这些选项...

Global site tag (gtag.js) - Google Analytics