MySQL数据库要求

版本:MySQL 5.6 (目前仅支持5.6版本)

引擎:innodb

编码:utf-8

排序规则:utf8_bin

用户:root ,注意:本项目MySQL库有存储过程、定时任务依赖 root用户,建议一定要使用root用户。

MySQL 5.6优化my.cnf配置文件

MySQL 5.6的my.cnf配置文件,我整理了必须加入了一些的配置参数。

  • 如果你是自已搭建MySQL数据库,一定要手动修改这些参数,方可平稳运行。
  • 如果你是使用阿里云的RDS数据库,则阿里云官方已经优化过这些参数了,不需要你再手动修改了。
  • 如果你使用的是我官方提供的MySQL镜像( https://hub.docker.com/r/sichengtech/mysql56-all MySQL镜像(包含中英两个数据库)),则已经优化过这些参数了,不需要你再手动修改了。


MySQL的my.cnf配置文件完整内容

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
#log-error      = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address   = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#### 以下我定义的必须的参数 ####
character-set-server = utf8mb4   #字符集
collation-server = utf8mb4_bin   #字符集的校对规则(是否区分大小写,utf8_bin是区分大小写的)
max_allowed_packet = 1024M    #服务器一次能处理最大的查询包的值,也是服务器程序能够处理的最大查询。最大值是1G,如果设置超过1G,查看最终生效结果也只有1G。原因是 mysql 会限制 server 接受的数据包大小。有时候大的插入和更新超过了 max_allowed_packet 参数限制,会导致写入或者更新失败。
innodb_log_file_size = 512M    #确定日志文件的大小,更大的设置可以提高性能,但也会增加恢复数据库的时间。
lower_case_table_names = 1     #mysql表名、字段名,不区分大小(开发需求,建议开启)
innodb_buffer_pool_size= 2G   #InnoDB使用一个缓冲池来保存索引和原始数据,设置越大,在存取表里面数据时所需要的磁盘I/O 越少,一般设置为物理内存的%25左右,注意:不要将InnoDB的Buffer pool值配置为物理内存的50%~80%,应该根据具体生产环境而定。
innodb_buffer_pool_instances= 1   #值主要用于将innodb buffer pool进行划分,通过划分innodb buffer pool为多个实例,可以提高并发能力,并且减少了不同线程读写造成的缓冲页。每一页从其中一个buffer pool中使用hash函数随机的读取和写入。
max_connections = 1000    #指定mysql允许的最大连接进程数如果在访问博客时经常出现 too many connections的错误 提示的话,则需要增大该参数的值。
max_connect_errors = 3000    #设置每个主机的连接请求异常中断的最大次数,当超过该次数时,MySQL服务器将禁止host的连接请求,直到MySQL服务器重启或通过flush hosts命令来清空host的相关信息.
expire_logs_days = 7      #超过7天的binlog.mysql程序自动删除(如果数据重要,建议不要开启该选项)
skip-host-cache          #你可以用--skip-host-cache选项启动服务器来禁用主机名缓存。要想清除主机名缓存,执行FLUSH HOSTS语句或执行mysqladmin flush-hosts命令。
skip-name-resolve        #禁止mysql对外部连接进行DNS解析,使用这一选项可以消除mysql进行DNS解析的时候。但是需要注意的是,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式了,否则mysql将无法正常处理连接请求。

event_scheduler = 1    #开启mysql的事件调度器,用于定时执行MySQL的事件(clear_order_number),每天0点把表tread_order_seq归0。

#####################################
# 设备SQL模式
# 目前选择按5.7的严格模式运行,不做干预,所以下面注释了。
# sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#####################################

[mysqldump]
quick     #该选项用于转储大的表。它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行并在输出前将它缓存到内存中。
quote-names    #Quote table and column names with backticks (`).

[client]
default-character-set=utf8
  
[mysql]
default-character-set=utf8