MySql - 配置调优
一、调优前
| ip | 说明 | 内存 |
|---|---|---|
| 172.18.18.23 | mysql-master | 内存32G,已使用31G |
| 172.18.18.24 | mysql-slave | 内存32G,已使用31G |
查看数据库连接数
show variables like ‘%conn%’;
Aborted_connects:834085
Connections:995572
Threads_connected:28
连接数大
建议:检查代码代码是否存在建立mysql接接后,忘记close的情况
参考:https://www.cnblogs.com/lazytomato/p/7428100.html
二、调优配置
调整最大线程数
su root
vi /etc/security/limits.d/90-nproc.conf
#将如下内容:
* soft nproc 1024
#修改为:
* soft nproc 2048
调整最大虚拟内存
su root
vi /etc/sysctl.conf
#添加下面配置:
vm.max_map_count=655360
#并执行命令:
sysctl -p
调整创建文件描述限制
# su root
# vim /etc/security/limits.conf
## 添加以下内容,注意用户替按成mysql当前用户
## End of file
root soft nofile 65535
root hard nofile 65535
* soft nofile 165536
* hard nofile 165536
* soft nproc 2048
* hard nproc 4096
#并执行命令:
sysctl -p
mysql-master调优配置
查看慢配置查询的
show variables like ‘%query%’;
my.cnf
#不支持符号链接
symbolic-links=0
#不区分大小写
lower_case_table_names=1
#每个连接独立的大小
max_allowed_packet=10M
#操作系统在监听队列中所能保持的连接数
back_log=500
#索引的缓冲区大小
key_buffer_size=512M
#查询排序时所能使用的缓冲区大小
sort_buffer_size=15M
#读查询操作所能使用的缓冲区大小
read_buffer_size=15M
#联合查询操作所能使用的缓冲区大小
join_buffer_size=15M
#MyISAM表发生变化时重新排序所需的缓冲
myisam_sort_buffer_size=128M
#指定MySQL查询缓冲区的大小
query_cache_size=128M
#可以复用的保存在中的线程的数量
thread_cache_size=64
#内部(内存中)临时表的最大大小
tmp_table_size=512M
#HEAP数据表(内存表)的最大长度(默认设置是16M)
max_heap_table_size=256M
#同时会话数的上限
max_connections=5000
#每个客户端连接最大的错误允许数量
max_connect_errors=5000
#请求的最大连接时间
wait_timeout=28800
interactive_timeout=38800
#该参数取值为服务器逻辑CPU数量×2
#thread_concurrency=16
#日志输出形式
log-output=FILE
#慢查询时间
long_query_time=5
#记录慢日志查询
slow_query_log=ON
#慢查询日志路径
slow_query_log_file=/server/database/mysql/log/mysqld-slow.log
#打开二进制日志功能
binlog_format = row
#超过30天的binlog删除
expire_logs_days = 30
#log-bin=/server/database/mysql/log/mysql-bin
log_bin_trust_function_creators=1
skip-name-resolve
# 禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求
back_log = 600
# MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。
log_error = /server/database/mysql/log/mysql-error.log
#错误日志路径
innodb_lock_wait_timeout = 500
#default_character_set=utf8
character-set-server=utf8
collation-server=utf8_general_c
datadir=
socket=/xxx/mysql.sock
pid-file=/xxx/mysqld.pid

本文详细介绍了MySQL数据库的性能调优过程,包括调整系统资源限制、优化内存配置、改进连接管理和查询性能,以及慢查询日志和二进制日志的配置。针对高负载场景,提供了具体的参数设置和优化策略。
2170

被折叠的 条评论
为什么被折叠?



