1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
| [client] #password = your_password
#指定端口 port = 3306
#指定socket socket = /tmp/mysql.sock
#设置mysql-server相关信息 [mysqld]
#指定端口 port = 3306 socket = /tmp/mysql.sock
#数据库文件存放路径 datadir = /www/server/data
#默认存储引擎 default_storage_engine = InnoDB
#使用transaction-isolation选项来设置服务器的缺省事务隔离级别 #READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZABLE transaction-isolation = REPEATABLE-READ
performance_schema_max_table_instances = 400 table_definition_cache = 400
#主要用于多进程条件下对Myisam表进行锁定,在锁定的过程中,每个进程若要访问数据需等之前的进程完成操作并解除锁定后才能访问数据表,大大提升安全性,同时也造成了性能的消耗。 skip-external-locking
#指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。如果是以InnoDB引擎为主的DB,key_buffer_size 可以设置较小,8MB已足够;如果是以MyISAM引擎为主,可设置较大,但不能超过4G。 在这里,强烈建议不使用MyISAM引擎,默认都是用InnoDB引擎。注意:该参数值设置的过大反而会是服务器整体效率降低! key_buffer_size = 128M
#可接收数据包大小 max_allowed_packet = 100G
#主要设置table高速缓存数量(默认情况mysql服务器为2G内存设置256-512, 4G内存则为2048,当然内存越大,可以设置更大) table_open_cache = 512
#查询排序时所能使用的缓冲区大小。排序缓冲被用来处理类似 ORDER BY 以及 GROUP BY 队列所引起的排序。在排序发生时由每个线程分配,注意:该参数对应的分配内存是每连接独占!如果有 100 个连接,那么实际分配的总共排序缓冲区大小为 100 × 6 = 600MB,所以,对于内存在 4GB 左右的服务器推荐设置为 6-8M。 sort_buffer_size = 2M
#包消息缓冲区初始化为 net_buffer_length 字节,但需要时可以增长到 max_allowed_packet 字节 net_buffer_length = 4K
#读查询操作所能使用的缓冲区大小。和 sort_buffer_size 一样,该参数对应的分配内存也是每连接独享!用来做 MyISAM 表全表扫描的缓冲大小。当全表扫描需要时,在对应线程中分配。 read_buffer_size = 2M
#MyISAM 以索引扫描(Random Scan)方式扫描数据的 buffer大小 read_rnd_buffer_size = 256K
#MyISAM 设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE 或用 CREATE INDEX 创建索引或 ALTER TABLE 过程中排序 MyISAM 索引分配的缓冲区 myisam_sort_buffer_size = 32M
#我们在 cache 中保留多少线程用于重用。当一个客户端断开连接后,如果 cache 中的线程还少于 thread_cache_size,则客户端线程被放入 cache 中。这可以在你需要大量新连接的时候极大的减少线程创建的开销(一般来说如果你有好的线程模型的话,这不会有明显的性能提升。)服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能。通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用,根据物理内存设置规则如下: #1G —> 8 #2G —> 16 #3G —> 32 #大于3G —> 64 thread_cache_size = 64
#指定 MySQL 查询缓冲区的大小。可以通过在 MySQL 控制台执行以下命令观察: #代码: #> SHOW VARIABLES LIKE '%query_cache%'; #> SHOW STATUS LIKE 'Qcache%';如果 Qcache_lowmem_prunes 的值非常大,则表明经常出现缓冲不够的情况; #如果 Qcache_hits 值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲; Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。 #memlock # 如果你的系统支持 memlock() 函数,你也许希望打开此选项用以让运行中的 mysql 在在内存高度紧张的时候,数据在内存中保持锁定并且防止可能被 swapping out,此选项对于性能有益。 query_cache_size = 64M
#临时表的最大大小,如果超过该值,则结果放到磁盘中,此限制是针对单个表的,而不是总和。 tmp_table_size = 64M
#定义了mysql应该支持的sql语法,数据校验等 参考https://www.cnblogs.com/Zender/p/8270833.html sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#timestamp类型的字段,如果插入时没有提供值,下面设置为true时自动填充当前日期,如2019-11-27 23:42:00 explicit_defaults_for_timestamp = true
#禁止 MySQL 对外部连接进行 DNS 解析,使用这一选项可以消除 MySQL 进行 DNS 解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用 IP 地址方式,否则 MySQL 将无法正常处理连接请求! #skip-name-resolve
#指定MySQL允许的最大连接进程数。如果在访问数据库时经常出现"Too Many Connections"的错误提 示,则需要增大该参数值。 max_connections = 500
#如果某个用户发起的连接 error 超过该数值,则该用户的下次连接将被阻塞,直到管理员执行 flush hosts; 命令或者服务重启,防止黑客,非法的密码以及其他在链接时的错误会增加此值 max_connect_errors = 100
#MySQL打开的文件描述符限制,默认最小1024;当open_files_limit没有被配置的时候,比较max_connections*5和ulimit-n的值,哪个大用哪个,当open_file_limit被配置的时候,比较open_files_limit和max_connections*5的值,哪个大用哪个。 open_files_limit = 65535
#打开二进制日志功能 #在复制(replication)配置中,作为 MASTER 主服务器必须打开此项。如果你需要从你最后的备份中做基于时间点的恢复,也同样需要二进制日志。这些路径相对于 datadir log-bin=mysql-bin
#binlog格式,推荐用mixed binlog_format=mixed
#表示是本机的序号为2,在同一架构中的编号必须是唯一的 server-id = 2
#超过 10 天的 binlog 删除 expire_logs_days = 10
#指定是否开启慢查询日志。慢查询是指消耗了比 “long_query_time” 定义的更多时间的查询。如果 log_queries_not_using_indexes 被打开,那些没有使用索引的查询也会被记录。如果你经常增加新查询到已有的系统内的话,一般来说这是一个好主意。如果系统中的SQL查询语句都已经优化过了,可以考虑关闭。 slow_query_log=1
#慢查询日志存放路径 slow-query-log-file=/www/server/data/mysql-slow.log
#SQL语句执行超过 0.1 秒就记录下来,单位为秒 long_query_time=0.1
#下面值为on时,未使用索引的查询也被记录到慢查询日志中(可选项) log_queries_not_using_indexes=on
#预先加载的插件列表,表示在内建插件加载之前,以及存储引擎初始化之前,需要加载的插件。比如InnoDB表空间加密依赖 keyring_file 插件,那么 keyring_file 插件必需在InnoDB存储引擎初始化之前加载。 early-plugin-load = ""
#Mysql主从架构时,从站指定要复制的数据库名单(白名单) replicate_do_db=db_ssp
#Mysql主从架构时,从站指定要忽略的数据库名单(黑名单),多个时,一行一个库 replicate_ignore_db=information_schema replicate_ignore_db=performance_schema replicate_ignore_db=mysql replicate_ignore_db=sys
#Mysql主从架构时,从站指定要忽略的数据库中指定的数据表(黑名单),多个时,一行一个表,格式:数据库名.表名 replicate_ignore_table=db_ssp.ssp_admin_user replicate_ignore_table=db_ssp.ssp_ads_access_count replicate_ignore_table=db_ssp.ssp_ads_fail_log replicate_ignore_table=db_ssp.ssp_channel_flow_collect replicate_ignore_table=db_ssp.ssp_stat_income_display
#从站SQL线程从relay log重放命令时,忽略这些错误码 slave-skip-errors=1007,1008,1032,1062
#设置此选项如果你希望 InnoDB 表空间文件被保存在其他分区,默认保存在 MySQL 的 datadir 中。 innodb_data_home_dir = /www/server/data
#InnoDB将数据保存在一个或者多个数据文件中成为表空间。如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了。其他情况下,每个设备一个文件一般都是个好的选择,你也可以配置 InnoDB 来使用裸盘分区,请参考手册来获取更多相关内容 innodb_data_file_path = ibdata1:10M:autoextend
# InnoDB 的日志文件所在位置。默认是 MySQL 的 datadir,你可以将其指定到一个独立的硬盘上或者一个 RAID1 卷上来提高其性能innodb_max_dirty_pages_pct = 90 #innodb 主线程刷新缓存池中的数据,使脏数据比例小于 90%,这是一个软限制,不被保证绝对执行。 innodb_log_group_home_dir = /www/server/data
#包括数据页、索引页、插入缓存、锁信息、自适应哈希所以、数据字典信息,InnoDB 使用一个缓冲池来保存索引和原始数据, 不像 MyISAM。这里你设置越大,你在存取表里面数据时所需要的磁盘 I/O 越少。在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的 80%,不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸。注意在 32 位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,所以不要设置的太高。 innodb_buffer_pool_size = 512M
#事物日志大小。在日志组中每个日志文件的大小,你应该设置日志文件总合大小到你缓冲池大小的5%~100%,来避免在日志文件覆写上不必要的缓冲池刷新行为。不论如何,请注意一个大的日志文件大小会增加恢复进程所需要的时间。 innodb_log_file_size = 256M
#用来缓冲日志数据的缓冲区的大小。当此值快满时,InnoDB 将必须刷新数据到磁盘上。由于基本上每秒都会刷新一次,所以没有必要将此值设置的太大(甚至对于长事务而言) innodb_log_buffer_size = 64M
#如果设置为 1,InnoDB 会在每次提交后刷新(fsync)事务日志到磁盘上,这提供了完整的 ACID 行为。如果你愿意对事务安全折衷,并且你正在运行一个小的事物,你可以设置此值到 0 或者 2 来减少由事务日志引起的磁盘 I/O #0 代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘。 #2 代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上。 innodb_flush_log_at_trx_commit = 1
#InnoDB 事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB 在它自己的锁定表中自动检测事务死锁并且回滚事务。 InnoDB 用 LOCK TABLES 语句注意到锁定设置,默认值是 50 秒。 innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
#innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求,根据你的 CPU 核数来更改,默认是4 #注:这两个参数不支持动态改变,需要把该参数加入到my.cnf里,修改完后重启MySQL服务,允许值的范围从 1-64 #假如CPU是2颗8核的,那么可以分别设置为8,如果数据库的读操作比写操作多,那么可以分别设置10(read)和6(write) innodb_read_io_threads = 2 innodb_write_io_threads = 2
[mysqldump]
#mysqldump可以行级导出数据,或者也可以将整个表载入内存一次性导出,如果将所有数据导入内存可能会面临内存缓冲区不够的问题。如果要行级导出数据,使用--quick选项。 quick
#服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB 字段一起工作时相当必要), 每个连接独立的大小,大小动态增加。 设置最大包,限制server接受的数据包大小,避免超长SQL的执行有问题 默认值为16M,当MySQL客户端或 mysqld 服务器收到大于 max_allowed_packet 字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与 MySQL 服务器的连接”错误。默认值 16M。 max_allowed_packet = 500M
[mysql]
#mysql命令窗口,自带命令补全功能,只是默认是禁用的,如果要开启,将下行改为auto-rehash即可 no-auto-rehash
#MyISAM相关选项 [myisamchk]
#指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。如果是以InnoDB引擎为主的DB,专用于MyISAM引擎的 key_buffer_size 可以设置较小,8MB 已足够。如果是以MyISAM引擎为主,可设置较大,但不能超过4G。在这里,强烈建议用InnoDB引擎,而不使用MyISAM引擎。注意:该参数值设置的过大反而会是服务器整体效率降低! key_buffer_size = 128M
#查询排序时所能使用的缓冲区大小。排序缓冲被用来处理类似 ORDER BY 以及 GROUP BY 队列所引起的排序。一个用来替代的基于磁盘的合并分类会被使用。查看 “Sort_merge_passes” 状态变量。 在排序发生时由每个线程分配,注意:该参数对应的分配内存是每连接独占!如果有 100 个连接,那么实际分配的总共排序缓冲区大小为 100 × 6 = 600MB,所以对于内存在 4GB 左右的服务器推荐设置为 6-8M。 sort_buffer_size = 2M
#读查询操作所能使用的缓冲区大小。和 sort_buffer_size 一样,该参数对应的分配内存也是每连接独享!用来做 MyISAM 表全表扫描的缓冲大小。当全表扫描需要时,在对应线程中分配。 read_buffer = 2M
#写操作所能使用的缓冲区大小。 write_buffer = 2M
#mysqlhotcopy只支持 MyISAM 引擎
[mysqlhotcopy]
#指的是mysql在关闭一个交互的连接之前所要等待的秒数(交互连接如mysql gui tool中的连接),其取值范围随wait_timeout变动,默认值28800。 interactive-timeout
|