应急手册
- 数据库变慢整个应用变慢;查询耗时远超平常,用户在抱怨。
- 磁盘/表空间已满出现 'unable to extend'、'disk full'、'log file full' 错误;写入正在停止。
- 阻塞与锁危机查询挂起,出现 'lock wait timeout',大量会话在等待,但 CPU 很低。
- 连接风暴(连接过多)出现 'too many connections'、'ORA-00018'、'remaining connection slots reserved'——新连接被拒绝。
- 复制延迟/停止备库/副本正在落后或已完全停止;只读副本显示的是过时数据。
- CPU 过高服务器 CPU 达到 90% 以上;整个系统变慢,load average 很高。
- 内存压力 / OOMOOM killer 终止进程,出现 'out of memory'、缓存命中率低、过度 swap,Redis 报 'OOM command not allowed'。
- 事务日志 / undo 膨胀事务日志文件或 undo/redo 区域快速增长;出现 'log full'、'ORA-01555 snapshot too old'、'unable to extend…
- 死锁分析出现 'deadlock detected'、'ORA-00060'、'chosen as deadlock victim'——事务相互锁住,其中一个被中止。
- 数据库无法打开 / 无法访问无法连接到服务,出现 'connection refused',实例无法启动,listener 无响应。
- 数据损坏读取时出现 'ORA-01578'、'page corruption'、'checksum mismatch'、'MISCONF' 等 I/O 一致性错误。
- 长时间运行的查询 / 作业某个查询/作业已运行数小时仍未结束;它消耗资源或影响其他操作。
- Postgres XID 回卷 / autovacuum 危机出现 'database is not accepting commands to avoid wraparound data loss';autovacuum 跟不上,datf…
- tempdb 争用(SQL Server)PAGELATCH_UP/EX 等待,tempdb 分配页(PFS/GAM/SGAM)上的争用,整体变慢。
- TLS / 证书过期出现 'certificate has expired'、'SSL handshake failed',客户端突然无法连接(代码没有任何变更)。
- 版本升级 / 补丁回退升级/打补丁后出现问题:性能回退、应用不兼容或数据库无法打开。
- Elasticsearch 集群 red/yellow 与未分配分片_cluster/health 为 'red' 或 'yellow';存在未分配分片;读/写受限或数据无法访问。
- 时钟偏差 / NTP 问题集群节点之间存在时钟差异;复制/选举不一致,出现 'certificate not yet valid',日志中时间跳变。
- Oracle Data Guard(物理备库)搭建目标:使用物理备库(Data Guard)为 Oracle 搭建灾难恢复和高可用;在主库故障时能够切换到备库。
- SQL Server Always On 可用性组搭建目标:使用 Always On 可用性组(AG)为 SQL Server 搭建自动故障转移和可读辅助副本。
- PostgreSQL 流复制 + 自动故障转移目标:使用流复制为 PostgreSQL 搭建 hot standby,并加入 Patroni/repmgr 实现自动故障转移。
- MySQL InnoDB Cluster(Group Replication)搭建目标:使用 InnoDB Cluster(Group Replication + MySQL Shell + MySQL Router)为 MySQL 搭建具备自动故障转移的高可…
- MongoDB 副本集 + 分片搭建目标:为 MongoDB 搭建具备自动故障转移的副本集,并将其扩展为分片集群以实现横向扩展。
- 使用 Redis Sentinel + Cluster 实现高可用目标:使用 Sentinel 为 Redis 搭建具备自动故障转移的 master-replica 部署;若需要横向扩展,则切换到 Redis Cluster 模式。
- Elasticsearch 弹性:副本 + 快照 + CCR目标:通过副本分片、专用 master/data 节点、快照备份(SLM)和跨集群复制(CCR)为 Elasticsearch 构建弹性。
- 安全加固:SQL 数据库(Oracle、PostgreSQL、MySQL、SQL Server)目标:按 CIS 风格加固关系型数据库——默认账户、强密码策略、最小权限、网络限制、TLS、审计和加密(TDE)。
- 安全加固:MongoDB / Redis / Elasticsearch目标:按 CIS 风格加固 NoSQL/数据存储——认证、网络限制、阻止危险命令、TLS、最小权限角色和审计。
- 云托管数据库(RDS/Aurora/Cloud SQL/Atlas/Azure SQL)目标:了解云托管数据库与自行管理安装之间的关键差异;理解备份、参数、故障转移、监控、升级和连接在云中如何运作。
- 使用 Ansible 实现数据库自动化目标:使用 Ansible 使数据库安装、配置、用户和备份任务可重复且幂等(重复运行同一个 playbook 不会破坏系统)。
- 使用 Terraform 配置数据库(IaC)目标:使用 Terraform 将数据库基础设施(实例、参数组、网络)定义为代码(基础设施即代码);建立 plan/apply 流程、远程 state 和漂移管理。
- Kubernetes 上的数据库(operator)目标:借助 operator 在 Kubernetes 上运行数据库;使用 operator 提供的自动故障转移、持久存储和备份功能,而不是单纯的 StatefulSet。
- Schema 迁移 CI/CD(Flyway/Liquibase)目标:用带版本号的迁移文件管理数据库 schema 变更;在 CI/CD 中使用 Flyway 或 Liquibase 自动但可控地应用这些变更。
- 自动化备份(pgBackRest/Barman/Xtrabackup/cron)目标:自动化数据库备份;通过定时的完整+增量+WAL/binlog 归档、保留策略、验证和异地副本,构建可靠的恢复链。
- GitOps 与蓝绿 / 零停机部署目标:在不停机的情况下部署 schema 和应用变更;通过 expand-contract 迁移、蓝绿环境、功能开关和自动回滚,接近零停机。