标签: postgresql

  • 升级 Sentry 自主部署实例

    升级 Sentry 自主部署实例

    Sentry 使用日历版本(CalVer)生成版本号,即按照特定时间来发布版本,比如今年是 2022 年,在刚刚过去的 10 月份,他们就发布了 22.10 版本。按照这种方式,很快 22.11 也会发布。

    每个版本都会有一些问题修复、新功能添加。而且,作为一个错误管理平台,里面存储数据,很多都跟我们的代码有关,所以我们也很关注它的安全问题。所以,我建议大家及时升级到新版本。

    按照 Sentry 的设计,升级其实很简单:

    1. 下载最新版本:https://github.com/getsentry/self-hosted/releases/
    2. 解压缩到目标文件夹
    3. 执行 ./install.sh 即可

    不过考虑到 清理 Sentry 磁盘占用 时需要安装 pg_repack 插件,这个过程实际要复杂一些。否则,可能会安装失败,到时候,恢复也很麻烦。

    升级 Sentry self-hosted 实例

    停用 pg_repack

    • 进入 sentry 配置目录,对于我来说,就是 ~/sentry
    • 登录 Postgresql 容器:sudo docker compose exec postgres bash
    • 之前我们已经装过 vim,所以不用再装。否则话,需要先安装一个文本编辑器:apt update && apt install vim
    • 修改配置:
      • su postgres
      • cd $PGDATA
      • vim postgresql.conf
      • shared_preload_libraries = 'pg_repack' <– 找到并注释这一句
      • 保存并退出 wq
    • 进入 postgresql shell:psql postgres
      • psql postgres
      • 执行 SQL:DROP EXTENSION pg_repack;

    更新配置文件

    • 下载新版本之后,解压缩到新目录 sentry_new
    • 备份之前的配置文件,对于我而言,需要备份三个文件:
      • ~/entry/docker-compose.yml 里面关于 Kafka 的配置
      • ~/sentry/sentry/config.yml 里的邮箱配置
      • ~/sentry/sentry/sentry.conf.py 最后面的其它配置
    • sentry_new 复制到原本的 sentry
    • 将备份的配置复制回去

    安装新版本

    接下来安装新版本:sudo ./install.sh

    安装脚本会自动停止服务,然后拉新的镜像,然后部署新的容器。这个过程会持续一段时间,与网络状态、机器性能都有关,需要提前做好准备。

    这个过程如果断开连接,会出错失败。所以建议用 screentmux 等工具保持进程运行。

    安装成功后,正常启动服务即可:sudo docker compose up -d,然后就可以使用新版本的 Sentry 了。

    清理老的镜像和容器

    一般来说,这个过程不是很必要,至少不用每次升级都做。为了避免未来的使用问题,可以先留一阵子,我建议最多清理一年前的残留镜像和容器。

    (过程方法待补充)

    常见更新失败及解决

    container for service "postgres" is unhealthy

    这就是我前面说到的原因:因为事前在 Postgresql 容器里启动过 pg_repack 插件,升级之后的容器里并没有这个插件,但因为继承了以前的存储卷(Volume),所以启动容器时还是会查找这个插件,因为容器里没有,就挂了。

    解决方案是:

    1. 回滚到之前的版本,其实就是把比老版本配置文件拷回来
    2. 因为我们并没有清理镜像和容器,所以此时老版本是可以正常启动的
    3. 不用完全启动,启动 postgresql 即可:sudo docker compose start postgres
    4. 然后登入 postgres 容器,执行前面的操作,清理 pg_repack 插件
    5. 退出并关闭 postgres 容器
    6. 重复上面的新版本安装过程

    总结

    作为一名土前端,我对 docker 不太熟悉,对 Kafka、Postgresql 也知之甚少。使用 Sentry 之后,迫不得已必须学习很多新知识,我觉得很有意思。如今我已经尽量使用 Docker Desktop 去使用和管理一些软件,我觉得很方便。接下来好好学习,争取把 Docker 生态的工具也为我所用。

    如果你有任何问题、建议,欢迎留言讨论。

  • 在树莓派上启用 PostgreSQL 对外服务

    在树莓派上启用 PostgreSQL 对外服务

    以前写过一篇笔记《树莓派4 安装 OpenResty + PostgreSQL》,记录如何在树莓派上装 PostgreSQL,不过那时候只是为了在上面做开发,没有考虑过对外服务。如今为了能够在别的机器上做开发,所以要想办法配置一下对外服务。

    0. 系统

    • Raspberry Pi 4B
    • Debian 10 buster 更新到最新
    • 如上篇文章所述安装和配置 PostgrSQL

    1. 判断本地运行状态。

    # 查看服务状态
    sudo service --status-all
    # [ + ]  postgresql
    
    # 查看端口
    sudo netstat -plunt | grep postgres
    # tcp        0      0 127.0.0.1:5432            0.0.0.0:*               LISTEN      6629/postgres

    服务在运行,端口也在侦听,直接连接,失败,被服务器拒绝。

    2. 安装防火墙工具调整规则

    猜测可能跟防火墙有关,iptables 我不熟,所以安装 ufw 帮忙:

    # 安装
    sudo apt install ufw
    
    # 启动端口
    sudo ufw allow 5432
    sudo ufw allow from 10.0.0.10 # 我的 iMac

    3. 修改侦听端口

    修改防火墙后还是连不上。使用 Telnet 工具可以本地连接,但不能远程连接,推断应该是侦听端口的问题。回去仔细看了一下端口状态,觉得应该是端口没配好,所以修改配置,侦听 0.0.0.0,然后重启 PostgreSQL 服务,再连接就成功了。

    listen_addresses = '0.0.0.0' 
    port = 5432
    host    all             all              0.0.0.0/0                       md5
    host    all             all              ::/0                            md5

    参考链接:

  • 树莓派4 安装 OpenResty + PostgreSQL

    树莓派4 安装 OpenResty + PostgreSQL

    为了给 OpenResty.org 添加论坛链接,在本地搭建开发环境,选择用树莓派搞。记录一下,以备将来回顾。

    (更多…)