安装完 MySQL 后必须调整的 10 项配置

当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议。许多人在事后都非常惊讶,因为我们建

当我们被人雇来监测mysql性能时,人们希望我们能够检视一下mysql配置然后给出一些提高建议。许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项。这篇文章的目的在于给你一份非常重要的配置项清单。

我们曾在几年前在博客里给出了这样的建议,但是MySQL的世界变化实在太快了!

写在开始前…

即使是经验老道的人也会犯错,会引起很多麻烦。所以在盲目的运用这些推荐之前,请记住下面的内容:

一次只改变一个设置!这是测试改变是否有益的唯一方法。

大多数配置能在运行时使用SET GLOBAL改变。这是非常便捷的方法它能使你在出问题后快速撤销变更。但是,要永久生效你需要在配置文件里做出改动。

一个变更即使重启了MySQL也没起作用?请确定你使用了正确的配置文件。请确定你把配置放在了正确的区域内(所有这篇文章提到的配置都属于 [mysqld])

服务器在改动一个配置后启不来了:请确定你使用了正确的单位。例如,innodb_buffer_pool_size的单位是MB而max_connection是没有单位的。

不要在一个配置文件里出现重复的配置项。如果你想追踪改动,请使用版本控制。

不要用天真的计算方法,例如”现在我的服务器的内存是之前的2倍,所以我得把所有数值都改成之前的2倍“。

基本配置

你需要经常察看以下3个配置项。不然,,可能很快就会出问题。

innodb_buffer_pool_size:这是你安装完InnoDB后第一个应该设置的选项。缓冲池是数据和索引缓存的地方:这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。

innodb_log_file_size:这是redo日志的大小。redo日志被用于确保写操作快速而可靠并且在崩溃时恢复。一直到MySQL 5.1,它都难于调整,因为一方面你想让它更大来提高性能,另一方面你想让它更小来使得崩溃后更快恢复。幸运的是从MySQL 5.5之后,崩溃恢复的性能的到了很大提升,这样你就可以同时拥有较高的写入性能和崩溃恢复性能了。一直到MySQL 5.5,redo日志的总尺寸被限定在4GB(默认可以有2个log文件)。这在MySQL 5.6里被提高。

一开始就把innodb_log_file_size设置成512M(这样有1GB的redo日志)会使你有充裕的写操作空间。如果你知道你的应用程序需要频繁的写入数据并且你使用的时MySQL 5.6,你可以一开始就把它这是成4G。

max_connections:如果你经常看到‘Too many connections’错误,是因为max_connections的值太低了。这非常常见因为应用程序没有正确的关闭数据库连接,你需要比默认的151连接数更大的值。max_connection值被设高了(例如1000或更高)之后一个主要缺陷是当服务器运行1000个或更高的活动事务时会变的没有响应。在应用程序里使用连接池或者在MySQL里使用进程池有助于解决这一问题。

InnoDB配置

从MySQL 5.5版本开始,InnoDB就是默认的存储引擎并且它比任何其他存储引擎的使用都要多得多。那也是为什么它需要小心配置的原因。

innodb_file_per_table:这项设置告知InnoDB是否需要将所有表的数据和索引存放在共享表空间里(innodb_file_per_table = OFF) 或者为每张表的数据单独放在一个.ibd文件(innodb_file_per_table = ON)。每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间。这对于一些高级特性也是有必要的,比如数据压缩。但是它不会带来任何性能收益。你不想让每张表一个文件的主要场景是:有非常多的表(比如10k+)。

MySQL 5.6中,这个属性默认值是ON,因此大部分情况下你什么都不需要做。对于之前的版本你必需在加载数据之前将这个属性设置为ON,因为它只对新创建的表有影响。

innodb_flush_log_at_trx_commit:默认值为1,表示InnoDB完全支持ACID特性。当你的主要关注点是数据安全的时候这个值是最合适的,比如在一个主节点上。但是对于磁盘(读写)速度较慢的系统,它会带来很巨大的开销,因为每次将改变flush到redo日志都需要额外的fsyncs。将它的值设置为2会导致不太可靠(reliable)因为提交的事务仅仅每秒才flush一次到redo日志,但对于一些场景是可以接受的,比如对于主节点的备份节点这个值是可以接受的。如果值为0速度就更快了,但在系统崩溃时可能丢失一些数据:只适用于备份节点。

innodb_flush_method: 这项配置决定了数据和日志写入硬盘的方式。一般来说,如果你有硬件RAID控制器,并且其独立缓存采用write-back机制,并有着电池断电保护,那么应该设置配置为O_DIRECT;否则,大多数情况下应将其设为fdatasync(默认值)。sysbench是一个可以帮助你决定这个选项的好工具。

innodb_log_buffer_size: 这项配置决定了为尚未执行的事务分配的缓存。其默认值(1MB)一般来说已经够用了,但是如果你的事务中包含有二进制大对象或者大文本字段的话,这点缓存很快就会被填满并触发额外的I/O操作。看看Innodb_log_waits状态变量,如果它不是0,增加innodb_log_buffer_size。

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1874078.html

(0)
上一篇 2025年2月22日 09:27:03
下一篇 2025年2月22日 09:27:19

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • MySQL 记录查询日志的参数配置

    MySQL 提供了一整套日志记录的配置项,只不过很多默认是关闭的,曾疑惑MySQL为什么没有像SQL Server 那样的查询监听。后经过查找 mysql 提供了一整套日志记录的配置项,只不过很多默认是关闭的,曾疑惑mysql为什么没有像s…

    数据库 2025年2月22日
    300
  • 详解MySQL配置的优化

    最近一直在研究mysql 的优化设置,网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些 最近一直在研究mysql 的优化设置,网上有很多的文章教怎么配置mysql服务器,但考虑到服务器硬件配置的…

    数据库 2025年2月22日
    200
  • MySQL配置my.cnf调优项详解

    以下是一份机器内存:64GB RAM,最大连接数为2000,MySQL使用InnoDB为主的配置说明,某些项的最优值请根据实际生产需要来调.

    数据库 2025年2月22日
    200
  • MySQL 5.5.32 配置文件优化详解

    Mysql-5.5.32是Mysql5.5系列中最后一个版本,也是最后一个有配置文件的版本,为什么这么说呢,用过5.6的博友都知道,在mysql5.6中 大纲 一、配置文件说明 my-small.cnf my-medium.cnf my-l…

    数据库 2025年2月22日
    200
  • 如何正确配置并连接到MySQL数据库服务器?

    MySQL数据库服务器名是指用于访问MySQL数据库的服务器地址。在连接MySQL数据库时,需要提供正确的服务器名或IP地址。MySQL数据库服务器名可以是域名、IP地址或localhost,具体取决于实际部署情况。 MySQL数据库是广泛…

    服务器 2025年2月15日
    400
  • 如何配置MySQL数据库以连接到服务器?

    要在服务器上配置MySQL连接,首先需要安装MySQL数据库。通过编辑MySQL配置文件(通常位于/etc/mysql/my.cnf或/etc/my.cnf),设置bindaddress参数为0.0.0.0以允许远程连接。确保防火墙允许通过…

    服务器 2025年2月15日
    400
  • 如何正确配置MySQL数据库服务器以实现高效的云数据库连接?

    配置云数据库MySQL涉及设置服务器参数、网络连接和安全策略。需确保数据库服务器优化,以支持高并发访问和数据完整性。配置MySQL数据库连接需要正确设置用户名、密码、主机地址及端口号,并确保客户端与服务器间的网络连接稳定可靠。 MySQL数…

    服务器 2025年2月15日
    300
  • 如何正确配置MySQL以连接到服务器?

    摘要:本段内容主要介绍了如何配置MySQL连接服务器,包括了安装MySQL服务器、创建数据库和用户、授权用户访问数据库以及设置远程访问权限等步骤。还提供了一些常见问题的解决方法,如端口号问题、防火墙设置等。 配置 MySQL 连接 配置 M…

    服务器 2025年2月15日
    300

发表回复

登录后才能评论