[client] #针对客户端的设置
default-character-set = utf8 #指定字符集(mariadb默认是拉丁文)
port = 3306 #指定端口
socket = /data/mydata/mysql.sock #指定socket
[mysqld] #设置mysql-server相关信息
user = mysql #指定运行用户为mysql(默认是以mysql用户运行的),经过试验,可以用非mysql之外的用户运行的
default-storage-engine = InnoDB #指定默认引擎为innodb,(反正跟系统默认指定的没有冲突)
socket = /data/mydata/mysql.sock #略过
pid-file = /data/mydata/mysql.pid #略过
#禁止域名解析(优化)
skip-name-resolve #禁用DNS查询
skip-host-cache #禁止缓存主机名
#--skip-networking #禁用TCP/IP连接
https://blog.csdn.net/u010584271/article/details/80835378 这篇博客比较详细描述了这个问题
#跳过外部锁定(优化)
skip-external-locking #主要用于多进程条件下对Myisam表进行锁定,在锁定的过程中,每个进程若要访问数据需等之前的进程完成操作并解除锁定后才能访问数据表,大大提升安全性,同时也造成了性能的消耗,怎么用看大家把。
#连接优化
max_connections = 2000 #最大连接数(怎么设置等我有时间琢磨先)
max_allowed_packet = 64M #设置server接受数据包大小,数据包大于此值,将不会接收
table_open_cache = 2048 #主要设置table高速缓存数量(默认情况mysql服务器为2G内存设置256-512,4G内存则为2048,当然内存越大,你也可以设置更大)
#其他优化
explicit_defaults_for_timestamp = 1 #主要针对timetamp列进行优化,为1时允许默认为null值
lower_case_table_names = 0 #区分大小写
默认有3个值
0 表名进行存储或者比较(查询,检索)的时候都区分大小写
1 表名进行存储是小写,但是比较不区分大小写
2 表明存储分大小写,比较的时候是小写
unix,linux默认值是0,window是1(winods默认不区分大小写的)
#设置colltion(排序规则),下面这个是服务器级别的设置方法,还有数据库,表级别的。。。。
collation-server utf8_general_ci
character-set-server = utf8
注:colltion用于指定数据集如何排序,以及字符串的比对规则。
https://www.cnblogs.com/EasonJim/p/8128196.html #这篇博文介绍的比较详细
#MyISAM #对Myisam存储引擎进行优化
key-buffer-size = 32M #设置键高速缓存大小(所有引擎通用的),如果数据库以Myisam为主,可以适当增加此值。
myisam-recover-options = FORCE,BACKUP #主要提供mysq启动时Myisam自动恢复功能,有4个值,可结合使用。
default:不用备份,强制或快速检查恢复。
backup:如果数据文件在恢复时被更改,会将MYD文件的备份保存为tbl_name‐datetime.BAK。
force:即使MYD文件丢失多于一行,任进行恢复
quick:如果没有任何的delete快就不检查行。
#DATA STORAGE #
datadir = /data/mydata
#BINARY LOGGING 主从模块
log-bin = mysql-bin #启用二进制日志
binlog_format = mixed #binlog日志格式,默认采用staterment,建议采用mixed
expire-logs-days = 14 #设置binlog过期清理时间,当某部分二进制日志存在14天后就清理
sync-binlog = 1 #主要是进行日志存储操作,值的设置与mysql性能息息相关
#max_binlog_size = 100M #每个binlog日志大小
#binlog_cache_size = 10M #binlog日志缓存大小
server-id = 100 #设置本机数据库ID
performance_schema = 0
max_connect_errors = 4294967295 #主要提供访问限制功能(当此值过大的时,可以延迟触发被禁止访问的条件),当某个ip触发此值时,就会被mysql禁止访问
注:sysnc-bing 值分为0,或者 n,
为0时,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
为n时,n可以为1,2,只要是非0,整数即可,意思就是当每进行n次事务提交之后,mysql将进行sync之类操作,将binlo_cache中的数据同步到磁盘。
#CACHES(缓存) AND LIMITS(限制) #看单词就知道是啥意思
# tmp-table-size = 32M #设置内存临时表的最大值(每个线程都要分配),如果临时内存表超过此值,就自动把它转为MyIsam表,存储在指定的tmpdir目录下。
# max-heap-table-size = 32M #指定用户可以创建的内存表大小,这个值用来计算内存表的最大值。
注:在优化查询语句的时候,要避免使用临时表,避免不了,就得保证这些临时表是存在内存中的,简单来说,频繁进行查询的时候,得将此值设置大些,不多的话,可以不设置。
# query-cache-type = 0 #主要用来缓存select查询结果,不怎么变化的数据(静态页面及很少发生变化的数据),有3个值:
0 关闭此功能;
1 缓存所有结果,除非select语句使用sql_no_cache禁用查询缓存;
2 只缓存select语句中指定需要缓存的查询
# query-cache-size = 0 #为0是禁用此功能,,此值的大小,根据实际查询情况来设置,最好是1024的倍数,参考值32M,128M.这个是跟query-cache-type一起使用的。
max-connections = 1024 #针对cache模块设计的最大连接数
thread-cache-size = 64 #设置线程池缓存大小,建议内存在3G以上用64(可根据show global status like 'Threads_%'; 结果进行设置)
open_files_limit = 65535 #文件打开数量,最好与操作系统支持的文件打开数一致
table-definition-cache = 4096 #定义相关信息缓存,实际存放的是frm跟内存的映射关系
table-open-cache = 512 #指定了内存允许打开表的数量,有效的设置此值,可以降低热点表的频繁开关动作,提升性能。
注:什么是线程池缓存?
当客户端断开连接后 将当前线程缓存起来 当在接到新的连接请求时快速响应 无需创建新的线程 ,存储线程的空间就叫线程池。
#INNODB #针对innodb引擎的设置
innodb_data_file_path = ibdata1:2G:autoextend #指定数据文件,初始大小,指定扩展大小 注意与数据库中初始文件大小保持一致
innodb-flush-method = O_DIRECT #控制着innodb数据文件及redo log的打开,刷写模式,有3个值:
fdatasync(是默认值),调用fsync()去刷数据文件与redo log的buffer
O_DSYNC,innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件
O_DIRECT,innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log innodb-log-files-in-group = 2 #以循环的方式将日志写到多个文件,默认是2
innodb-log-file-size = 1024M #数据日志文件大小
innodb-flush-log-at-trx-commit = 1 #每次提交日志是否记录磁盘 默认值是1 2是日志写入系统缓存 0 不提交也不记录
innodb-file-per-table = 1 #设置独立表空间,innodb 默认是1个表空间
innodb-buffer-pool-size = 12G #(缓冲池)用于缓存索引,innodb数据页面,脏页等等,在专用数据库服务器上可以设置为物理内存的70%-80%
#慢日志
log-error = /data/logs/mysql/mysql-error.log #定义错误日志路径
log-queries-not-using-indexes = 0 #记录没有使用索引查询语句
slow-query-log = 1 #记录慢日志
slow-query-log-file = /data/logs/mysql/mysql-slow.log #慢查询日志记录文件
long_query_time = 1 #慢日志超时设置,默认是10s,记录超过查询时间的语句 这里的1 是1s
#[mysqldump] #命令,用于数据库备份
[mysqldump]
quick #强制mysqldump从服务器一次一行地检索表中的行
max_allowed_packet = 32M #可接收数据包大小
#[mysql] #指的是mysql登录端
[mysql]
no-auto-rehash #开启命令自动补齐给你
#[myisamchk]
[myisamchk] #是个命令,用于mysqld在不使用的情况修复表或者崩溃的情况下恢复表
key_buffer_size = 32M
sort_buffer_size = 32M
read_buffer = 8M
write_buffer = 8M
#[mysqlhotcopy]
[mysqlhotcopy]
interactive-timeout
expire_logs_days = 10
#mysqlhotcopy使用lock tables、flush tables和cp或scp来快速备份数据库.它是备份数据库或单个表最快的途径,完全属于物理备份,但只能用于备份MyISAM存储引擎和运行在数据库目录所在的机器上
#与mysqldump备份不同,mysqldump属于逻辑备份,备份时是执行的sql语句.使用mysqlhotcopy命令前需要要安装相应的软件依赖包..
#[mysqld_safe]
[mysqld_safe] #以safe方式启动数据库,相比于mysqld,会在服务启动后继续监控服务状态,死机时重启
open-files-limit = 8192