美文网首页
Gitlab升级PGSQL12

Gitlab升级PGSQL12

作者: InGramViking | 来源:发表于2021-12-23 23:54 被阅读0次

    gitlab的版本是老的,之前用的pg版本为11.x。后来升级到13.9.4了,没有执行升级pg的操作,但是从13.3开始提供了PG12的包,并从13.7开始默认安装PG12的包,现在最新的版本是13.12.15,想升级上去,也为未来准备升级14.x做准备,所以先升级了PG到12,记录一下问题。

    文档:
    升级PG

    一、准备
    备份数据

    # GitLab 12.2 或更高版本:
    sudo gitlab-backup create
    sudo gitlab-ctl backup-etc
    # 把配置文件备份cp备份出去
    

    二、升级PostgreSQL

    注意:升级会停机

    sudo gitlab-ctl pg-upgrade
    

    gitlab-ctl pg-upgrade 执行以下步骤:

    • 检查以确保数据库处于已知的良好状态。
    • 检查是否有足够的可用磁盘空间,否则中止。您可以通过附加--skip-disk-check标志来跳过此步骤。
    • 关闭现有数据库、任何不必要的服务,并启用 GitLab 部署页面。
    • 更改/opt/gitlab/embedded/bin/PostgreSQL 中的符号链接以指向较新版本的数据库。
    • 创建一个新目录,其中包含一个新的空数据库,其区域设置与现有数据库相匹配。
    • 使用该pg_upgrade工具将数据从旧数据库复制到新数据库。
    • 将旧数据库移开。
    • 将新数据库移动到预期位置。
    • 调用sudo gitlab-ctl reconfigure以进行所需的配置更改并启动新的数据库服务器。
    • 运行ANALYZE以生成数据库统计信息。
    • 启动剩余的服务并删除部署页面。
    • 如果在此过程中检测到任何错误,它将恢复到旧版本的数据库。

    如果不出意外,升级会在配置更改启动新数据库服务器时出错,报启动pg失败,启动连接timeout了

    sudo gitlab-ctl tail postgresql
    

    这是因为老版本的gitlab.rb 的配置中,“dynamic_shared_memory_type” 参数为none,升级为12后,不能使用none了,需要修改掉

    vim /etc/gitlab/gitlab.rb
        # 注释掉
        #postgresql['dynamic_shared_memory_type'] = 'none'
    # 重新配置gitlab
    sudo gitlab-ctl reconfigure
    # 查看postgresql的状态是否启动成功,如果没有就手动重启一下
    sudo gitlab-ctl status
    # sudo gitlab-ctl restart postgresql
    
    $ /opt/gitlab/embedded/bin/postgres --version
    postgres (PostgreSQL) 12.5
    

    三、生成数据库统计信息

    sudo gitlab-psql -c "SELECT relname, last_analyze, last_autoanalyze FROM pg_stat_user_tables WHERE last_analyze IS NULL AND last_autoanalyze IS NULL;"
    

    执行上诉sql,如果有任何输出,则手动运行:

    sudo gitlab-psql -c 'SET statement_timeout = 0; ANALYZE VERBOSE;'
    

    四、删除部署状态
    因为在执行pg-upgrade时,启动pg启动失败导致没有在正确状态下执行删除部署状态页面,导致即使现在gitlab-ctl status都是正常的,但是首页还是显示 "Deploy in progress",所以手动退出部署状态

    sudo gitlab-ctl deploy-page down
    

    五、清理旧数据库文件
    在验证您的 GitLab 实例运行正常后,您可以清理旧的数据库文件:

    sudo rm -rf /var/opt/gitlab/postgresql/data.<old_version>
    sudo rm -f /var/opt/gitlab/postgresql-version.old
    

    如果修改了 postgresql['data_dir'] = /data/gitlab/postgresql/data ,那么应该删除的路径为:

    sudo rm -rf /data/gitlab/postgresql/data.<old_version>
    sudo rm -f /var/opt/gitlab/postgresql-version.old
    

    相关文章

      网友评论

          本文标题:Gitlab升级PGSQL12

          本文链接:https://www.haomeiwen.com/subject/ywvkqrtx.html