Linux 下 mysql 安装时候并不能像 windows 安装包那样在安装时候选择大内存方案或者 Mysql 服务器方案,所以只能在安装完成之后进行优化调整。
准备工作
- 停止 MySQL 服务。
/etc/init.d/mysql stop
lnmp 搭建的话可以直接执行lnmp mysql stop
- 寻找 Mysql 的配置文件。lnmp 在 /etc/my.cnf。其他方式安装的话可以使用
find / -name my.cnf
来查找 mysql 的配置文件。
优化配置
优化 MySQL 配置的目标是在不增加硬件资源的情况下,尽可能地提高 MySQL 的性能。以下是在一台 16GB 内存的服务器上优化 MySQL 的一些建议:
1. 调整缓冲池
MySQL 通过缓冲池来缓存查询和表数据,以减少 I/O 操作。根据服务器配置和应用程序负载情况,可以调整下列缓冲池参数:
innodb_buffer_pool_size
:InnoDB 存储引擎使用此参数来存储表和索引数据。该参数应设置为可用的内存的大约 70%。在 16GB 内存的服务器上,可以设置为 12GB 左右。key_buffer_size
:如果使用 MyISAM 存储引擎,将此参数设置为可用内存的 10% 至 25%。query_cache_size
:此参数用于缓存查询结果,因此查询结果可以快速返回。但是,查询缓存可能会对大型数据库有负面影响。在 16G 内存的服务器上,适当的查询缓存大小为 128MB 至 256MB。
2. 调整连接数
在 MySQL 中,每个客户端连接都需要一些内存。因此,连接数过多可能会导致内存不足并降低性能。您可以根据应用程序的特定需求来调整最大连接数,以确保服务器性能得到最佳优化。
max_connections
:该参数指定可以同时处理的最大客户端连接数。通常情况下,它应设置为可用内存除以每个连接大约需要的内存量。例如,如果您希望每个连接使用 500KB 的内存,则可以将max_connections
设置为 32。
3. 调整日志设置
MySQL 的日志文件用于记录查询、事务和其他活动。适当配置日志可以减少对磁盘的写入操作并提高性能。
innodb_log_file_size
:此参数指定 InnoDB 存储引擎事务日志文件的大小。建议将其设置为 25% 至 50% 的缓冲区池大小。innodb_flush_log_at_trx_commit
:此参数指定 InnoDB 在提交事务时将日志缓冲区刷新到磁盘的频率。如果您对数据一致性要求不高,可以将其设置为 0 或 2,可以提高性能。
4. 其他调整
tmp_table_size
和max_heap_table_size
:这些参数指定在执行排序等操作时使用的临时表的最大大小。如果获取空间失败,MySQL 将从磁盘创建这些表,从而导致性能下降。建议设置为稳定和最大的可用内存的 5% 至 10%。table_open_cache
:此参数指定表缓存的大小。默认情况下,MySQL 允许打开 64 个表。如果您有大量表,则可以增加此值以提高性能。
5. 启动 mysql
最后执行 /etc/init.d/mysql start
lnmp 搭建的话可以直接执行 lnmp mysql start
最后,应该测试新配置后的 MySQL 的性能和稳定性。通常情况下,应该监视关键指标,如请求响应时间、缓冲池使用率、查询缓存命中率等,并针对性地调整参数以达到最佳性能。