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

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

d9e4fba7095333ff420912caf4ca40c4.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/335081.shtml

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

相关文章

python字符串合并去重_015day--python集合和字符串

一、集合关系测试交集: 两个都有 .intersettion() 或用 & 符号差集: 列表a有,列表b没有 .difference() 或用 - 符号并集: 两列表合并,去重 .union() 或用 | 符号合并: .update() 会更改数据…

IntelliJ IDEA for Mac如何存取自定义快捷键配置文件

IntelliJ IDEA for Mac自定义的快捷键配置文件在以下的目录中: /Users/liaowenxiong/library/application support/JetBrains/IntelliJIdea2020.3/keymaps

react 事件处理_在React中处理事件

react 事件处理在使用React渲染RESTful服务后,我们创建了简单的UI,用于渲染从RESTful服务获取的员工列表。 作为本文的一部分,我们将扩展同一应用程序以支持添加和删除员工操作。 我们将通过添加/删除员工操作来更新react-app后端api&#x…

linux mysql 分区_Linux :linux磁盘分区(普通分区2T以内),安装免安装版mysql(tar.gz)...

1关闭防火墙:(依次运行 停止-->禁用)Centos7使用firewalld:启动:systemctl start firewalld查看状态:systemctl status firewalld停止:systemctl disable firewalld禁用:systemctl stop firewalld2官网下…

python 3d大数据可视化软件_十大顶级大数据可视化工具推荐

要使数据分析真正有价值和有洞察力,就需要高质量的可视化工具。市场上有很多产品,特点和价格各不相同,本文列出了一些广泛认可的工具。其实企业如何选择一个合适的可视化工具,并不是一件容易的事情,需要仔细的考虑。据…

IntelliJ IDEA 配置文件位置

1 IDEA 2020.1 以上 1.1 Win 语法&#xff1a; %APPDATA%\JetBrains\<product><version>Win上的APPDATA默认位置如下&#xff1a; C:\Users\用户名\AppData\Roaming例子&#xff1a; C:\Users\用户名\AppData\Roaming\JetBrains\IntelliJIdea2020.11.2 MacOS …

mysql 中间表的好处_Mysql中使用中间表提高统计查询速度

对于数据量较大的表&#xff0c;在其上进行统计查询通常会效率很低&#xff0c;并且还要考虑统计查询是否会对在线的应用产生负面影响。通常在这种情况下&#xff0c;使用中间表可以提高统计查询的效率&#xff0c;下面通过对session 表的统计来介绍中间表的使用&#xff1a;(1…

junit 5测试异常处理_使用JUnit 5测试异常

junit 5测试异常处理JUnit 5带来了令人敬畏的改进&#xff0c;并且与以前的版本有很大不同。 JUnit 5在运行时需要Java 8&#xff0c;因此Lambda表达式可以在测试中使用&#xff0c;尤其是在断言中。 这些断言之一非常适合测试异常。 设置项目 为了演示JUnit 5的用法&#xff…

多元回归求解 机器学习_金融领域里的机器学习算法介绍:人工神经网络

人工智能的发展在很大程度上是由神经网络、深度学习和强化学习推动的。这些复杂的算法可以解决高度复杂的机器学习任务&#xff0c;如图像分类、人脸识别、语音识别和自然语言处理等。这些复杂任务一般是非线性的&#xff0c;同时包含着大量的特征输入。我们下面我们将分几天的…

百度网盘不限速被限速_基本API限速

百度网盘不限速被限速您可能正在开发某种形式的&#xff08;Web / RESTful&#xff09;API&#xff0c;并且如果它是面向公众的&#xff08;甚至是内部的&#xff09;&#xff0c;则通常需要以某种方式对其进行速率限制。 即&#xff0c;限制一段时间内执行的请求数&#xff0c…

mysql怎么查看刷脏页慢_一条SQL查询语句极为缓慢,如何去优化呢

一条 SQL 查询语句执行的很慢&#xff0c;那是每次查询都很慢呢&#xff1f;还是大多数情况下是正常的&#xff0c;偶尔出现很慢呢&#xff1f;可以分以下两种情况来讨论。大多数情况是正常的&#xff0c;只是偶尔会出现很慢的情况。在数据量不变的情况下&#xff0c;这条SQL语…

MacBook Air如何清理缓存

方法一&#xff1a;使用热键 AltCmdRP电源键这是清理缓存热键。 用法&#xff1a;先按住前4个键&#xff0c;然后按一次电源键&#xff0c;前四个键不松开&#xff0c;等到听到电脑第四次开机音效后可以松开&#xff0c;开机音效共有五次&#xff0c;然后电脑自动开机 方法二&…

apache ignite_使用Spring Data的Apache Ignite

apache igniteSpring Data提供了一种统一而简便的方法来访问不同类型的持久性存储&#xff0c;关系数据库系统和NoSQL数据存储。 它位于JPA之上&#xff0c;添加了另一层抽象并定义了基于标准的设计以在Spring上下文中支持持久层。 Apache Ignite IgniteRepository实现了Spri…

centos 7 mysql随机密码_在centos中安装了mysql5.7之后解决不知道随机的密码的问题...

在安装完成mysql5.7 之后&#xff0c;发现密码不知道。不要紧&#xff0c;直接重置密码。1.修改配置文件my.cfg[rootlocalhost ~]# vi /etc/my.cnf找到mysqld在之后添加skip-grant-tables保存退出2. 重启mysql服务service mysqld restart3.直接登陆mysql而不需要密码mysql -u…

python单用户登录_Django实现单用户登录的方法示例

最近由于要毕业了写论文做毕设&#xff0c;然后还在实习发现已经好久都没有写博客了。今天由于工作需求&#xff0c;需要用Django实现单用户登录。大概意思就是跟QQ一样的效果&#xff0c;每个账号只能一个地方登录使用&#xff0c;限制账号的登录次数。由于用的是Django自带的…

IntelliJ IDEA for Windows 默认模式下的快捷键

文章目录General 通用Debugging 调试Search/ Replace 查询/替换Editing 编辑Refactoring 重构Navigation 导航Compile and Run 编译和运行Usage Search 使用查询VCS/ Local History 版本控制/本地历史记录Live Templates 动态代码模板Other 官方文档上没有体现点击查看官方文档…

java事件处理过程分布写_Java 9中的进程处理

java事件处理过程分布写一直以来&#xff0c;用Java管理操作系统进程都是一项艰巨的任务。 这样做的原因是可用的工具和API较差。 老实说&#xff0c;这并非没有道理&#xff1a;Java并非旨在达到目的。 如果要管理OS进程&#xff0c;则可以使用所需的Shell&#xff0c;Perl脚本…

mac mysql5.7.9 dmg_Mac 安装 mysql5.7

mac 安装msql 5.7最近使用Mac系统&#xff0c;准备搭建一套本地web服务器环境。因为Mac系统没有自带mysql&#xff0c;所以要手动去安装mysql&#xff0c;本次安装mysql最新版5.7.28。安装步骤参考以下博客https://www.jianshu.com/p/71f81a0c62b2安装成功后&#xff0c;因为密…

安卓系统dicom阅读器_用户分享:电子书阅读器Note Pro,一座贴心的移动图书馆...

本文转载自“什么值得买”官网用户“小良读书”&#xff0c;经作者授权转载。Note Pro&#xff0c;一座贴心的移动图书馆移动图书馆貌美的小书郎10.3寸高清大屏更适合专业书籍的阅读如果说多年前入手了一台kindle paperwite3电纸书阅读器&#xff0c;它让我畅游了书籍的江河&am…

vim 编辑器命令整理

文章目录一、基本使用流程二、普通命令模式&#xff08;一&#xff09;切换到插入模式&#xff08;编辑/写入/输入&#xff09;&#xff08;二&#xff09;切换到可视模式&#xff08;选择文本模式&#xff09;&#xff08;三&#xff09;切换至底行命令模式&#xff08;四&…