mysql配置文件结构_MariaDB/MySQL配置文件my.cnf解读

17270ce95af85a4a2d33846cd5831d99.png

MariaDB/MySQL的默认设置性能非常差,仅仅起一个功能测试的作用,不能用在生产环境中,因此要对一些参数进行调整优化。当然,对配置文件各参数的调整需要根据实际环境,不同时期不同数量级的数据进行性能优化。

49ec629ce41ce0871e4c40d1654b23b8.png

MySQL/MariaDB 配置文件位于 /etc/my.cnf。 每次更改此文件后你需要重启 MySQL 服务,以使更改生效。本文的参数配置基于MariaDB 10.2,硬件内存4G。文中一些选项值的设置只是推荐值,不要盲目的接受这些建议。每个 MySQL 设置都是不同的,在进行任何更改之前需要慎重考虑。

基本结构

[client]

port = 3306 #客户端默认连接端口

socket = /tmp/mysql.sock #用于本地连接的socket套接字

[mysqld] # 服务端基本配置

port = 3306 # mysql监听端口

socket = /tmp/mysql.sock #为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件

user = mariadb # mysql启动用户

basedir = /usr/local/mariadb # 安装目录

datadir = /data/mysql # 数据库数据文件存放目录

log_error = /data/mysql/mariadb.err #记录错误日志文件

pid-file = /data/mysql/mariadb.pid #pid所在的目录

skip-external-locking #不使用系统锁定,要使用myisamchk,必须关闭服务器

...

my.cnf配置文件以方括号如[client]区分模块作用域,其中[client]表示客户端配置,[mysqld]是服务端配置。以上几个选项是最基础的,每个选项有简单说明,其中有关路径的配置是基于本站文章:CentOS7下源码编译安装MariaDB 10.2和Linux下使用二进制格式安装MariaDB的安装路径来配置的,所以在配置前可以先按照两文先安装好MairaDB。

选项配置及说明

key_buffer_size = 32M 这个参数用来缓存MyISAM存储引擎的索引参数。MySQL5.5默认为InnoDB存储引擎,所以这个参数可以设置小点,64MB即可。

max_allowed_packet = 1M 允许最大接收数据包的大小,防止服务器发送过大的数据包。可以设置为16MB或者更大,但设置的太大也可能有危险。

table_open_cache = 128 #MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。默认值64,假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目);当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上。

sort_buffer_size = 768K 在表进行order by和group by排序操作时,由于排序的字段没有索引,会出现Using filesort,为了提高性能,可用此参数增加每个线程分配的缓冲区大小。默认为256KB,这个参数不要设置过大,一般在128~256KB即可。另外,一般出现Using filesort的时候,要通过增加索引来解决。

net_buffer_length = 8K 包消息缓冲区初始化为net_buffer_length字节,但需要时可以增长到max_allowed_packet字节。

read_buffer_size = 768K 该参数用于表的顺序扫描,表示每个线程分配的缓冲区大小。比如在进行全表扫描时,MySQL会按照数据的存储顺序依次读取数据块,每次读取的数据块首先会暂存在read_buffer_size中,当buffer空间被写满或者全部数据读取结束后,再将buffer中的数据返回给上层调用者,以提高效率。默认为128K,这个参数不要设置过大,一般在128~256之间。

read_rnd_buffer_size = 512K 该参数用于表的随机读取,表示每个线程分配的缓冲区大小。比如,按照一个非索引字段做order by排序操作时,就会利用这个缓冲区来暂存读取的数据。默认为256KB,这个参数不要设置过大,一般在128~512KB。

myisam_sort_buffer_size = 8M 当对MyISAM表执行repair table或创建索引时,用以缓存排序索引;设置太小时可能会遇到” myisam_sort_buffer_size is too small”

thread_cache_size = 16 线程池,线程缓存。用来缓存空闲的线程,以至于不被销毁,如果线程缓存在的空闲线程,需要重新建立新连接,则会优先调用线程池中的缓存,很快就能响应连接请求。每建立一个连接,都需要一个线程与之匹配。

query_cache_size = 16M 缓存select语句和结果集大小的参数。查询缓存会存储一个select查询的文本与被传送到客户端的相应结果。如果之后接收到一个相同的查询,服务器会从查询缓存中检索结果,而不是再次分析和执行这个同样的查询。如果你的环境中写操作很少,读操作频繁,那么打开query_cache_type=1,会对性能有明显提升。如果写操作频繁,则应该关闭它(query_cache_type=0)。

tmp_table_size = 32M 临时HEAP数据表的最大长度(默认设置是32M); 超过这个长度的临时数据表将被转换为MyISAM数据表并存入一个临时文件。

explicit_defaults_for_timestamp = true 是否显示默认时间戳

#skip-networking

max_connections = 500 该参数用来设置最大连接数,告诉你当前你的服务器允许多少并发连接。默认为100,一般设置为512-1000即可。请记住,太多的连接会导致内存的使用量过高并且会锁住你的 MySQL 服务器。一般小网站需要 100-200 的连接数,而较大可能需要 500-800 甚至更多。这里的值很大程度上取决于你 MySQL/MariaDB 的使用情况。

max_connect_errors = 100 如果有时网络抽风,或者应用配置错误,或者其他原因导致客户端短时间内不断的尝试连接,客户端可能会被列入黑名单,然后将无法连接,直到再次刷新主机缓存。这个选项默认值太小了,可以考虑设的足够大(如果你的服务器配置够强大的话)。

open_files_limit = 65535 mysql打开最大文件数

log-bin=mysql-bin 这些路径相对于datadir

binlog_format=mixed 日志格式

server-id = 1 给服务器分配一个独一无二的ID编号; n的取值范围是1~2的32次方启用二进制日志功能。在复制数据同步的时候会用到,Helloweba后面会有文章介绍。

expire_logs_days = 10 启用二进制日志后,保留日志的天数。服务器会自动清理指定天数前的日志文件,如果不设置则会导致服务器空间耗尽。一般设置为7~14天。

default_storage_engine = InnoDB 新数据表的默认存储引擎(默认设置是MyISAM)。这项设置还可以通过–default-table-type选项来设置。

innodb_file_per_table = 1 InnoDB 提供了更灵活的方式,它把每个数据库的信息保存在一个 .ibd 数据文件中。每个 .idb 文件代表它自己的表空间。通过这样的方式可以更快地完成类似 “TRUNCATE” 的数据库操作,当删除或截断一个数据库表时,你也可以回收未使用的空间。这样配置的另一个好处是你可以将某些数据库表放在一个单独的存储设备。这可以大大提升你磁盘的 I/O 负载。

innodb_data_home_dir = /data/mysql InnoDB主目录,所有与InnoDB数据表有关的目录或文件路径都相对于这个路径。在默认的情况下,这个主目录就是MySQL的数据目录。

innodb_data_file_path = ibdata1:10M:autoextend 用来容纳InnoDB为数据表的表空间: 可能涉及一个以上的文件; 每一个表空间文件的最大长度都必须以字节(B)、兆字节(MB)或千兆字节(GB)为单位给出; 表空间文件的名字必须以分号隔开; 最后一个表空间文件还可以带一个autoextend属性和一个最大长度(max:n)。

innodb_log_group_home_dir = /data/mysql 用来存放InnoDB日志文件的目录路径(如ib_logfile0、ib_logfile1等)。在默认的情况下,InnoDB驱动程序将使用 MySQL数据目录作为自己保存日志文件的位置。

innodb_buffer_pool_size = 128M 这个参数是InnoDB存储引擎的核心参数,默认为128KB,这个参数要设置为物理内存的60%~70%。

innodb_log_file_size = 32M 事务日志文件写操作缓存区的最大长度(默认设置是1MB)。

innodb_log_buffer_size = 8M 事务日志所使用的缓存区。InnoDB在写事务日志的时候,为了提高性能,先将信息写入Innodb Log Buffer中,当满足innodb_flush_log_trx_commit参数所设置的相应条件(或者日志缓冲区写满)时,再将日志写到文件(或者同步到磁盘)中。可以通过innodb_log_buffer_size参数设置其可以使用的最大内存空间。默认是8MB,一般为16~64MB即可。

innodb_flush_log_at_trx_commit = 1 这个选项决定着什么时候把日志信息写入日志文件以及什么时候把这些文件物理地写(术语称为”同步”)到硬盘上。设置值0的意思是每隔一秒写一次日 志并进行 同步,这可以减少硬盘写操作次数,但可能造成数据丢失; 设置值1(设置设置)的意思是在每执行完一条COMMIT命令就写一次日志并进行同步,这可以防止数据丢失,但硬盘写操作可能会很频繁; 设置值2是一般折衷的办法,即每执行完一条COMMIT命令写一次日志,每隔一秒进行一次同步。

innodb_lock_wait_timeout = 50 如果某个事务在等待n秒(s)后还没有获得所需要的资源,就使用ROLLBACK命令放弃这个事务。这项设置对于发现和处理未能被InnoDB数据表驱动 程序识别出来的死锁条件有着重要的意义。这个选项的默认设置是50s。

示例:内存4G的my.cnf配置

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

port = 3306

socket = /tmp/mysql.sock

user = mariadb

basedir = /usr/local/mariadb

datadir = /data/mysql

log_error = /data/mysql/mariadb.err

pid-file = /data/mysql/mariadb.pid

skip-external-locking

key_buffer_size = 64M

max_allowed_packet = 1M

table_open_cache = 256

sort_buffer_size = 1M

net_buffer_length = 8K

read_buffer_size = 1M

read_rnd_buffer_size = 512K

myisam_sort_buffer_size = 16M

thread_cache_size = 32

query_cache_size = 32M

tmp_table_size = 64M

explicit_defaults_for_timestamp = true

#skip-networking

max_connections = 500

max_connect_errors = 100

open_files_limit = 65535

log-bin=mysql-bin

binlog_format=mixed

server-id = 1

expire_logs_days = 10

default_storage_engine = InnoDB

innodb_file_per_table = 1

innodb_data_home_dir = /data/mysql

innodb_data_file_path = ibdata1:10M:autoextend

innodb_log_group_home_dir = /data/mysql

innodb_buffer_pool_size = 256M

innodb_log_file_size = 64M

innodb_log_buffer_size = 8M

innodb_flush_log_at_trx_commit = 1

innodb_lock_wait_timeout = 50

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 64M

sort_buffer_size = 1M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android学习----发行版本

Android 1.1(Bender“发条机器人”) Android 1.5( Cupcake“纸杯蛋糕”) Android 1.6(Donut 甜甜圈) Android 2.0(clair:闪电泡芙、法式奶油夹心甜点、松饼) Android 2.2(Froyo 冻酸…

python各版本区别_关于python中不同版本的print区别

最近有时候会看看python的一些东西。也看了一些入门教程,但是发现一个问题是,在用print的时候老是报错: 报错如下:提示print a这句有语法问题。但是看的教程里面都有这样写的,没有问题啊。 忽然想到以前同学说过python…

stc8g1k08程序范例_通过WiFi对STC单片机程序下载和调试

简介本文设计了基于WiFi-UART的STC单片机下载调试模块,这样便于对嵌入式系统进行远程调试开发,特别是在一些具有移动功能的平台,强电平台以及需要实时监视和修改程序的应用场合。本文相关的下载资源:WiFi模块下载STC程序设计文件[…

创建测试数据

BuildDatabase 在一些文档规范严格的公司,实际上是同时有一份开发文档和测试文档的。但开发人员在整个开发过程中,并没有参考测试文档,所以最后就很容易造成测试阶段开发人员不断地返工,开发人员和测试人员之间矛盾尖锐。但最终80…

mysql最大连接数合理值_MySQL服务器最大连接数的合理设置

MySQL服务器的连接数并不是要达到最大的100%为好,还是要具体问题具体分析,下面就对MySQL服务器最大连接数的合理设置进行了详尽的分析,供您参考。我们经常会遇见“MySQL: ERROR 1040: Too many connections”的情况,一种是访问量确…

echo off备份mysql_windows下备份Linux服务器上的MySQL

【更新】因为windows存在 10点前后生成的时间格式不同,导致无法正确生成sql文件。导致上次的备份文件无法生成研究后对旧内容进行修改echo offforfiles /p "D:\ERP_MySQLbak" /m mysql_backup_*.sql -d -2 /c "cmd /c del /f path"set/a a%time…

python 3d重建_3D点云重建原理及Pytorch实现

3D点云重建原理及Pytorch实现 Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction 一种Pytorch实现方法:学习高效的点云生成方法用于稠密三维物体重建 一.论文概要 传统的三维对象生成建模方法是利用三维卷积运算的…

Java进阶04 RTTI

链接地址:http://www.cnblogs.com/vamei/archive/2013/04/14/3013985.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 运行时类型识别(RTTI, Run-Time Type Identification)是J…

springdatajpa命名规则_Spring Boot 之Spring data JPA简介

PA的全称是Java Persistence API (JPA),他是一个存储API的标准,而Spring data JPA就是对JPA的一种实现,可以让我们方便的对数据进行存取。按照约定好的方法命名规则写dao层接口,从而在不实现接口的情况下,实现对数据库…

PHPCMS 模板的设置

编制好模板后&#xff0c; 一、设置config.php<?php return array (name > 现代的蓝红色模板,author > dazhaihui,dirname > simpleblue,homepage > http://www.phpcms.cn/,version > 1.0,disable > 0,file_explan >array (templates|simpleblue|cont…

奖学金设计mysql_基于JAVA的奖学金评定系统设计与实现(MySQL)(含录像)

基于JAVA的奖学金评定系统设计与实现(MySQL)(含录像)(任务书,开题报告,外文翻译,毕业论文10000字,程序代码,MySQL数据库,答辩PPT,答辩视频录像)摘 要本文论述了奖学金评定系统从分析到实现的整个过程&#xff0c;说明了系统实现的基本思路&#xff0c;介绍系统不同的功能模块以…

python中的列表和元组_python中列表和元组的区别

如果有了解过python中的列表和元组&#xff0c;你可能会知道相对于列表&#xff0c;元组是不可变的&#xff0c;也就是说元组中的数据不能随意更改。除了列表是用中括号表示而元组是用小括号表示之外&#xff0c;这两种数据类型好像并没有什么不同&#xff0c;都是用来存放一系…

sublime2使用和配置

官方下载地址:http://www.sublimetext.com/2,可下载zip免安装版 显示左侧目录树 无需安装插件,菜单>“文件”》“打开目录”&#xff0c;会自动显示 代码注释 无需安装插件&#xff1a;Ctrl/&#xff1a;注释整行&#xff0c;可来回切换&#xff0c;Submlie Text可自动判断…

mysql ab复制延时_Mysql的AB复制

Mysql的AB复制环境&#xff1a;rhel 6.5master:192.168.2.1slave1:192.168.2.2slave2&#xff1a;192.168.2.101.mysql的单向复制注: mysql数据库的版本,两个数据库版本要相同,或者slave比master版本高!yum install mysql-server -y请注意当你进行复制时,所有对复制中的表的更…

python ckeditor上传图片400错误_又一款python开发神器

优秀的python开发工具有很多&#xff0c;比如pycharm&#xff0c;spder&#xff0c;ipython&#xff0c;jupyter以及很多编辑器的插件等。但是如果利用python来做数据分析的话&#xff0c;要是有一款类似Rstudio的工具就好了&#xff0c;Rstudio是非常人性化的工具。之前有一个…

mysql.data.dll win10_【MySQL】Windows10下安装

2.配置环境变量变量名&#xff1a;MYSQL_HOME变量值&#xff1a;download_path\mysql-8.0.19-winx64path添加&#xff1a;%MYSQL_HOME%\bin;3.生成data文件管理员身份&#xff0c;进入download_path\mysql-8.0.19-winx64\bin命令&#xff1a;mysqld --initialize-insecure --us…

Chrome 调试动态加载的js

今天有个同事问到我用chrome调试动态加载js的问题&#xff0c;这个问题之前遇到过&#xff0c;只是时间有点长了&#xff0c;有些忘记。在这里做一下记录&#xff1a; 在要调试的源码的后面加上 // sourceURL debug.js 注释。 这样子&#xff0c;当浏览器检测到这个标记的时候…

mysql数据库邮箱什么类型_MySQL的数据类型介绍

MySQL的数据类型介绍 发布时间:2020-06-01 20:57:09 来源:亿速云 阅读:154 作者:鸽子 由于Mysql独有的特性和实现细节对性能的影响是很明显的,因为做好Mysql数据库的设计很关键。对于数据库设计,我们不得不提表字段的类型选择,由于Mysql支持的数据类型非常多,因此如何选…

rabbitmq 延迟队列_Delayed Message 插件实现 RabbitMQ 延迟队列

延迟队列是为了存放那些延迟执行的消息&#xff0c;待消息过期之后消费端从队列里拿出来执行。DLX TTL 方式存在的时序问题对于延迟队列不管是 AMQP 协议或者 RabbitMQ 本身是不支持的&#xff0c;之前有介绍过如何使用 RabbitMQ 死信队列(DLX) TTL 的方式来模拟实现延迟队列…

JS - 按钮倒计时

效果&#xff1a; html代码&#xff1a; <input type"button" id"btn" value"点击获取效验码" />js代码&#xff1a; //倒计时var wait60;function time(o) {if (wait 0) {o.removeAttribute("disabled"); o.value&qu…