MySQL 配置及常见问题
1. 基础配置
1.1 配置文件位置
- Windows:
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini - Linux:
/etc/my.cnf或/etc/mysql/my.cnf
1.2 重要配置参数
[mysqld]
# 基础配置
port = 3306
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
# 内存配置
innodb_buffer_pool_size = 4G
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
# 连接配置
max_connections = 1000
max_allowed_packet = 16M
wait_timeout = 28800
# 性能配置
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
2. 常见问题及解决方案
2.1 连接数过多
问题描述:出现 "Too many connections" 错误
解决方案:
- 增加最大连接数:
SET GLOBAL max_connections = 2000;
- 检查并关闭空闲连接:
SHOW PROCESSLIST;
KILL [connection_id];
2.2 内存使用过高
问题描述:服务器内存占用过高
解决方案:
- 调整 InnoDB 缓冲池大小:
innodb_buffer_pool_size = 4G
- 优化查询缓存:
query_cache_size = 0
query_cache_type = 0
2.3 慢查询优化
问题描述:查询执行时间过长
解决方案:
- 开启慢查询日志:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
- 使用 EXPLAIN 分析查询:
EXPLAIN SELECT * FROM table_name WHERE condition;
2.4 字符集问题
问题描述:中文乱码或特殊字符显示异常
解决方案:
- 设置正确的字符集:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
2.5 备份与恢复
常用备份命令:
# 全量备份
mysqldump -u root -p --all-databases > backup.sql
# 单库备份
mysqldump -u root -p database_name > database_backup.sql
# 恢复数据
mysql -u root -p < backup.sql
3. 性能优化建议
3.1 索引优化
- 合理使用索引
- 避免过多索引
- 定期维护索引
3.2 查询优化
- 避免使用 SELECT *
- 使用 LIMIT 限制结果集
- 合理使用 JOIN
3.3 表结构优化
- 选择合适的数据类型
- 适当使用分区表
- 定期进行表维护
4. 监控与维护
4.1 常用监控命令
-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';
-- 查看进程列表
SHOW PROCESSLIST;
-- 查看表状态
SHOW TABLE STATUS;
-- 查看系统变量
SHOW VARIABLES;
4.2 定期维护任务
- 定期备份数据
- 检查并修复表
- 优化表结构
- 清理日志文件
