记一次 PostgreSQL 事故处理

2022 年 8 月 24 日
 samin

notion 文章链接: https://gaudy-feels-700.notion.site/PostgreSQL-eb2ae9499ae94be583058f6e0cad5fa1

via: https://github.com/SaminZou/study-prj

处理完问题心血来潮写了个记录 mark 一下,希望对大家处理问题可以有点启发

6048 次点击
所在节点    程序员
42 条回复
ppllss
2022 年 8 月 24 日
线上时区问题怎么会等到线上有流量后才发现?上线后测试不走一边数据?难以理解
FYFX
2022 年 8 月 24 日
不是,你线上数据库在还提供服务的情况下重启这么果断的,我看你总结的时候没反思这个问题啊
FYFX
2022 年 8 月 24 日
对生产环境有敬畏之心啊
r4aAi04Uk2gYWU89
2022 年 8 月 25 日
```PG 重启的过程中有 Pod 被 K8s 强制关闭```
好奇一共有几个 pod ,有配置主从吗?
k8s 在你新的 replica 跑起来,在 ready 之前,不会终止旧的 replica 的,你是直接在 pod 里操作的重启?
kkeep
2022 年 8 月 25 日
瞎胡闹罢了。。
billccn
2022 年 8 月 25 日
你敢这么重启数据库,真是勇!


`pg_ctl reload`不好吗?
sadfQED2
2022 年 8 月 25 日
卧槽,生产环境,勇士啊
LinYa
2022 年 8 月 25 日
`本次修复消耗时间大概 3 小时,排查问题,合理的修复手段很重要`
sardina
2022 年 8 月 25 日
pg 可以在一个连接的 session 里设置时区吗 mysql 是可以的
laolaowang
2022 年 8 月 25 日
不懂数据库,看到大家的评论,说明你还是没认识到问题
wingor2015
2022 年 8 月 25 日
这个重启来得猝不及防,有点好奇重启是怎么操作的?
sujin190
2022 年 8 月 25 日
大家也别这么苛刻吧,谁还不犯个傻啊,但是不能在有频繁写入过程中重启数据库,这个傻确实犯的有点低级
lookStupiToForce
2022 年 8 月 25 日
可以的,瞎胡闹的评价是正确的
lookStupiToForce
2022 年 8 月 25 日
@sardina #9 可以设置,估计他们不想动生产端代码吧
HashV2
2022 年 8 月 25 日
能详细描述一下问题产生的原因吗?我生产环境从来没调过 pgsql 的时区,也没出过问题。
Huelse
2022 年 8 月 25 日
@HashV2 #15 我们也从来没调整过,一直默认的 UTC ,我猜是他们的代码存入时带时区了
HashV2
2022 年 8 月 25 日
@HashV2 #15 好吧 我看完文章后赶紧检查了一下,原来是框架写接口的时候会自动根据框架设置的时区转一下,我跟别人对接也都是通过自己写的接口,所以没出问题, 如果其它业务直接连这个数据库拿数据也是会出问题的
cocowind
2022 年 8 月 25 日
emm...业务层 UTC,监控,日志 SH
HashV2
2022 年 8 月 25 日
@Huelse #16 你直接用命令行查一下,是有他这个问题的
samin
2022 年 8 月 25 日
@ppllss
@FYFX
@billccn
@sadfQED2

各位放心,这个是 UAT 环境,我文章里面没提到是生产吧,给我 100 个胆也不敢去搞生产的。😂DEV 环境的 PG 是裸机装的,服务应用他们在 DEV 环境是正常的时间,上了 UAT 就不正常了,排查很多变量最终定位 PG ,所以尝试去修改。

BTW:虽说是 UAT ,但是我们做的项目大量的类真实数据假设没了,也是致命的重建工作量。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/875189

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX