MySQL ·

MySQL主从复制-主配置文件

说明:下面配置已经在真实环境使用,如果要使用下面配置,请根据您的实际情况更改要应的参数

[client]
user=MySqlServer
password=fooher.com

#no-beep
# pipe
# socket=0.0
port=3306
default-character-set=utf8
socket=D:/WebServer/MySQL/Temp/MySQL.sock

[mysql]
default-character-set=utf8
# server_type=1
#自动补全命令按 TAB 建如果要取消这一功能,参数是–skip-auto-rehash,或者不写这个参数
no-auto-rehash

[mysqld]
port=3306
basedir="D:/WebServer/MySQL"
datadir="D:/WebServer/MySQL/Data_Server"
tmpdir="D:/WebServer/MySQL/Temp"
socket="D:/WebServer/MySQL/Temp/MySQL.sock"
pid-file="D:/WebServer/MySQL/Temp/MySQL.pid"
slave-load-tmpdir="D:/WebServer/MySQL/Temp"
log-error="D:/WebServer/MySQL/logs/MySQL_Error.log"
character-set-server=utf8
default-storage-engine=INNODB
default-tmp-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
#Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#Mysql数据库名和表名的大小写敏感性问题,要严格区分大小写
#lower_case_table_names=2

# plugin-load=authentication_windows.dll

log-output=FILE
general-log=1
general_log_file=D:/WebServer/MySQL/logs/General.log
slow-query-log=1
log-bin-trust-function-creators=1
#记录慢查询,然后对慢查询一一优化
#是指查询超过 2 秒钟的诧句记录下sql会被log下来,这里是2秒
long_query_time=1
slow_query_log_file="D:/WebServer/MySQL/Logs/MySQL-Slow.log"
log-slow-admin-statements=1
log-slow-slave-statements=1
log-bin-trust-function-creators=1

#没有使用索引的查询
#log-queries-not-using-indexes

# M-S-S 结构--可以用。当Slave从Master数据库读取日志时将跟新写入日志中
# 如果你在使用链式从服务器结构的复制模式 (A->B->C),
# 你需要在服务器B上打开此项.
# 此选项打开在从线程上重做过的更新的日志,
# 并将其写入从服务器的二进制日志.
#log-slave-updates
#relay-log-index="D:/WebServer/MySQL/Logs/Slave-Relay-Log.index"
#relay-log-info-file="D:/WebServer/MySQL/Logs/RelayLog"
#relay-log="D:/WebServer/MySQL/Logs/MySQL-Relay-Bin"
#binlog_row_event_max_size=8K
#sync_master_info=10000
#sync_relay_log=10000
#sync_relay_log_info=10000

# 二进制日志开启
#Server-id 必须不一致,M/s 结构 开启表一个文件的功能
server-id=1
secure-file-priv="D:/WebServer/MySQL/Uploads"
#从服务器二进制日志文件前缀名 #M/S 不能开启log-bin日记文件
log-bin="D:/WebServer/MySQL/Logs/MySQL-bin"
log_bin_index=D:/WebServer/MySQL/logs/binlog.index
#表示每个binlog文件最大大小,当此文件大小等于500M时,会自动生成一个新的日志文件
max_binlog_size=1G
binlog_format=mixed
max-binlog-cache-size=2G
max-relay-log-size=1G

# 这两个是启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止
#当不用中继日志时,删除他们。这个操作有SQL线程完成
#复制完的sql语句是否立即从中继日志中清除,1表示立即清除
relay_log_purge=1
#当被设置成ENABLED,在CRASH后自动放弃所有未执行的relay-log,并且重新从MASTER获取日志;这样保证relay-log的完整
relay_log_recovery=1

# max binlog keeps days
#log-bin 超过多少天删除
expire_logs_days=30

# 如果你发现InnoDB表空间损坏, 设置此值为一个非零值可能帮助你导出你的表.
# 从1开始并且增加此值知道你能够成功的导出表.
#innodb_force_recovery=1

# 在一个事务中binlog为了记录SQL状态所持有的cache大小
# 如果你经常使用大的,多声明的事务,你可以增加此值来获取更大的性能.
# 所有从事务来的状态都将被缓冲在binlog缓冲中然后在提交后一次性写入到binlog中
# 如果事务比此值大, 会使用磁盘上的临时文件来替代.
# 此缓冲在每个连接的事务第一次更新状态时被创建
binlog_cache_size=4M

# 独立的内存表所允许的最大容量.
# 此选项为了防止意外创建一个超大的内存表导致永尽所有的内存资源.
max_heap_table_size=512M

#跳过错误,继续执行复制 slave-skip-errors=1032,1062,126,1114,1146,1048,1396 不要胡乱使用这些跳过错误的参数
slave-skip-errors=1062
#sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步#,或者cache满了之后才同步到磁盘。sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数#据强制写入磁盘。在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的##。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的设置。因为当设置为1#的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。从以往经验和相关测试来看,对于高并发事#务的系统来说,“sync_binlog”设置为0和设置为1的系统写入
#性能差距可能差距可能高达5倍甚至更多。
#允许日志同步
sync_binlog=1
#从库设置只读,0表示可读写,1表示只读
#read_only=1

#减少mysql主从数据同步延迟问题
#基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了。
#如果延迟比较大,就先确认以下几个因素:1. 网络延迟 2. master负载 3. slave负载
#########################
#salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象
slave_net_timeout=60
#########################

#取消文件系统的外部锁
#skip-locking

#禁用DNS解析只能用IP访问,关闭mysql的dns反查功能-skip-name-resolve或者skip-name-resolve
#MySQL远程访问速度缓慢的解决和分析
#不进行域名反解析,注意由此带来的权限/授权问题
skip-name-resolve
#禁用mysql服务器远程帐户
#skip-grant-tables
#关闭show databases语句对所有用户开放 限制普通用户浏览其它数据库
skip_show_database
#禁用到表的联结符号
skip_symbolic_links
# 禁止远程连接mysql
# skip_networking
# enable-named-pipe
# shared-memory
# shared-memory-base-name=MYSQL
skip_external_locking

# 允许的同时客户的数量。增加该值增加 mysqld 要求的文件描述符的数量。
# 这个数字应该增加,否则,你将经常看到 too many connections 错误。 默认数值是100
# 查询结果缓存。第一次执行某条SELECT语句的时候,服务器记住该查询的文本内容和它返回的结果。
# 服务器下一次碰到这个语句的时候,它不会再次执行该语句。作为代替,它直接从查询缓存中的得到结果并把结果返回给客户端。
# 查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且
# Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。
# 查询缓存命中率=(Qcache_hits – Qcache_inserts) / Qcache_hits * 100%,可以过'conn%'通配符查看当前状态的连接数量,以定夺该值的大小。
max_connections=1024
#如果某个用户发起的连接error超过该数值,则该用户的下次连接将被阻塞,直到管理员执行flush hosts ; 命令;防止黑客
#可以允许多少个错误连接
max_connect_errors=6000

#指定单个查询能够使用的缓冲区大小,缺省为1M
query_cache_limit=2M
#查询缓存分配的最小块大小
query_cache_min_res_unit=1MB

# replication
#忽略不同步的数据库,这个可以不用写
#不需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
binlog-ignore-db=mysql
binlog-ignore-db=test
binlog-ignore-db=information_schema
#需要复制的数据库名,重复设置这个选项即可 ,如果要同步多个库,用逗号分隔
binlog-do-db=foohercom_db
replicate-do-db= foohercom_db
replicate-ignore-db=mysql
replicate-ignore-db=test

#######################
#auto_increment_increment、auto_increment_offset
#解决主从服务器ID重复 可以防止双主主键冲突问题 每次跳两个数
#这样auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了
#整个结构中服务器的总数
auto_increment_increment=2
#设置单次增量中主键的偏移量 设定数据库中自动增长的起点,
#避免两台服务器数据同步时出现主键冲突
auto_increment_offset=1
#########################

#这几个参数是启用binlog/relaylog的校验,防止日志出错
binlog_checksum=CRC32
slave_allow_batching=1
master_verify_checksum=1
slave_sql_verify_checksum=1
binlog_rows_query_log_events=1

#这两个参数会将master.info和relay.info保存在表中,默认是Myisam引擎,官方建议用
master_info_repository=TABLE
relay_log_info_repository=TABLE

[mysqldump]
quick
# 如果.sql文件过大,mysql会直接断开连接 设置100M
# 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要)
# 每个连接独立的大小.大小动态增加
#服务器发送和接受的最大包长度
max_allowed_packet=32M

[myisamchk]
#设置索引块(index blocks)缓存的大小默认为218调到128最佳
#索引块是缓冲的并且被所有的线程共享。key_buffer_size是用于索引块的缓冲区大小,
#增加它可得到更好处理的索引(对所有读和多重写),到你能负担得起##那样多。如果你使它太大,
#系统将开始换页并且真的变慢了。#默认数值是8388600(8m)#,我的mysql主机有2gb内存,
#所以我把它改为 402649088(400mb)。
#指定用于索引的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你能负担得起那样多。如果你使它太大,
# 系统将开始换页并且真的变慢了。对于内存在4GB左右的服务器该参数可设置为384M或512M。通过检查状态值Key_read_requests和Key_reads,
# 可以知道key_buffer_size设置是否合理。比例key_reads/key_read_requests应该尽可能的低,
# 至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE 'key_read%'获得)。注意:该参数值设置的过大反而会是服务器整体效率降低
key_buffer_size=512M

# 分词词汇最小长度,默认4
ft_min_word_len = 4

#每个线程排序所需的缓冲
#并不是设置越大越好,由于是connection级的参数,过大的设置+高并发可能会耗尽系统内存资源。例如:500个连接将会消耗 500*sort_buffer_size(8M)=4G内存
#Sort_Buffer_Size 超过2KB的时候,就会使用mmap() 而不是 malloc() 来进行内存分配,导致效率降低。
# MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。
# 如果不能,可以尝试增加sort_buffer_size变量的大小
sort_buffer_size=40M
# MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。
# 如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能
read_buffer_size=2M
write_buffer=8M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
# 在mysql5.6不再支持table_cache
table_open_cache=256
# MySQL的heap(堆积)表缓冲大小。所有联合在一个DML指令内完成,并且大多数联合甚至可以不用临时表即可以完成。
# 大多数临时表是基于内存的(HEAP)表。具有大的记录长度的临时表 (所有列的长度的和)或包含BLOB列的表存储在硬盘上。
# 如果某个内部heap(堆积)表大小超过tmp_table_size,MySQL可以根据需要自动将内存中的heap表改为基于硬盘的MyISAM表。还可以通过设置tmp_table_size选项来增加临时表的大小。也就是说,如果调高该值,MySQL同时将增加heap表的大小,可达到提高联接查询速度的效果
tmp_table_size=256M
# 这个值(默认8)表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,
# 如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,
# 增加这个值可以改善系统性能.通过比较Connections和Threads_created状态的变量,可以看到这个变量的作用。(–>表示要调整的值)
# 根据物理内存设置规则如下:
# 1G —> 8
# 2G —> 16
# 3G —> 32
# 大于3G —> 64
thread_cache_size=256

#*** MyISAM Specific options
# mysql重建索引时允许使用的临时文件最大大小
#如果临时文件会变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出
myisam_max_sort_file_size=20G
# MyISAM设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区
myisam_sort_buffer_size=512M
myisam_max_extra_sort_file_size=20G

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

#加速排序操作后的读数据,提高读分类行的速度。MySql的随机读(查询操作)缓冲区大小。当按任意顺序读取行时(例如,
#按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,
#如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存
#开销过大。
# MySQL的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,
# MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。
#但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大
read_rnd_buffer_size=64M
bulk_insert_buffer_size = 64M

#*** INNODB Specific options ***
innodb_data_home_dir="D:/WebServer/MySQL/Data_Server"

# skip-innodb
#这个参数用来设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小,类似于Oracle的library cache。这不是一个强制参数,可以被突破。
innodb_additional_mem_pool_size=30M

#表示InnoDB完全支持ACID特性。当你的主要关注点是数据安全的时候这个值是最合适的,比如在一个主节点上。
#但是对于磁盘(读写)速度较慢的系统,它会#带来很巨大的开销,因为每次将改变flush到redo日志都需要额外的fsyncs。
#将它的值设置为2会导致不太可靠(unreliable)因为提交的事务仅仅每秒才flush一次到redo日志,但对于一些场景是可以接受的,
#比如对于主节点的备份节点这个值是可以接受的。如果值为0速度就更快了,但在系统崩溃时可能丢失一些数据:只适用于备份节点。
#等到innodb_log_buffer_size列队满后再统一储存,默认为1 日志缓存中的数据刷到磁盘中
innodb_flush_log_at_trx_commit=2

#这项配置决定了数据和日志写入硬盘的方式。一般来说,如果你有硬件RAID控制器,并且其独立缓存采用write-back机制,
#并有着电池断电保护,那么应该设置配置为O_DIRECT;否则,大多数情况下应将其设为fdatasync(默认值)。
#sysbench是一个可以帮助你决定这个选项的好工具。
innodb_flush_method=fdatasync

# InnoDB使用一个缓冲池来保存索引和原始数据, 不像MyISAM.
# 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.
# 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%
# 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.
# 注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,
# 所以不要设置的太高
#缓冲池是数据和索引缓存的地方:这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。
#典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。
# 设置缓冲池的大小你的主内存大小70-80% 是一个安全的选择. 如果有8G内存,可以设置为5G
innodb_buffer_pool_size=5120M

# InnoDB中的清除操作是一类定期回收无用数据的操作。在之前的几个版本中,清除操作是主线程的一部分,这意味着运行时它可能会堵塞其它的数据库操作。
# 从MySQL5.5.X版本开始,该操作运行于独立的线程中,并支持更多的并发数。用户可通过设置innodb_purge_threads配置参数来选择清除操作是否使用单
# 独线程,默认情况下参数设置为0(不使用单独线程),设置为 1 时表示使用单独的清除线程。建议为1
innodb_purge_threads = 1

# InnoDB中的清除操作是一类定期回收无用数据的操作。在之前的几个版本中,清除操作是主线程的一部分,
#这意味着运行时它可能会堵塞其它的数据库操作。# 从MySQL5.5.X版本开始,该操作运行于独立的线程中,并支持更多的并发数。
#用户可通过设 置 innodb_purge_threads 配置参数来选择清除操作是否使用单 独线程,默认情况下参数设置为0(不使用单独线程),
#设置为 1 时表示使用单独的清除线程。建议为1此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,
#但意外的故障将会丢失数据.MySQL开发人员建议设置为1-8M之间
innodb_log_buffer_size=15M

#数据并且你使用的时MySQL 5.6,你可以一开始就把它这是成4G
#此参数确定数据redo日志文件的大小,以M为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间
#redo日志的总尺寸被限定在4GB(默认可以有2个log文件)
# 此参数确定数据日志文件的大小,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间
innodb_log_file_size=4096M

# 用来同步IO操作的IO线程的数量. This value is
# 此值在Unix下被硬编码为4,但是在Windows磁盘I/O可能在一个大数值下表现的更好.
innodb_file_io_threads=4

# 为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3
innodb_log_files_in_group = 3

# innodb主线程刷新缓存池中的数据,使脏数据比例小于90%
innodb_max_dirty_pages_pct = 90

# InnoDB 有其内置的死锁检测机制,能导致未完成的事务回滚。但是,如果结合InnoDB使用MyISAM的lock tables 语句或第三方事务引擎,则InnoDB无法识别死锁。为消除这种可能性,可以将innodb_lock_wait_timeout设置为一个整数值,指示 MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)
# InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒
innodb_lock_wait_timeout=120

# 服务器关闭非交互连接之前等待活动的秒数。在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,
# 取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。参数默认值:28800秒(8小时)
# MySQL服务器所支持的最大连接数是有上限的,因为每个连接的建立都会消耗内存,因此我们希望客户端在连接到MySQL Server处理完相应的操作后,
# 应该断开连接并释放占用的内存。如果你的MySQL Server有大量的闲置连接,他们不仅会白白消耗内存,而且如果连接一直在累加而不断开,
# 最终肯定会达到MySQL Server的连接上限数,这会报'too many connections'的错误。对于wait_timeout的值设定,应该根据系统的运行情况来判断。
# 在系统运行一段时间后,可以通过show processlist命令查看当前系统的连接状态,如果发现有大量的sleep状态的连接进程,则说明该参数设置的过大,
# 可以进行适当的调整小些。要同时设置interactive_timeout和wait_timeout才会生效。
wait_timeout=28800
#服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中
#使用CLIENT_INTERACTIVE选项的客户端。 服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()
#中使用CLIENT_INTERACTIVE选项的客户端。默认值:28800秒(8小时)
interactive_timeout=28800
#最大并发线程数,cpu数量*2
thread_concurrency = 8

#你的服务器CPU有几个就设置为几,建议用默认一般为8
# 默认设置为 0,表示不限制并发数,这里推荐设置为0,更好去发挥CPU多核处理能力,提高并发量
innodb_thread_concurrency=0
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=500
innodb_stats_on_metadata=0

#show variables like '%innodb_file_per_table%';
# InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
# 独立表空间优点:
# 1.每个表都有自已独立的表空间。独享表空间(开启)
# 2.每个表的数据和索引都会存在自已的表空间中。
# 3.可以实现单表在不同的数据库中移动。
# 4.空间可以回收(除drop table操作处,表空不能自已回收)
# 缺点:
# 单表增加过大,如超过100G
# 结论:
# 共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整:
innodb_file_per_table=1
#这个参数据控制Innodb checkpoint 时的IO能力,一般可以按一块SAS 15000转的磁盘200个计算,6块盘的SAS做的Raid10这个值可以配到600即可。如果是普通的SATA一块盘只能按100算。(innodb-plugin, Percona有这个参数)
innodb_io_capacity=200
innodb_io_capacity_max=6000
#默认即可 这个参数比较专业
innodb_lru_scan_depth=2000

# innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求,根据你的 CPU 核数来更改,默认是4
# 注:这两个参数不支持动态改变,需要把该参数加入到my.cnf里,修改完后重启MySQL服务,允许值的范围从 1-64
innodb_write_io_threads = 4
innodb_read_io_threads = 4

# MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,
# 然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。
# 如果期望在一个短时间内有很多连接,你需要增加它。也就是说,如果MySQL的连接数据达到max_connections时,新来的请求将会被存在堆栈中,
# 以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源。
# 另外,这值(back_log)限于您的操作系统对到来的TCP/IP连接的侦听队列的大小。
# 你的操作系统在这个队列大小上有它自己的限制(可以检查你的OS文档找出这个变量的最大值),试图设定back_log高于你的操作系统的限制将是无效的。
back_log=200

#要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。试图设定back_log高于你的操作系统的限制将是无效的。默认数值是50
flush_time=0

# 用于表间关联缓存的大小
# 此缓冲被使用来优化全联合(full JOINs 不带索引的联合).
# 类似的联合在极大多数情况下有非常糟糕的性能表现,
# 但是将此值设大能够减轻性能影响.
# 通过 “Select_full_join” 状态变量查看全联合的数量
# 当全联合发生时,在每个线程中分配
# 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享
join_buffer_size=16M

#open_files_limit值总结如下:
#my.ini里如果配置了open_files_limit
#open_files_limit 最后取值为 配置文件 open_files_limit,max_connections*5,
#wanted_files=10+max_connections+table_cache_size*2 三者中的最大值。
#o如果my.ini 里如果没配置了open_files_limit
#open_files_limit最后取值为max_connections*5,10+max_connections+table_cache_size*2,ulimit -n中的最大者
# 增加每个进程的可打开文件数量.
# 警告: 确认你已经将全系统限制设定的足够高!
# 打开大量表需要将此值设大
open_files_limit=65535

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

#查询缓存
query_cache_size=512M
#如果设置为0,那么可以说,你的缓存根本就没有用,相当于禁用了
#如果设置为1,将会缓存所有的结果,除非你的select语句使用SQL_NO_CACHE禁用了查询缓存
#如果设置为2,则只缓存在select语句中通过SQL_CACHE指定需要缓存的查询。
query_cache_type=1
table_definition_cache=1400

 

 

评论已关闭