mysql 配置⽂件(完整版)[client ]#客户端设置port    = 3306socket    = /data/mysql/data/mysql.sock default-character-set = utf8mb4 [mysqld ]#mysql 启动时使⽤的⽤户user    = mysql #默认连接端⼝port    = 3306#为MySQL 客户端程序和服务器之间的本地通讯指定⼀个套接字⽂件socket    = /data/mysql/data/mysql.sock #数据库服务器id ,这个id ⽤来在主从服务器中标记唯⼀mysql 服务器server-id = 1#端⼝绑定的ip 地址,0.0.0.0表⽰允许所有远程访问,127.0.0.1表⽰只能本机访问,默认值为*bind-address = 0.0.0.0#默认名为 主机名.pid,在数据库/mysql/data/主机名.pid,记录mysql 运⾏的process id #如果存在,再次start 时会报已经启动pid-file = /data/mysql/data/mysql.pid  #安装⽬录basedir    = /usr/local/mysql #数据库存放⽬录datadir    = /data/mysql/data/ #系统数据库编码设置,排序规则character_set_server = utf8mb4collation_server = utf8mb4_general_ci #secure_auth 为了防⽌低版本的MySQL 客户端(<4.1)使⽤旧的密码认证⽅式访问⾼版本的服务器。MySQL 5.6.7开始secure_auth 默认为启⽤值1secure_auth = 1#可能的连接数#指出在MySQL 暂时停⽌响应新请求之前的短时间内多少个请求可以被存在堆栈中。back_log = 1024 >>>>>>>>>>>###其他设置>>>>>>>>>>>## #显式指定默认时间戳,即定义表中的timestamp 时间戳的列时需要显⽰指定默认值#默认为OFF ,#如果第⼀个TIMESTAMP 列,没有显式设置DEFAULT ,将⾃动分配DEFAULT CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP 属性#timestamp 列不能设置为NULL,第⼆列及以后的timestamp 列都默认为
"0000-00-00 00:00:00"#如果设置为ON ,#第⼀个timestamp 列可以设置为NULL ,不会默认分配DEFAULT CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP 属性#声明为NOT NULL 且没有显式DEFAULT ⼦句,在严格模式下会报错。explicit_defaults_for_timestamp = true  #linux 下要严格区分⼤⼩写,windows 下不区分⼤⼩写#1表⽰不区分⼤⼩写,0表⽰区分⼤⼩写。#lower_case_table_names = 0lower_case_table_names = 1 #默认sql 模式,严格模式#sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,#NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION #ONLY_FULL_GROUP_BY #NO_ZERO_IN_DATE 不允许年⽉为0#NO_ZERO_DATE 不允许插⼊年⽉为0的⽇期#ERROR_FOR_DIVISION_BY_ZERO 在INSERT 或UPDATE 过程中,如果数据被零除,则产⽣错误⽽⾮警告。如 果未给出该模式,那么数据被零除时MySQL 返
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
mysql配置与安装过程52
53
54
55
56
57
58
59
60
61
62
#ERROR_FOR_DIVISION_BY_ZERO 在INSERT 或UPDATE 过程中,如果数据被零除,则产⽣错误⽽⾮警告。如 果未给出该模式,那么数据被零除时MySQL 返#NO_ENGINE_SUBSTITUTION 不使⽤默认的存储引擎替代sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENG
>>>>>>>>>>>>>###各种缓冲区及处理数据的最⼤值设置>>>>>>>>>>>>>### #是MySQL 执⾏排序使⽤的缓冲⼤⼩。如果想要增加ORDER BY 的速度,⾸先看是否可以让MySQL 使⽤索引⽽不是额外的排序阶段#如果不能,可以尝试增加sort_buffer_size 变量的⼤⼩sort_buffer_size = 16M  #应⽤程序经常会出现⼀些两表(或多表)Join 的操作需求,MySQL 在完成某些 Join 需求的时候(all/index join ),#为了减少参与Join 的“被驱动表”的读取次数以提⾼性能,需要使⽤到 Join Buffer 来协助完成 Join 操作。#当 Join Buffer 太⼩,MySQL 不会将该 Buffer 存⼊磁盘⽂件,⽽是先将Join Buffer 中的结果集与需要 Join 的表进⾏ Join 操作#然后清空 Join Buffer 中的数据,继续将剩余的结果
集写⼊此 Buffer 中,#如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率。#若果多表连接需求⼤,则这个值要设置⼤⼀点。join_buffer_size = 16M  #索引块的缓冲区⼤默认16M key_buffer_size = 15M # 消息缓冲区会⽤到该列,该值太⼩则会在处理⼤包时产⽣错误。如果使⽤⼤的text,BLOB 列,必须增加该值max_allowed_packet = 32M  # mysql 服务器最⼤连接数值的设置范围⽐较理想的是:服务器响应的最⼤连接数值占服务器上限连接数值的⽐例值在10%以上# Max_used_connections / max_connections * 100% max_connections = 1700# 阻⽌过多尝试失败的客户端,如果值为10时,失败(如密码错误)10次,mysql 会⽆条件阻⽌⽤户连接max_connect_errors = 1000000 #表描述符缓存⼤⼩,可减少⽂件打开/关闭次数,⼀般max_connections*2。table_open_cache = 1024#MySQL 缓存 table 句柄的分区的个数,每个cache_instance<=table_open_cache/table_open_cache_instances table_open_cache_instances = 32#mysql 打开最⼤⽂件数open_files_limit = 65535  #InnoDB 表中,表更新后,查询缓存失效,事务操作提交之前,所有查询都⽆法使⽤缓存。影响查询缓存命中率#查询缓存是靠⼀个全局锁操作保护的,如果查询缓存配置的内存⽐较⼤且⾥⾯存放了⼤量的查询结果,#当查询缓存失效的时候,会长时间的持有这个全局锁。#因为查询缓存的命中检测操作以及缓存失效检测也都依赖这个全局锁,所以可能会导致系统僵死的情况#在⾼并发,写⼊量⼤的系统,建义把该功能禁掉query_cache_size = 0#决定是否缓存查询结果。这个变量有三个取值:0,1,2,分别代表了off 、on 、demand 。query_cache_type = 0#指定单个查询能够使⽤的缓冲区⼤⼩,缺省为1M query_cache_limit = 1M  ##
>>>>>>>>>>>>#线程相关配置>>>>>>>>>>>>### #线程缓存;主要⽤来存放每⼀个线程⾃⾝的标识信息,线程栈⼤⼩thread_stack = 256K  #thread_cahe_size 线程池,线程缓存。⽤来缓存空闲的线程,以⾄于不被销毁,#如果线程缓存在的空闲线程,需要重新建⽴新连接,则会优先调⽤线程池中的缓存,很快就能响应连接请求。#每建⽴⼀个连接,都需要⼀个线程与之匹配。thread_cache_size = 384 #External-locking ⽤于多进程条件下为MyISAM 数据表进⾏锁定6263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
#External-locking ⽤于多进程条件下为MyISAM 数据表进⾏锁定#服务器访问数据表时经常需要等待解锁,因此在单服务器环境下external locking 开启会让MySQL 性能下降 #单服务器环境,使⽤skip-external-locking ,关闭外部锁定,#多服务器使⽤同⼀个数据库⽬录时,必须开启external-locking,也就是说注释掉skip-external-locking skip-external-locking  #最⼤的空闲等待时间,默认是28800,单位秒,即8个⼩时#通过mysql 客户端连接数据库是交互式连接,通过jdbc 连接数据库是⾮交互式连接#交互式连接超时时间,超过这个时间⾃动断开连接interactive_timeout = 600#⾮交互式连接超时时间,超过这个时间⾃动断开连接wait_timeout = 600 #它规定了内部内存临时表的最⼤值,每个线程都要分配。(实际起限制作⽤的是tmp_table_size 和max_heap_table_size 的最⼩值。)#如果内存临时表超出了限制,MySQL 就会⾃动地把它转化为基于磁盘的MyISAM 表,存储在指定的tmpdir ⽬录下t
mp_table_size = 96M max_heap_table_size = 96M    >>>>>>>###⽇志设置>>>>>>>### # ⽇志时间戳,mysql5.7.2版本之后才有的属性,控制写⼊到⽂件上显⽰⽇志的时间,# 不会影响general log 和 slow log 写到表(al_log, mysql.slow_log)中的⽇志的时间# 可以设置的有:UTC 和 SYSTEM ,默认UTC ,即0时区的时间,⽐北京时间慢8⼩时,所以要设置为SYSTEM log_timestamps = SYSTEM  #⽇志的输出位置⼀般有三种⽅式:file(⽂件),table(表),none(不保存)#其中前两个输出位置可以同时定义,none 表⽰是开启⽇志功能但是不记录⽇志信息。#file 就是通过general_log_file=/mydata/data/general.log 等⽅式定义的,#⽽输出位置定义为表时查看⽇志的内容:al_log 表 ##⼆进制⽇志设置#默认不开启⼆进制⽇志log_bin = OFF #log-bin = /data/mysqldata/3307/binlog/mysql-bin 设置⼆进制路径时,如果没有⽣命log_bin=OFF ,会开启⽇志#⼆进制⽇志缓冲⼤⼩#我们知道InnoDB 存储引擎是⽀持事务的,实现事务需要依赖于⽇志技术,为了性能,⽇志编码采⽤⼆进制格式。那么,我们如何记⽇志呢?有⽇志的时候,就#可是磁盘的效率是很低的,如果你⽤过Nginx ,,⼀般Nginx 输出access log 都是要缓冲输出的。因此,记录⼆进制⽇志的时候,我们是否也需要考虑Cache 呢?#答案是肯定的,但是Cache 不是直接持久化,于是⾯临安全性的问题——因为系统宕机时,Cache 中可能有残余的数据没来得及写⼊磁盘。因此,Cache 要权衡
#既减少磁盘I/O ,满⾜性能要求;⼜保证Cache ⽆残留,及时持久化,满⾜安全要求。binlog_cache_size = 16M  ##慢查询,开发调式阶段才需要开启慢⽇志功能。上线后关闭slow_query_log = OFF #慢⽇志⽂件路径slow_query_log_file = /data/mysql/logs/slow_query.log #该值是ON ,则会记录所有没有利⽤索引来进⾏查询的语句,前提是slow_query_log 的值也是ON log_queries_not_using_indexes = ON #记录管理语句log-slow-admin-statements #如果运⾏的SQL 语句没有使⽤索引,#则mysql 数据库同样会将这条SQL 语句记录到慢查询⽇志⽂件中。调试时候使⽤#log-queries-not-using-indexes #设定每分钟记录到⽇志的未使⽤索引的语句数⽬,超过这个数⽬后只记录语句数量和花费的总时间#log_throttle_queries_not_using_indexes = 60 #MySQL 能够记录执⾏时间超过参数 long_query_time 设置值的SQL 语句,默认是不记录的。超过这个时间的sql 语句会被记录到慢⽇志⽂件中long_query_time = 2 ##错误⽇志:记录启动,运⾏,停⽌mysql 时出现的信息127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
log-error = /data/mysql/logs/error.log  ##⼀般查询⽇志,记录建⽴的客户端连接⽤户的所有操作,增上改查等,#不是为了调式数据库,建议不要开启,0关闭,1开启general_log = OFF general_log_file = /data/mysql/logs/general.log  #log-long-format 扩展⽅式记录有关事件#它是记录激活的更新⽇志、⼆进制更新⽇志、和慢查询⽇志的⼤量信息。例如,所有查询的⽤户名和时间戳将记录下来#log-short-format,相反,记录少量的信息  >>>>>>####数据库存储引擎###
>>>>>>### #默认使⽤InnoDB 存储引擎default_storage_engine = InnoDB  >>>>>>####innoDB setting>>>>>>># #控制打开.ibd ⽂件的数量。#如果未启⽤innodb_file_per_table ,则默认值为300#否则取决于300和innodb_open_files 中的较⼤值innodb_file_per_table = 1innodb_open_files = 350#表定义缓存(数据字典)数量400-2000,默认为400 + (table_open_cache / 2),⼩⽹站可以设置为最低table_definition_cache = 400#InnoDB ⽤来⾼速缓冲数据和索引内存缓冲⼤⼩。更⼤的设置可以使访问数据时减少磁盘 I/O 。innodb_buffer_pool_size = 64M  #单独指定数据⽂件的路径与⼤⼩#默认会在datadir ⽬录下创建ibdata1,表空间tablespace #如果想为innodb tablespace 指定不同⽬录下的⽂件,必须指定innodb_data_home_dir ,home ⽬录innodb_data_file_path = ibdata1:32M:autoextend #对于多核的CPU 机器,可以修改innodb_read_io_threads 和innodb_write_io_threads 来增加IO 线程,来充分利⽤多核的性能。默认4#innodb_write_io_threads = 4#innodb_read_io_threads = 4 #并发线程数的限制值,表⽰默认0情况下不限制线程并发执⾏的数量innodb_thread_concurrency = 0#开始碎⽚回收线程。这个应该能让碎⽚回收得更及时⽽且不影响其他线程的操作,#默认值1表⽰innodb 的purge 操作被分离到purge 线程中,master thread 不再做purge 操作。#innodb_purge_threads = 1 #配置MySql ⽇志何时写⼊硬盘的参数,默认为1#0:log buffer 将每秒⼀次地写⼊log file 中,并且log file 的flush(刷到磁盘)操作同时进⾏。该模式下在事务提交的时候,不会主动触发写⼊磁盘的操作。#1:每次事务提交时MySQL 都会
把log buffer 的数据写⼊log file ,并且flush(刷到磁盘)中去#2:每次事务提交时mysql 都会把log buffer 的数据写⼊log file ,但是flush(刷到磁盘)操作并不会同时进⾏。该模式下,MySQL 会每秒执⾏⼀次 flush(刷到磁盘)操#通常设置为 1,意味着在事务提交前⽇志已被写⼊磁盘, 事务可以运⾏更长以及服务崩溃后的修复能⼒。innodb_flush_log_at_trx_commit = 1 #InnoDB 将⽇志写⼊⽇志磁盘⽂件前的缓冲⼤⼩。理想值为 1M ⾄ 8M 。⼤的⽇志缓冲允许事务运⾏时不需要将⽇志保存⼊磁盘⽽只到事务被提交(commit)。#因此,如果有⼤的事务处理,设置⼤的⽇志缓冲可以减少磁盘I/O 。innodb_log_buffer_size = 2M #⽇志组中的每个⽇志⽂件的⼤⼩(单位 MB)。如果 n 是⽇志组中⽇志⽂件的数⽬,那么理想的数值为 1M ⾄下⾯设置的缓冲池(buffer pool)⼤⼩的 1/n 。较⼤的值
#可以减少刷新缓冲池的次数,从⽽减少磁盘 I/O 。但是⼤的⽇志⽂件意味着在崩溃时需要更长的时间来恢复数据。innodb_log_file_size = 128M #指定有三个⽇志组innodb_log_files_in_group = 3#innodb_max_dirty_pages_pct 作⽤:控制Innodb 的脏页在缓冲中在那个百分⽐之下,值在范围1-100,默认为90.这个参数的另⼀个⽤处:#当Innodb 的内存分配过⼤,致使swap 占⽤严重时,可以适当的减⼩调整这个值,使达到swap 空间释放出来。建义:这个值最⼤在90%,最⼩在15%。192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
#太⼤,缓存中每次更新需要致换数据页太多,太⼩,放的数据页太⼩,更新操作太慢。innodb_max_dirty_pages_pct = 75#在回滚(rooled back)之前,InnoDB 事务将等待超时的时间(单位
秒)innodb_lock_wait_timeout = 120 #Innodb Plugin 引擎开始引⼊多种格式的⾏存储机制,⽬前⽀持:Antelope 、Barracuda 两种。其中Barracuda 兼容Antelope 格式。#innodb_file_format = Barracuda #限制Innodb 能打开的表的数量#innodb_open_files = 65536  #分布式事务#innodb_support_xa = FALSE  #innodb_buffer_pool_size ⼀致 可以开启多个内存缓冲池,把需要缓冲的数据hash 到不同的缓冲池中,这样可以并⾏的内存读写。#innodb_buffer_pool_instances = 4#这个参数据控制Innodb checkpoint 时的IO 能⼒#innodb_io_capacity = 500#作⽤:使每个Innodb 的表,有⾃已独⽴的表空间。如删除⽂件后可以回收那部分空间。#分配原则:只有使⽤不使⽤。但DB还需要有⼀个公共的表空间。#innodb_file_per_table = 1 #当更新/插⼊的⾮聚集索引的数据所对应的页不在内存中时(对⾮聚集索引的更新操作通常会带来随机IO ),会将其放到⼀个insert buffer 中,#当随后页⾯被读到内存中时,会将这些变化的记录merge 到页中。当服务器⽐较空闲时,后台线程也会做merge 操作#innodb_change_buffering = inserts #该值影响每秒刷新脏页的操作,开启此配置后,刷新脏页会通过判断产⽣重做⽇志的速度来判断最合适的刷新脏页的数量;#innodb_adaptive_flushing = 1 #数据库事务隔离级别 ,读取提交内容#transaction-isolation = READ-COMMITTED  #innodb_flush_method 这个参数控制着innodb 数据⽂件及redo log 的打开、刷写模式#InnoDB 使⽤O_DIRECT 模式打开数据⽂件,⽤fsync()函数去更新⽇志和数据⽂件。#innodb_flush_method = O_DIRECT #默认设置值为1.设置为0:表⽰Innodb 使⽤⾃带的内存分配程序;设置为1:表⽰InnoDB 使⽤操作系统的内存分配程序     #innodb_use_sys_malloc = 1 >>>>>####
>myisam setting>>>>>>>#bulk_insert_buffer_size = 8M myisam_sort_buffer_size = 8M # MySQL 重建索引时所允许的最⼤临时⽂件的⼤⼩myisam_max_sort_file_size = 10G myisam_repair_threads = 1#忽略表名⼤⼩写lower_case_table_names =1 #数据库全量备份[mysqldump ]#强制mysqldump 从服务器⼀次⼀⾏地检索表中的⾏quick #可接收数据包⼤⼩max_allowed_packet = 16M  #在mysqld 服务器不使⽤的情况下修复表或在崩溃状态下恢复表[myisamchk ]key_buffer_size = 8M sort_buffer_size = 8M read_buffer = 4M write_buffer = 4M 258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论