一次 Postgres 线上操作事故

本贴最后更新于 3117 天前,其中的信息可能已经渤澥桑田

事故原因

清理线上日志文件的时候发现,pg 输出了所有的 SQL 日志,即 log_statement=all。然后觉得去改下减少日志输出。执行 pg_ctl restart,一直 wait shut down。然后我就决定直接 kill -9 杀死进程。再 pg_ctl start 启动则提示删除 pid 文件。然后 rm -rf post tab 键一补全,把 postgresql.conf 文件给删除了。服务器上配置文件我没做备份 。。。

解决

删除后,我开始 google 搜索对应版本 9.2 的配置文件下载,发现没找到。会认为 b3log 群里有急救丸,也发现木有。接着搜索终于在 github 上找到了 9.3 版本的。wget 下来,启动,检查日志,没有问题,暂时搞定。

开始冷静下来,找到了之前测试环境上的 postgresql.conf 文件,比对刚使用的 9.3 的配置。检查其他配置项,没有问题,用测试环境的配置文件代替了 github 上下载的 conf 文件。重启。终于放心了。

接着看 postgresql.conf 各配置项的含义,看完开始睡觉。睡不着了。

总结

  • 线上无小事,任何操作保持敬畏之心
  • 配置文件需定时备份,不可以大意。任何改动之前先备份,记得刚开始线上操作的时候一直那样做的。
  • 在合适的时间进行线上操作。

问题

  • pg_ctl restart 重启的时候必须加上 m -fast 不然,就一直等待 shut down,实际上这个时候数据库已经连接不上了
  • 有什么地方可以下载各 pg 版本的配置文件
  • rm -rf 可以 roolback 么,有什么软件可以保证下么
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    914 引用 • 930 回帖 • 1 关注
  • 事故
    6 引用 • 40 回帖
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖 • 2 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    21 引用 • 22 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • pg 在国内用的还不是特别多

    上次在看 pg 资料,领导过来问 为什么这几天都在看这个,mysql 不是有很多成熟方案吗

  • jiangzezhou
    作者

    @DASHU 前公司有 pg 大神,所以整个公司都在用 pg,我也习惯了,尽管我不熟。相对于 mysql 用起来比较方便。比如有父子表,很容易做分表。

  • someone756

    凡事得备份。

  • 我是因为上次看到 pg 大会上说 pg 牛叉。。。

    然后想下一个项目用 pg

    然而下一个项目 一直没有开始 ~~~~

  • kanner

    postgres 网传性能比 mysql 好,之前是用 postgres,用着挺方便轻巧的。

  • 把 rm alias mv /backup/

  • jiangzezhou
    作者

    @An 靠谱,非常靠谱

  • @jiangzezhou 详细的解决方案
    vim .bashrc

    rm alias "mvfile"
    
    mvfile (){
      	mv $@ /backup/$@_${date "+%Y%m%d-%H%M%S" }
    }
    
  • jiangzezhou
    作者

    @An 我也是这样想的,谢谢 💕

请输入回帖内容 ...