庆祝女足夺冠,特分享 11 条数据库维护金律
当年老板把我拉到小黑屋,义正严词地问,“ 我能把数据库放心交给你吗 ”,说实话,我心里特别激动。这股激动,在今天女足夺冠时,又出现了。所以,我觉得,怎么去用好一个数据库,作为正式上班前的礼物,应该分享给大家!
数据库不稳定,经常性 timeout,反应过慢,大多是因为开发或 DBA (如果有)不知道怎么对数据库做健康巡检。做不到对数据库的底层活动了如指掌,那么对数据库的脾气和它的能力自然不会有太深的了解。就像“日久见人心”,“见”的前提,就是要“日久”,即多触碰
本文,我分享下平常巡检的检查点。希望借此树立起一个数据库健康检查的大局观,也即数据库画像。
一般来说,数据库管控重点在于实例的管控。管控围绕 “高可用/高并发/高性能”开展。如果理解 “三高” 有点费劲,那么首先理解下 “三低”:“低可用/低并发/低性能”
“低可用”:经常性的宕机,用着用着,数据库链接就断了。有各种原因导致数据库宕机,比如硬件不能用了,磁盘爆满,被黑,被拔插头,等等。那么如何保障这些事故不会发生,就属于“高可用”策略了。比如双备,加磁盘,加防火墙,及时打补丁
“低并发”:以前经常嘲笑自己,用户也就三千人,为什么还要费劲去想,超过超过3万用户后,应该要做什么;超过30万,300万呢?当我真正碰到百万级用户时,类似的掉线,保存缓慢等抱怨都出来了。在疲于救火,焦头烂额的同时,才发现,提早考虑,真有用。所以,这些提高用户体验的措施,就是“高并发”策略
“低性能”:这是最好理解的,比如打开一个用户报表,平时用5秒,还在忍受范围内,一旦超过5分钟了,那换谁,谁都忍不了。提高查询性能做的保障措施,就属于“高性能”策略
以上,都是打个比方,举个例子,真正深入,“三高” 的意义和措施,要复杂10倍不止。
因此,围绕着 “三高”,大多数公司,会自动或手动,做一些健康巡检,以便及时发现“坏分子”。以下就是经常会用到的 11 个巡检方案。
a. 索引的重建/重构
b. 表分区的管理
c. 数据库的备份与恢复策略
d. 日志文件的清理
e. 表空间的监控与自动维护
f. 数据库一致性检查
g. 读写分离
h. 死锁日志
j. 围绕时间线的慢 SQL 统计
k. 压缩数据库(shrink database)
l. 重新评估和设计 baseline
这些方案,实施的时间粒度不同,有些可以按月,比如表分区,评估 baseline;有些必须按天, 比如备份,日志文件清理;有些则需实时告警,比如死锁,堵塞。
值得提醒的是,有些巡检方案,比较耗资源,比如索引重建,备份,压缩数据库等等,动则锁表,造成业务停顿,需与 DBA 同步想法。
当然,这11条经验,并不是清规戒律,不是每个项目都一定要执行。根据自身项目的需要,可以增删改。
明天要开始上班了,祝大家每天都有一个好心情!
往期精彩: