极狐GitLab 如何管理 PostgreSQL 扩展?

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channel=content&utm_source=csdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。

极狐GitLab 在 5 月 28 日正式发布了 AI 产品驭码CodeRider。现已开启免费试用,登录官网:https://coderider.gitlab.cn/ 即可申请试用。

更多关于极狐GitLab :https://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。

学习极狐GitLab 的相关资料:

  1. 极狐GitLab 官网:https://gitlab.cn
  2. 极狐GitLab 官网文档:https://docs.gitlab.cn
  3. 极狐GitLab 论坛:https://forum.gitlab.cn/
  4. 极狐GitLab 安装配置:https://gitlab.cn/install
  5. 极狐GitLab 资源中心:https://resources.gitlab.cn/
  6. AI 产品驭码CodeRider:https://coderider.gitlab.cn/

搜索【极狐GitLab】公众号,后台输入加群,备注gitlab,即可加入官方微信技术交流群。

本指南记录了如何管理安装外部 PostgreSQL 数据库的 PostgreSQL 扩展。
您必须将以下扩展加载到主要极狐GitLab 数据库中(默认为 gitlabhq_production):

扩展 最小极狐GitLab 版本
pg_trgm 8.6
btree_gist 13.1
plpgsql 11.7

如果您使用 Geo,则必须将以下扩展加载到所有次要跟踪数据库中(默认为 gitlabhq_geo_production):

扩展 最小极狐GitLab 版本
plpgsql 9.0

为了安装扩展,PostgreSQL 要求用户具有超级用户权限。通常,极狐GitLab 数据库用户不是超级用户。因此,在安装扩展时不能使用常规数据库迁移,而是必须在将极狐GitLab 升级到更新版本之前手动安装扩展。

手动安装 PostgreSQL 扩展

为了安装 PostgreSQL 扩展,应遵循以下过程:

  1. 使用超级用户连接到极狐GitLab PostgreSQL 数据库,例如:
sudo gitlab-psql -d gitlabhq_production
  1. 使用 CREATE EXTENSION 安装扩展程序(本例中为 btree_gist):
CREATE EXTENSION IF NOT EXISTS btree_gist
  1. 验证已安装的扩展:
 gitlabhq_production=# \dx
                                     List of installed extensions
     Name    | Version |   Schema   |                            Description
 ------------+---------+------------+-------------------------------------------------------------------
 btree_gist | 1.5     | public     | support for indexing common datatypes in GiST
 pg_trgm    | 1.4     | public     | text similarity measurement and index searching based on trigrams
 plpgsql    | 1.0     | pg_catalog | PL/pgSQL procedural language
 (3 rows)

在某些系统上,您可能需要安装额外的软件包(例如,postgresql-contrib)才能使某些扩展可用。

典型故障场景

以下是由于未先安装扩展而导致新的极狐GitLab 安装失败的示例。

---- Begin output of "bash"  "/tmp/chef-script20210513-52940-d9b1gs" ----
STDOUT: psql:/opt/gitlab/embedded/service/gitlab-rails/db/structure.sql:9: ERROR:  permission denied to create extension "btree_gist"
HINT:  Must be superuser to create this extension.
rake aborted!
failed to execute:
psql -v ON_ERROR_STOP=1 -q -X -f /opt/gitlab/embedded/service/gitlab-rails/db/structure.sql --single-transaction gitlabhq_production

以下是在运行迁移之前未安装扩展的情况示例。
在这种情况下,由于权限不足,数据库迁移无法创建扩展 btree_gist

== 20200515152649 EnableBtreeGistExtension: migrating =========================
-- execute("CREATE EXTENSION IF NOT EXISTS btree_gist")

GitLab requires the PostgreSQL extension 'btree_gist' installed in database 'gitlabhq_production', but
the database user is not allowed to install the extension.

You can either install the extension manually using a database superuser:

  CREATE EXTENSION IF NOT EXISTS btree_gist

Or, you can solve this by logging in to the GitLab database (gitlabhq_production) using a superuser and running:

    ALTER regular WITH SUPERUSER

This query will grant the user superuser permissions, ensuring any database extensions
can be installed through migrations.

要从失败的迁移中恢复,必须由超级用户手动安装扩展,并且通过重新运行数据库迁移完成极狐GitLab 升级:

sudo gitlab-rake db:migrate

相关推荐

  1. GitLab 如何管理 PostgreSQL 扩展

    2024-07-20 12:34:03       22 阅读
  2. GitLab Git LFS(大文件存储)如何管理

    2024-07-20 12:34:03       18 阅读
  3. 如何查看GitLab Helm Chart?

    2024-07-20 12:34:03       16 阅读
  4. 如何配置GitLab Runner Cache 缓存

    2024-07-20 12:34:03       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 12:34:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 12:34:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 12:34:03       45 阅读
  4. Python语言-面向对象

    2024-07-20 12:34:03       55 阅读

热门阅读

  1. 学懂C语言系列(一):认识C语言

    2024-07-20 12:34:03       16 阅读
  2. Go的入门

    2024-07-20 12:34:03       24 阅读
  3. SOME/IP配置文件SD中ttl单位是秒

    2024-07-20 12:34:03       16 阅读
  4. Android 14 适配之 - 隐式/显示 Intent 和 广播适配

    2024-07-20 12:34:03       15 阅读
  5. IT服务规划设计之PDCA

    2024-07-20 12:34:03       20 阅读
  6. python-nameparser,一个超酷的Python库!

    2024-07-20 12:34:03       20 阅读
  7. am start -W 命令详解-可以测量应用启动时间的命令

    2024-07-20 12:34:03       18 阅读
  8. 很详细!接口使用教程(二)

    2024-07-20 12:34:03       20 阅读
  9. 分布式Session共享的5类技术方案,与优劣势比较

    2024-07-20 12:34:03       17 阅读