mysql配置参数详解

查看配置参数可以用下面的命令:

show variables like ‘%innodb%‘;     #查看innodb相关配置参数

show status  like ‘%innodb%‘;           #查看innodb相关的运行时参数

show global status like ‘open%tables‘; # 查看全局的运行时参数,加上global是对当前mysql服务器中运行的所有数据库实例进行统计。不加global则只对当前数据库实例进行统计。

my.cnf参数配置

[client]

port            = 3306

socket          = /opt/mysql/data/mysql.sock

default-character-set = utf8  # 设置mysql客户端默认字符集

[mysqld]

port            = 3306  # mysql服务端默认监听(listen on)的TCP/IP端口

socket          = /opt/mysql/data/mysql.sock

skip-external-locking #不使用系统锁定,要使用myisamchk,必须关闭服务器

skip-name-resolve #禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。

key_buffer_size = 64M #myisam索引buffer,只有key没有data

max_allowed_packet = 20M

table_cache=3096  #用于设置table高速缓存的数量。

table_open_cache = 6144 #表描述符缓存大小,可减少文件打开/关闭次数

table_definition_cache=4096 #默认400

tmp_table_size=64M # 内存中的每个临时表允许的最大大小。如果临时表大小超过该值,临时表将自动转为基于磁盘的表

max_heap_table_size=64M #该变量设置MEMORY (HEAP)表可以增长到的最大空间大小

sort_buffer_size = 512k   #排序buffer大小;线程级别

read_buffer_size = 512k  #读查询操作所能使用的缓冲区大小。

read_rnd_buffer_size = 512K#MyISAM以索引扫描(Random Scan)方式扫描数据的buffer大小;线程级别

join_buffer_size=512K  #联合查询操作所能使用的缓冲区大小。

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

query_cache_type=0

query_cache_size= 0   # 查询缓存大小,用于缓存SELECT查询结果。

bulk_insert_buffer_size=32M  #默认8M参数来提高数据插入的效率,这个参数设置的是 bulk insert 的缓存大小

thread_cache_size = 64 #缓存的最大线程数。

thread_stack=256K

# Try number of CPU‘s*2 for thread_concurrency

thread_concurrency = 8

character_set_server = utf8  # 服务端使用编码的utf8字符集

max_connection=1024   #mysql服务器支持的最大并发连接数据(用户数)

max_user_connections=1000

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

wait_timeout=100 #等待关闭连接的时间

connect_timeout = 20#连接超时之前的最大秒数,在Linux平台上,该超时也用作等待服务器首次回应的时间

interactive_timeout=100 #关闭连接之前,允许interactive_timeout(取代了wait_timeout)秒的不活动时间。客户端的会话wait_timeout变量被设为会话interactive_timeout变量的值。

back_log = 500 #back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。默认值为50。对于Linux系统推荐设置为小于512的整数。

server-id       = 1

###################binlog############

log-bin=/opt/mysql/logs/mysql-bin

binlog_format=row

max_binlog_size=128M

binlog_cache_size=2M #session级别

expire-logs-days = 5  #保存5天binlog日志

###################replication################

slave-net-timeout=10  #默认3600 #从服务器也能够处理网络连接中断。但是,只有从服务器超过slave_net_timeout秒没有从主服务器收到数据才通知网络中断

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_wait_no_slave=1

rpl_semi_sync_master_timeout=1000

skip-slave-start #启动mysql,不启动复制

log_slave_updates=1

relay_log_recovery=1

#############slow log 慢查询###########

slow_query_log =1  #1为开启慢查询 on

slow_query_log_file=/opt/mysql/logs/mysql.slow  #慢查询的日志目录

long_query_time=2  #慢查询时间  超过2秒则为慢查询

##################errlog################

log-error=/opt/mysql/logs/error.log #日志目录

############## InnoDB###########

innodb_buffer_pool_size =11G # InnoDB使用缓冲池来缓存索引和行数据。该值设置的越大,则磁盘IO越少。一般将该值设为物理内存的80%。我一般都是设置物理内存70%。16G内存算的

innodb_buffer_pool_instances=8  #默认1

innodb_additional_mem_pool_size = 16M # InnoDB用于存储元数据信息的内存池大小

innodb_flush_log_at_trx_commit = 2  # 事务相关参数,如果值为1,则InnoDB在每次commit都会将事务日志写入磁盘(磁盘IO消耗较大),这样保证了完全的ACID特性。而如果设置为0,则表示事务日志写入内存log和内存log写入磁盘的频率都为1次/秒。如果设为2则表示事务日志在每次commit都写入内存log,但内存log写入磁盘的频率为1次/秒。

innodb_log_buffer_size=64M # InnoDB日志数据缓冲大小,如果缓冲满了,就会将缓冲中的日志数据写入磁盘(flush)。由于一般至少都1秒钟会写一次磁盘,所以没必要设置过大,即使是长事务。

innodb_log_file_size=1024M # 每一个InnoDB事务日志的大小。一般设为innodb_buffer_pool_size的25%到100%

innodb_log_files_in_group=3 #默认2

innodb_lock_wait_timeout = 10 #默认50

innodb_sync_spin_loops  =40   #默认30

innodb_max_dirty_pages_pct=90  #与检查点有关系,默认75

innodb_support_xa=1  #有0、1、2三个值分别代表不同的使redo log落地策略。0表示每秒进行一次flush,但是每次事务commit不进行任何操作(每秒调用fsync使数据落地到磁盘,不过这里需要注意如果底层存储有cache,比如raid cache,那么这时也不会真正落地,但是由于一般raid卡都带有备用电源,所以一般都认为此时数据是安全的)。1代表每次事务提交都会进行flush,这是最安全的模式。2表示每秒flush,每次事务提交时不flush,而是调用write将redo log buffer里面的redo log刷到os page cache。

innodb_thread_concurrency=0  #默认为0

innodb_thread_sleep_delay=500  #默认10000

innodb_concurrency_tickets=1000  #默认500

innodb_flush_method= O_DIRECT #这个参数控制着innodb数据文件及redo log的打开、刷写模式,对于这个参数,文档上是这样描述的:
有三个值:fdatasync(默认),O_DSYNC,O_DIRECT
默认是fdatasync,调用fsync()去刷数据文件与redo log的buffer
为O_DSYNC时,innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件

为O_DIRECT时,innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log

innodb_file_per_table  #开启独立表空间

innodb_read_io_threads=8  #用于从磁盘读文件块的线程数

inodb_write_io_threads=8 #用于写脏页的线程数

inodb_io_capacity = 2000

innodb_file_format=Barracuda  #有两参数1.Antelope(默认),2. Barracuda 注意在安装数据库时就要调整

innodb_purge_threads=1 #默认0在之前版本,碎片回收操作是主线程的一部分,这经定期调度的方式运行,但会阻塞数据库的其他操作;到5.5以后,可以将这个线程独立出来 ;方法:innodb_purge_threads =1
这个应该能让碎片回收得更及时而且不影响其他线程的操作;

innodb_purge_batch_size=32 #是否开启独立的线程清除undo页,默认是0不开启,每次删除的页数由Innodb_purge_batch_size控制,默认是20

innodb_old_blocks_pct=75 #默认37一个是sublist of old blocks区域(不经常访问的数据)

innodb_change_buffering=all #默认all

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

# Remove the next comment character if you are not familiar with SQL

#safe-updates

[myisamchk]

key_buffer_size = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

per_thread_buffers内存的计算公式:

(read_buffer_size+read_rnd_buffer_size+sort_buffer_size+thread_stack+join_buffer_size+binlog_cache_size)*max_connections

global_buffers内存的计算公式:

innodb_buffer_pool_size+innodb_additional_mem_pool_size+innodb_log_buffer_size+key_buffer_size+query_cache_size

per_thread_buffers+global_buffers 设置不能大于实际物理内存,否则当并发最很高时会造成内存溢出,系统死机。

时间: 2024-12-11 01:59:11

mysql配置参数详解的相关文章

Mysql 配置参数详解以及优化配置

mysql有以下几种日志: 错误日志:   log-err 查询日志:   log 慢查询日志:  log-slow-queries 更新日志:   log-update 二进制日志: log-bin 要把日志生成在 /var/log 目录下(是系统日志存放的地方,只有 root 账号有写权限),需要 MySQL进程对这个目录有读写权限,一般是不这么做的,也考虑到安全问题,包括 MySQL 本身的数据安全,因为对 MySQL 的所有操作,都会记录到常规查询日志.MySQL的日志就不要用 /var

MySQL 配置参数详解

MySQL安装成功后有几个默认的配置模板,列表如下: my-huge.cnf : 用于高端产品服务器,包括1到2GB RAM,主要运行mysql my-innodb-heavy-4G.ini : 用于只有innodb的安装,最多有4GB RAM,支持大的查询和低流量 my-large.cnf : 用于中等规模的产品服务器,包括大约512M RAM my-medium.cnf : 用于低端产品服务器,包括很少内存(少于128M) my-small.cnf : 用于最低设备的服务器,只有一点内存(少

MySQL配置文件mysql.ini参数详解、MySQL性能优化

MySQL配置文件mysql.ini参数详解.MySQL性能优化 my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section.   Client Section用来配置MySQL客户端参数.   要查看配置参数可以用下面的命令: show variables like '%innodb%'; # 查看innodb相关配置参数 show status like

MHA实现mariadb的高可用的详细步骤及配置参数详解

MHA实现mariadb的高可用的详细步骤及配置参数详解 A. 实验环境说明 a) 4台centos7主机 b) 角色说明: a. MHA:192.168.36.35 b. Master_mariadb:192.168.36.121 c. Slave_mariadb:192.168.36.120 d. Slave_mariadb:192.168.36.27 B. 安装程序包 a) mariadb上安装: mariadb-server 版本:5.5.60 mha4mysql-node -0.56-

nginx配置参数详解

配置参数详解 user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CPU. error_log  logs/error.log;  error_log  logs/error.log  notice;  error_log  logs/error.log  info;  错误日志:存放路径. pid logs/nginx.pid; pid(进程标识符):存放路径

eAccelerator 配置参数详解

eAccelerator 配置参数详解 eaccelerator.shm_size="32" eAccelerator 可以使用的共享内存的数量 (以兆为单位) . "0" 是指操作系统的默认值. 默认值是 "0".可根据服务器的实际情况来调整,16,32,64,128都是可以的. eaccelerator.cache_dir="/home/php/tmp" 这个目录是给磁盘缓存使用. eAccelerator 在这里储存预先

jquery的uploadify插件多文件上传配置参数详解

最近做了个多文件上传,需要限制上传文件类型的例子.以前没做过找了一些资料,下次有用.同时也给大家做参考. uploader: uploadify.swf 文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后淡出打开文件对话框,默认值:uploadify.swf. script: 后台处理程序的相对路径 .默认值:uploadify.php checkScript:用来判断上传选择的文 件在服务器是否存在的后台处理程序的相对路径 fileDataName:设置一个名字,在服务器处理

zookeeper的配置参数详解(zoo.cfg)

配置参数详解(主要是%ZOOKEEPER_HOME%/conf/zoo.cfg文件) 参数名 说明 clientPort 客户端连接server的端口,即对外服务端口,一般设置为2181吧. dataDir 存储快照文件snapshot的目录.默认情况下,事务日志也会存储在这里.建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能. tickTime ZK中的一个时间单元.ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的.例如,session的最小超时时间是2*tic

reids配置参数详解

转自:http://www.jb51.net/article/60627.htm reids配置参数详解 #daemonize no  默认情况下, redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes daemonize yes #  当 redis 在后台运行的时候, Redis 默认会把 pid 文件放在 /var/run/redis.pid ,你可以配置到其他地址. #  当运行多个 redis 服务时,需要指定不同的 pid 文件和端口 pidfile /var/