随着业务增长,服务器资源有所减少,我对其进行了针对性优化。以下配置是从 my.cnf文件中截取的部分优化项,成功提升了 Zabbix 数据库的响应速度与稳定性,解决了 Grafana 大屏掉线的问题。
1、数据目录与连接
2、最大连接数
3、InnoDB 引擎优化
innodb_flush_log_at_trx_commit:减少磁盘 I/O,提升性能,需注意可能的数据丢失风险。
innodb_log_file_size:配置为 4GB,减少日志文件写入频率,适合高写操作。
innodb_flush_method:减少缓存冲突,提高磁盘 I/O 性能。
innodb_file_per_table:启用每表独立存储,减少磁盘碎片,提升查询性能。
4、连接与超时
wait_timeout和interactive_timeout:设置为 30 分钟(1800 秒),减少空闲连接,提高资源利用率。
5、慢查询日志
6、错误日志
7、表定义缓存
8、性能模式
通过上述优化,Zabbix 数据库在高负载环境下表现更加稳定,成功解决了 Grafana 大屏掉线问题。希望这些配置能帮助你在资源有限的情况下,提升 MySQL 的性能与稳定性。
1、数据目录与连接
[mysqld]
datadir = /data/mysql
socket = /data/mysql/mysql.sock
确保路径位于高性能磁盘(如 SSD)上,以提高数据存取速度。2、最大连接数
max_connections = 500
根据实际负载,合理设置连接数,确保 MySQL 在高并发下稳定运行。3、InnoDB 引擎优化
innodb_buffer_pool_size = 12G
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 4G
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_buffer_pool_size:设置为内存的 60%-80%,本文配置为 12GB,减少磁盘 I/O,提升查询性能。innodb_flush_log_at_trx_commit:减少磁盘 I/O,提升性能,需注意可能的数据丢失风险。
innodb_log_file_size:配置为 4GB,减少日志文件写入频率,适合高写操作。
innodb_flush_method:减少缓存冲突,提高磁盘 I/O 性能。
innodb_file_per_table:启用每表独立存储,减少磁盘碎片,提升查询性能。
4、连接与超时
skip_name_resolve = 1
wait_timeout = 1800
interactive_timeout = 1800
skip_name_resolve:禁用 DNS 解析,减少连接延迟。wait_timeout和interactive_timeout:设置为 30 分钟(1800 秒),减少空闲连接,提高资源利用率。
5、慢查询日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
启用慢查询日志,记录超过 2 秒的查询,帮助识别和优化性能瓶颈。6、错误日志
log_error = /var/log/mysql/mysql-error.log
配置错误日志,记录和诊断运行中的错误,确保及时发现并修复问题。7、表定义缓存
table_definition_cache = 500
增大缓存大小,提高表打开速度,减少查询时的性能瓶颈。8、性能模式
performance_schema = ON
启用性能模式,提供详细的性能监控数据,帮助诊断和优化性能问题。通过上述优化,Zabbix 数据库在高负载环境下表现更加稳定,成功解决了 Grafana 大屏掉线问题。希望这些配置能帮助你在资源有限的情况下,提升 MySQL 的性能与稳定性。