0x00、事件描述
信息来源:https://twitter.com/gitlabstatus
2017年1月31日,上午10点左右官方公布出现问题,2017年2月1日,上午9:57 完成恢复,大约经历了24小时。
0x01、事件原因
2017/01/31 18:00 UTC 发现spammers攻击gitlab,使得数据库不稳定。
2017/01/31 21:00 UTC 发现47 000 IPs签名使用同一个账号,造成数据库高负载。(传说中的CC?)
2017/01/31 22:00 UTC 数据库集群同步被打断。DB Replication没有及时写。
2017/01/31 23:00-ish pg_basebackup拒绝数据库文件同步工作,由于PostgreSQL数据目录存在(尽管是空的),管理员决定删除该目录。 一两秒后,他注意到他在db1.cluster.gitlab.com上运行它,而不是db2.cluster.gitlab.com。导致生产数据被删除,灾难发生。
2017/01/31 23:27 管理员终止了删除,但是为时已晚。 在大约300 GB左右,只剩下约4.5 GB (妈蛋,这可是主库呀,还有和TMD rm -rf有JM关系,正常的维护,但是管理好像不懂postgresql集群工作原理。)
备份机制
定期备份似乎也只是每24小时一次,管理员还不知道在哪?
pg_dump失败,因为postgresql版本不是9.6而是9.2
Disk snapshots在微软Azure上只做NFS快照,没有postgresql快照
shell脚