MySQL优化步骤和my.cnf优化配置

本文介绍如何通过调整MySQL配置参数来优化数据库性能,包括缓存优化、连接管理等关键配置,并提供了一个具体的my.cnf配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、查看机器配置,指三大件:cpu、内存、硬盘
2、查看mysql配置参数
3、查看mysql运行状态,可以用mysqlreport工具来查看
4、查看mysql的慢查询
依次解决了以上问题之后,再来查找程序方面的问题。

my.cnf缓存优化
在 my.cnf 中添加/修改以下选项:

#取消文件系统的外部锁
skip-locking

#不进行域名反解析,注意由此带来的权限/授权问题
skip-name-resolve

#索引缓存,根据内存大小而定,如果是独立的db服务器,可以设置高达80%的内存总量
key_buffer = 512M

#连接排队列表总数
back_log = 200
max_allowed_packet = 2M

#打开表缓存总数,可以避免频繁的打开数据表产生的开销
table_cache = 512

#每个线程排序所需的缓冲
sort_buffer_size = 4M

#每个线程读取索引所需的缓冲
read_buffer_size = 4M

#MyISAM表发生变化时重新排序所需的缓冲
myisam_sort_buffer_size = 64M

#缓存可重用的线程数
thread_cache = 128

#查询结果缓存
query_cache_size = 128M

#设置超时时间,能避免长连接
set-variable = wait_timeout=60

#最大并发线程数,cpu数量*2
thread_concurrency = 4

#记录慢查询,然后对慢查询一一优化
log-slow-queries = slow.log
long_query_time = 1

#关闭不需要的表类型,如果你需要,就不要加上这个
skip-innodb
skip-bdb
<think>我们面对的问题是:在Ubuntu 18.04中配置MySQL 5.7的字符集时,发现缺少mysql.confmy.cnf配置文件。 根据引用[1]引用[4]的提示,在Ubuntu 18.04中,MySQL 5.7的配置文件通常位于`/etc/mysql/mysql.conf.d/mysqld.cnf`。另外,引用[2]也提到了`/etc/mysql/mysql.conf.d/mysqld.cnf`文件。 因此,用户可能没有找到名为`mysql.conf`或`my.cnf`的文件,但实际上MySQL 5.7在Ubuntu 18.04中使用的配置文件是`mysqld.cnf`。 解决方案: 1. 检查`/etc/mysql/mysql.conf.d/mysqld.cnf`文件是否存在。 2. 如果该文件不存在,则检查`/etc/mysql/my.cnf`,但根据引用[1]的描述,`/etc/mysql/my.cnf`可能是一个包含其他配置目录的配置文件。 3. 如果两个文件都不存在,可能是MySQL安装不完整,可以考虑重新安装。 具体步骤步骤1:检查配置文件 在终端中执行以下命令: ```bash ls /etc/mysql/mysql.conf.d/mysqld.cnf ``` 或者 ```bash ls /etc/mysql/my.cnf ``` 步骤2:如果配置文件不存在,考虑重新安装MySQL(可选) 如果确实没有配置文件,可能是安装过程中出现问题。可以尝试重新安装: ```bash sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-* sudo rm -rf /etc/mysql /var/lib/mysql sudo apt autoremove sudo apt install mysql-server ``` 步骤3:创建配置文件(如果必要) 如果重新安装后仍然没有配置文件,可以手动创建。但通常安装后会自动生成。 步骤4:修改字符集 一旦找到配置文件(通常是`/etc/mysql/mysql.conf.d/mysqld.cnf`),就可以按照之前的方法修改字符集。 注意:根据引用[4],使用vim编辑配置文件: ```bash sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf ``` 在`[mysqld]`部分添加: ```ini [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci ``` 在`[client]``[mysql]`部分添加相应的设置(如果这些部分不存在,可以创建)。 步骤5:重启MySQL服务 ```bash sudo systemctl restart mysql ``` 步骤6:验证字符集设置(登录MySQL后执行): ```sql SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%'; ``` 如果问题仍然存在,考虑检查MySQL的错误日志(通常位于`/var/log/mysql/error.log`)以获取更多信息。 相关问题: 1. Ubuntu 18.04中MySQL 5.7的默认配置文件路径是什么? 2. 如何重新安装MySQL 5.7并保留数据? 3. 修改MySQL字符集后出现服务启动失败如何解决? 4. 如何查看MySQL当前使用的配置文件路径? 5.MySQL中,如何在不重启服务的情况下临时修改字符集?</think>### Ubuntu 18.04 MySQL 5.7 配置文件缺失解决方案 #### 🔍 问题定位 在 Ubuntu 18.04 中,MySQL 5.7 的配置文件结构不同于旧版本: 1. **主配置文件路径**:`/etc/mysql/mysql.conf.d/mysqld.cnf`(参考引用[1][4]) 2. **全局配置文件**:`/etc/mysql/my.cnf`(通常作为入口文件) 3. **关键目录**:`/etc/mysql/conf.d/`(存放附加配置) 若这些文件缺失,通常是 MySQL 未正确安装或配置目录损坏所致。 --- #### 🛠️ 解决方案 ##### 步骤 1:验证安装状态 ```bash # 检查 MySQL 服务状态 sudo systemctl status mysql # 查看已安装包 dpkg -l | grep mysql-server ``` *若未安装*: ```bash sudo apt update sudo apt install mysql-server-5.7 ``` ##### 步骤 2:重建配置文件 1. **创建主配置文件**: ```bash sudo mkdir -p /etc/mysql/mysql.conf.d/ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` 添加基础配置: ```ini [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci ``` 2. **创建全局配置文件**: ```bash sudo nano /etc/mysql/my.cnf ``` 添加包含指令: ```ini !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/ ``` ##### 步骤 3:设置权限 ```bash sudo chown -R mysql:mysql /etc/mysql/ sudo chmod 755 /etc/mysql/mysql.conf.d/mysqld.cnf ``` ##### 步骤 4:重启服务 ```bash sudo systemctl restart mysql ``` ##### 步骤 5:验证配置 ```bash # 查看 MySQL 加载的配置文件 sudo mysqld --verbose --help | grep -A1 "Default options" # 登录 MySQL 验证字符集 mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set_server'" ``` 预期输出:`character_set_server | utf8mb4` --- #### ⚠️ 注意事项 1. **数据目录检查**: 确保数据目录存在(默认 `/var/lib/mysql`),若缺失需初始化: ```bash sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql ``` 2. **配置文件优先级**(从高到低): ``` /etc/mysql/my.cnf → /etc/mysql/conf.d/ → /etc/mysql/mysql.conf.d/ ``` 3. **远程访问配置**(参考引用[4]): 如需远程访问,在 `mysqld.cnf` 中注释: ```ini # bind-address = 127.0.0.1 ``` --- #### 💡 相关问题 1. 如何确认 MySQL 实际加载的配置文件路径? 2. MySQL 服务启动失败时如何查看错误日志? 3. Ubuntu 18.04 中彻底卸载 MySQL 5.7 的正确步骤是什么? 4. 初始化 MySQL 数据目录后如何找回临时 root 密码? 5. 配置修改后 MySQL 无法启动的常见排查方法有哪些? > 通过重建核心配置文件并设置正确权限,可解决字符集配置问题。操作前建议备份 `/var/lib/mysql` 目录[^1][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值