阿里云服务器数据库故障排查指南?
阿里云服务器数据库故障排查指南?
以下是针对阿里云服务器(如ECS自建数据库或阿里云RDS等托管数据库)的故障排查指南,涵盖常见问题的定位与解决方案:
一、数据库连接失败
-
检查网络连通性
-
ECS自建数据库
-
确认安全组规则放行数据库端口(如MySQL:3306, Redis:6379)。
-
检查ECS实例的防火墙(iptables/firewalld)是否允许外部访问。
-
使用
telnet <IP> <端口>
或nc -zv <IP> <端口>
测试端口可达性。
-
-
RDS/PolarDB等托管数据库
-
检查白名单(IP白名单、安全组)是否包含客户端IP。
-
确保连接地址正确(区分内网地址与公网地址)。
-
-
-
验证账号权限
-
检查数据库账号是否有远程访问权限(如MySQL的
user
表Host字段是否为%
)。 -
确认账号密码正确,避免因密码错误导致拒绝连接。
-
-
检查数据库服务状态
-
ECS自建数据库:执行
systemctl status mysqld
或ps -ef | grep mysql
查看进程是否运行。 -
RDS实例:在控制台查看实例状态是否为“运行中”,确认无重启或迁移操作。
-
-
DNS解析问题
-
若使用域名连接,检查域名解析是否正常(
nslookup <域名>
或ping <域名>
)。
-
二、数据库性能缓慢
-
资源监控
-
阿里云控制台监控:查看CPU、内存、磁盘IOPS、连接数是否达到瓶颈。
-
RDS:控制台 > 监控与报警 > 性能监控。
-
ECS自建:使用
top
,htop
,iostat
,vmstat
分析资源占用。
-
-
慢查询日志
-
MySQL:开启慢查询日志(
slow_query_log=ON
),分析mysqldumpslow
或阿里云DMS的慢SQL分析工具。 -
MongoDB:使用
db.setProfilingLevel(1, 100)
记录慢查询。
-
-
锁等待
-
MySQL:
SHOW ENGINE INNODB STATUS
查看锁争用情况,或查询information_schema.INNODB_TRX
。 -
Redis:检查是否因大量
KEYS *
或复杂命令阻塞服务。
-
-
-
SQL优化
-
使用
EXPLAIN
分析查询执行计划,检查是否缺少索引或全表扫描。 -
优化高频查询,避免
SELECT *
,减少JOIN复杂度。
-
-
连接池与配置
-
检查最大连接数(如MySQL的
max_connections
),避免连接耗尽。 -
调整连接池配置(如HikariCP、Druid)避免频繁创建连接。
-
三、数据异常或丢失
-
主从同步问题(如使用读写分离)
-
MySQL:执行
SHOW SLAVE STATUS
查看Slave_IO_Running
和Slave_SQL_Running
状态。 -
MongoDB:通过
rs.status()
检查副本集状态。
-
-
数据一致性校验
-
使用阿里云DBS(数据库备份服务)进行全量校验。
-
对关键表执行
CHECKSUM TABLE
(MySQL)或db.collection.validate()
(MongoDB)。
-
-
事务与回滚
-
检查是否有未提交的大事务(MySQL的
information_schema.INNODB_TRX
)。 -
确认存储引擎是否支持事务(如MyISAM不支持事务)。
-
四、磁盘与存储问题
-
磁盘空间不足
-
检查数据目录使用率(
df -h
),清理日志(如Binlog、错误日志)或归档历史数据。 -
RDS实例可在控制台扩容存储空间。
-
-
磁盘性能瓶颈
-
ECS自建数据库:升级云盘类型(如SSD->ESSD PL3)。
-
RDS:监控IOPS和吞吐量,升级实例规格或启用读写分离。
-
五、阿里云工具辅助排查
-
数据库自治服务(DAS)
-
自动提供SQL优化建议、死锁分析、实时性能监控。
-
-
日志管理
-
RDS:控制台下载错误日志、慢查询日志、审计日志。
-
ECS自建:通过SLS(日志服务)收集数据库日志。
-
-
一键诊断
-
在RDS控制台使用“一键诊断”功能,自动检测实例健康状态。
-
六、灾备与恢复
-
备份验证
-
检查自动备份是否正常(RDS控制台 > 备份恢复)。
-
定期执行备份恢复演练。
-
-
数据恢复
-
RDS支持按时间点恢复(PITR),ECS自建可使用XtraBackup(MySQL)或mongodump(MongoDB)恢复。
-
七、联系阿里云支持
若问题无法定位:
-
提交工单,附上错误日志、时间点、问题现象。
-
提供实例ID、错误代码(如MySQL error 1045)。
-
使用阿里云“健康诊断”生成报告并提交。
通过以上步骤,可系统性排查大部分数据库问题,确保业务快速恢复。