Linux的300+个真实运维场景——25 MySQL/MariaDB 服务器配置与管理
场景 274:MySQL/MariaDB 服务无法启动
问题:MySQL/MariaDB 服务启动失败。
解决方法:
查看 MySQL/MariaDB 错误日志以获取详细信息:
tail -f /var/log/mysql/error.log
验证 MySQL/MariaDB 配置文件是否有错误:
cat /etc/my.cnf # 或 cat /etc/mysql/my.cnf
检查端口冲突:
netstat -tulnp | grep 3306
确保有足够的磁盘空间。
场景 275:无法连接到 MySQL/MariaDB 服务器
问题:应用程序或用户无法连接到 MySQL/MariaDB 服务器。
解决方法:
确认 MySQL/MariaDB 服务正在运行:
systemctl status mariadb # 或 systemctl status mysqld
使用 telnet 或 nc 测试网络连接。
验证 MySQL/MariaDB 用户权限和主机限制。
检查防火墙规则以确保 MySQL/MariaDB 端口(默认:3306)已开放。
场景 276:查询性能缓慢
问题:数据库查询运行速度比预期慢。
解决方法:
使用 MySQL/MariaDB 慢查询日志识别慢查询。
在配置文件中启用慢查询日志(slow_query_log = 1)。
设置 long_query_time 参数为适当值。
优化慢查询,考虑索引、查询结构和表设计。
使用 top 和 htop 等工具监控服务器资源以识别瓶颈。
场景 277:MySQL/MariaDB 身份验证问题
问题:用户无法对 MySQL/MariaDB 服务器进行身份验证。
解决方法:
检查 MySQL/MariaDB 用户账户和密码。
测试身份验证:
mysql -u -p
验证是否使用 mysql_native_password 插件进行身份验证。
如有需要,重置密码:
ALTER USER ''@'' IDENTIFIED BY 'new_password';
场景 278:数据库损坏
问题:表或数据库被标记为损坏。
解决方法:
对受影响的表运行 MySQL/MariaDB 的 CHECK TABLE 和 REPAIR TABLE 命令。
CHECK TABLE ;
REPAIR TABLE ;
如果损坏严重,从备份中恢复数据库。
调查服务器日志以查找潜在的硬件问题。
场景 279:数据库软件版本过旧
问题:运行的 MySQL/MariaDB 版本过旧。
解决方法:
检查当前的 MySQL/MariaDB 版本:
mysql --version
使用包管理器(yum 或 dnf)更新 MySQL/MariaDB:
sudo yum update mariadb-server # 或 sudo dnf update mysql-server
验证升级是否成功,并重启 MySQL/MariaDB 服务。
场景 280:InnoDB 或 MyISAM 存储引擎问题
问题:特定于 InnoDB 或 MyISAM 存储引擎的问题。
解决方法:
检查存储引擎状态:
SHOW ENGINES; # 在 MySQL/MariaDB shell 中
如果使用 InnoDB,监控 InnoDB 状态:
SHOW ENGINE INNODB STATUS; # 在 MySQL/MariaDB shell 中
如有必要,将表转换为其他存储引擎:
ALTER TABLE ENGINE = InnoDB;
场景 281:因二进制日志导致磁盘空间不足
问题:由于 MySQL/MariaDB 二进制日志的过度增长,磁盘已满。
解决方法:
查看二进制日志的大小:
SHOW BINARY LOGS;
清理旧的二进制日志:
PURGE BINARY LOGS BEFORE 'YYYY-MM-DD';
调整 MySQL/MariaDB 配置以限制二进制日志的大小或保留时间。
场景 282:复制问题
问题:MySQL/MariaDB 服务器之间的复制未正确工作。
解决方法:
查看复制状态:
SHOW SLAVE STATUS; # 在从服务器上
验证主服务器的二进制日志位置和从服务器的中继日志位置。
如有需要,重启 MySQL/MariaDB 复制进程。
场景 283:无法访问 MySQL/MariaDB 数据目录
问题:MySQL/MariaDB 无法访问或写入数据目录。
解决方法:
查看 MySQL/MariaDB 数据目录的文件和目录权限:
ls -ld /var/lib/mysql
确保 MySQL/MariaDB 用户具有必要的权限。
如有需要,使用 chown 和 chmod 修复文件所有权和权限。