gitlab使用多数据库

1. 说明

默认情况下,GitLab 使用一个单一的应用数据库,称为主数据库。为了扩展 GitLab,您可以将 GitLab 配置为使用多个应用数据库。

设置多个数据库后,GitLab 将使用第二个应用数据库用于 CI/CD 功能,称为 CI 数据库。我们并不排除将这两个数据库托管在单个 PostgreSQL 实例上。

主数据库和 CI 数据库中的所有表结构完全相同。
• 当配置了多个数据库时,ci_pipelines 表会同时存在于主数据库和 CI 数据库中,但 GitLab 只会在 CI 数据库的 ci_pipelines 表中进行读写。
• 同样,projects 表存在于主数据库和 CI 数据库中,但 GitLab 只会在主数据库的 projects 表中进行读写。
• 对于某些表(如 loose_foreign_keys_deleted_records),GitLab 会在主数据库和 CI 数据库中同时进行读写。请参见开发文档。

2. 配置

主要修改gitlab 的主配置文件(/etc/gitlab/gitlab.rb)

2.1 gitlab开放端口(gitlab 自带的数据库组件)

开放数据库的端口分两部操作

2.1.1 postgresql 的配置

数据库机器的 IP 为10.100.10.53

postgresql['listen_address'] = "0.0.0.0"
postgresql['port'] = 5432
postgresql['sql_user'] = "gitlab"
postgresql['sql_user_password'] = '0873d907a1dbffa91bae86d744306549' #通过该命令生成 gitlab-ctl pg-password-md5 gitlab
postgresql['md5_auth_cidr_addresses'] = %w(0.0.0.0/0)
postgresql['trust_auth_cidr_addresses'] = %w(127.0.0.1/32)
#postgresql['ssl'] = 'off'
gitlab_rails['auto_migrate'] = false #如果是首次reconfigure可以不要,如果已经首次初始化了,必须要有此配置
gitlab-ctl reconfigure
gitlab-ctl restart postgresql
2.1.2 Rails 的配置
gitlab_rails['db_host'] = '10.100.10.53'
gitlab_rails['db_port'] = 5432
gitlab_rails['db_database'] = "gitlabhq_production"
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = "gitlab123"
gitlab-ctl reconfigure

2.2 gitlab使用外部的数据库

2.2.1 外部的数据库需要的信息
# 创建用户
create user gitlab login password 'gitlab123';
# 创建数据库
create database gitlabhq_production owner=gitlab ENCODING = 'UTF8';
# 安装扩展
## 可以通过 "\dx" 或者 "select extname,extowner,extnamespace,extrelocatable,extversion from pg_extension;" 来查看gitlab自带数据库的扩展
CREATE EXTENSION pg_trgm;
CREATE EXTENSION btree_gist;
2.2.2 gitlab主配置文件添加配置
postgresql['enable'] = false
gitlab_rails['db_adapter'] = 'postgresql' #固定配置
gitlab_rails['db_encoding'] = 'utf8'
gitlab_rails['db_database'] = 'gitlabhq_production'
#gitlab_rails['db_pool'] = 10
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = 'gitlab123'
gitlab_rails['db_host'] = '192.168.1.112'
gitlab_rails['db_port'] = 15432
gitlab-ctl reconfigure

3. gitlab配置使用多数据库(有ci相关数据的基础上)

主要修改gitlab 的主配置文件(/etc/gitlab/gitlab.rb)

3.1 场景1: main 和 ci 都使用自带的数据库pg

# 开放自带的pg端口
postgresql['listen_address'] = "0.0.0.0"
postgresql['port'] = 5432
postgresql['sql_user'] = "gitlab"
postgresql['sql_user_password'] = '0873d907a1dbffa91bae86d744306549'
postgresql['md5_auth_cidr_addresses'] = %w(0.0.0.0/0)
postgresql['trust_auth_cidr_addresses'] = %w(127.0.0.1/32)
#postgresql['ssl'] = 'off'
gitlab_rails['auto_migrate'] = false
gitlab-ctl reconfigure
gitlab-ctl restart postgresql

rails 配置

gitlab_rails['db_host'] = '10.100.10.53'
gitlab_rails['db_port'] = 5432
gitlab_rails['db_database'] = "gitlabhq_production"
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = "gitlab123"
gitlab-ctl reconfigure

配置CI库

gitlab_rails['env'] = { 'GITLAB_ALLOW_SEPARATE_CI_DATABASE' => 'true' }
gitlab_rails['databases']['ci']['enable'] = true
gitlab_rails['databases']['ci']['db_database'] = 'gitlabhq_production_ci'
gitlab_rails['databases']['ci']['db_host']  = '10.100.10.53'
gitlab_rails['databases']['ci']['db_port'] = 5432
gitlab_rails['databases']['ci']['db_username'] = 'gitlab'
gitlab_rails['databases']['ci']['db_password'] = 'gitlab123'
gitlab_rails['databases']['ci']['db_adapter'] = 'postgresql'
gitlab_rails['databases']['ci']['db_encoding'] = 'UTF8'
gitlab-ctl reconfigure

<可选> 迁移表

sudo gitlab-ctl start postgresql
sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d template1 -c "CREATE DATABASE gitlabhq_production_ci OWNER gitlab;"
sudo gitlab-rake db:schema:load:ci

main 数据库中的 ci 表进行锁定写入,反之亦然

sudo gitlab-ctl start postgresql
sudo gitlab-rake gitlab:db:lock_writes
sudo gitlab-ctl restart

说明:
如果现有的 gitlabhq_production 已经有了ci的相关数据,那么就通过 停止puma/rails 服务,然后备份 gitlabhq_production 库,在将备份的sql写入到 gitlabhq_production_ci 库,确保 多数据库配置好之后,ci相关数据走 gitlabhq_production_ci 库后有数据库,下面有操作。

3.2 场景2: main 和 ci 都使用外部的数据库pg

配置main库

# 不启用gitlab自带的数据库
postgresql['enable'] = false
# main database
gitlab_rails['db_database'] = 'gitlabhq_production'
gitlab_rails['db_host'] = '192.168.1.112'
gitlab_rails['db_port'] = 15432
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = 'gitlab123'
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'utf8'
gitlab_rails['auto_migrate']= true
gitlab-ctl reconfigure

配置CI库

# ci database
gitlab_rails['env'] = { 'GITLAB_ALLOW_SEPARATE_CI_DATABASE' => 'true' }
gitlab_rails['databases']['ci']['enable'] = true
gitlab_rails['databases']['ci']['db_database'] = 'gitlabhq_production_ci'
gitlab_rails['databases']['ci']['db_host']  = '192.168.1.112'
gitlab_rails['databases']['ci']['db_port'] = 15432
gitlab_rails['databases']['ci']['db_username'] = 'gitlab'
gitlab_rails['databases']['ci']['db_password'] = 'gitlab123'
gitlab_rails['databases']['ci']['db_adapter'] = 'postgresql'
gitlab_rails['databases']['ci']['db_encoding'] = 'utf8'

说明:
外部的数据库配置好上面的操作后,执行 gitlab-ctl reconfigure 会报错,但是 /var/opt/gitlab/gitlab-rails/etc/database.yml 实际已经渲染了配置,因为为了能实现 gitlab-ctl reconfigure ,可以通过备份恢复的方式将 gitlabhq_production 导入到 gitlabhq_production_ci 中 ,同时这样的好处就是 对于gitlabhq_production已经有了ci 相关的数据,导致有了ci库之后,走gitlabhq_production_ci 避免看不到之前ci相关的数据

# 备份 gitlabhq_production
/opt/gitlab/embedded/bin/pg_dump -h 10.100.10.53 -p 5432 -U gitlab -d gitlabhq_production -f database.sql# 恢复到 gitlabhq_production_ci
/opt/gitlab/embedded/bin/psql -h 10.100.10.53 -p 5432 -U gitlab -d gitlabhq_production_ci -f database.sql
gitlab-ctl reconfigure 
# 重启服务
gitlab-ctl restart

4. 测试效果

在这里插入图片描述

5. gitlab配置使用多数据库(无ci相关数据的基础上)

同上述的配置方式,只是在reconfigure前添加环境变量,如

5.1 停止服务

gitlab-ctl stop

5.2 添加配置如下(/etc/gitlab/gitlab.rb)

gitlab_rails['env'] = { 'GITLAB_ALLOW_SEPARATE_CI_DATABASE' => 'true' }
gitlab_rails['databases']['ci']['enable'] = true
gitlab_rails['databases']['ci']['db_database'] = 'gitlabhq_production_ci'
gitlab-ctl reconfigure

5.3 ci库初始化

重新配置极狐GitLab 应该会创建 gitlabhq_production_ci。如果没有,请手动创建 gitlabhq_production_ci。

sudo gitlab-ctl start postgresql
sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d template1 -c "CREATE DATABASE gitlabhq_production_ci OWNER gitlab;"
export DISABLE_DATABASE_ENVIRONMENT_CHECK=1 && gitlab-rake db:schema:load:ci

5.4 对 main 数据库中的 ci 表进行锁定写入,反之亦然

gitlab-ctl start postgresql
gitlab-rake gitlab:db:lock_writes

5.5 重启GitLab

gitlab-ctl restart

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用排序算法之插入排序

目录 前言 一、基本原理 1.算法步骤 2.动画演示 3.插入排序的实现代码 二、插入排序的时间复杂度 1. 时间复杂度 1.最优时间复杂度 2.最差时间复杂度 3.平均时间复杂度 2. 空间复杂度 三、插入排序的优缺点 1.优点 2.缺点 四、插入排序的改进与变种 五、插入排…

【机器学习实战入门】使用OpenCV进行性别和年龄检测

Gender and Age Detection Python 项目 首先,向您介绍用于此高级 Python 项目的性别和年龄检测中的术语: 什么是计算机视觉? 计算机视觉是一门让计算机能够像人类一样观察和识别数字图像和视频的学科。它面临的挑战大多源于对生物视觉有限的了解。计算机视觉涉及获取、处…

python爬虫的学习流程(1-前提准备)

这里主要记录一下我的python爬虫初级的学习的流程 1.python爬虫入门实战课 什么是爬虫&#xff1f;众说纷纭&#xff0c;我们引用维基百科上对网络爬虫的介绍&#xff1a; 网络爬虫&#xff08;英语&#xff1a;Web crawler&#xff09;&#xff0c;也叫网络蜘蛛&#xff08;…

语音技术在播客领域的应用(2)

播客是以语音为主&#xff0c;各种基于AI 的语音技术在播客领域十分重要。 语音转文本 Whisper Whisper 是OpenAI 推出的开源语音辨识工具&#xff0c;可以把音档转成文字&#xff0c;支援超过50 种语言。这款工具是基于68 万小时的训练资料&#xff0c;其中包含11.7 万小时的…

PyTorch使用教程(13)-一文搞定模型的可视化和训练过程监控

一、简介 在现代深度学习的研究和开发中&#xff0c;模型的可视化和监控是不可或缺的一部分。PyTorch&#xff0c;作为一个流行的深度学习框架&#xff0c;通过其丰富的生态系统提供了多种工具来满足这一需求。其中&#xff0c;torch.utils.tensorboard 是一个强大的接口&…

C#语言的学习路线

C#语言的学习路线 C#作为一种现代编程语言&#xff0c;凭借其简洁的语法、强大的功能和广泛的应用&#xff0c;得到了越来越多开发者的青睐。无论是开发桌面应用、Web应用、游戏&#xff0c;还是云服务&#xff0c;C#都有着广泛的应用场景。本文将为有志于学习C#的读者提供一条…

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证6)

重新创建WebApi项目&#xff0c;安装Microsoft.AspNetCore.Authentication.JwtBearer包&#xff0c;将之前JwtBearer测试项目中的初始化函数&#xff0c;jwt配置类、token生成类全部挪到项目中。   重新编写login函数&#xff0c;之前测试Cookie和Session认证时用的函数适合m…

第8章:Python TDD处理货币类代码重复问题

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…

Java 设计模式 二 单例模式 (Singleton Pattern)

单例模式 (Singleton Pattern) 是一种常见的设计模式&#xff0c;属于创建型模式。它的核心思想是确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。通常用于那些需要全局控制的场景&#xff0c;比如配置管理、日志系统、数据库连接池等。 1. 单例模式的…

【Linux系统】—— 编译器 gcc/g++ 的使用

【Linux系统】—— 编译器 gcc/g 的使用 1 用 gcc 直接编译2 翻译环境2.1 预处理&#xff08;进行宏替换&#xff09;2.2 编译&#xff08;生成汇编&#xff09;2.3 汇编&#xff08;生成机器可识别代码&#xff09;2.4 链接2.5 记忆小技巧2.6 编译方式2.7 几个问题2.7.1 如何理…

[已解决]chatgpt被降智了怎么办?(无法联网、识别图片、文件、画图)

文章目录 1、治标办法一发图2、治本方法—使用ChatGPT中国区代理官方站点 1、治标办法一发图 该方法原本就有&#xff0c;但是在1.1日ChatGPT降智事件中突然失效。于1月11日&#xff0c;该方法又突然有效&#xff0c;因此也标志着本次ChatGPT降智事件的结束。当你ChatGPT出现降…

缓存、数据库双写一致性解决方案

双写一致性问题的核心是确保数据库和缓存之间的数据同步&#xff0c;以避免缓存与数据库数据不同步的问题&#xff0c;尤其是在高并发和异步环境下。本文将探讨双写一致性面临的主要问题和解决方案&#xff0c;重点关注最终一致性。 本文讨论的是最终一致性问题 双写一致性面…

element el-table合并单元格

合并 表格el-table添加方法:span-method"” <el-table v-loading"listLoading" :data"SHlist" ref"tableList" element-loading-text"Loading" border fit highlight-current-row :header-cell-style"headClass" …

【学习总结|DAY034】Maven高级

在 Web 后端开发中&#xff0c;Maven 作为强大的项目管理工具&#xff0c;其高级特性对于优化项目结构、提高开发效率至关重要。本文将结合实际代码示例&#xff0c;深入介绍 Maven 的分模块设计与开发、继承与聚合以及私服相关知识。 一、分模块设计与开发 &#xff08;一&a…

qml OpacityMask详解

1、概述 OpacityMask是QML&#xff08;Qt Meta-Object Language&#xff09;中的一种图形效果&#xff0c;它使用另一个项目&#xff08;通常是一个图像或图形项&#xff09;作为遮罩来控制源项目的透明度。这种效果允许开发者通过遮罩的alpha通道来精确地控制源项目中哪些部分…

RabbitMQ1-消息队列

目录 MQ的相关概念 什么是MQ 为什么要用MQ MQ的分类 MQ的选择 RabbitMQ RabbitMQ的概念 四大核心概念 RabbitMQ的核心部分 各个名词介绍 MQ的相关概念 什么是MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&am…

html简单项目案例

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数据展示</title><style>/* 全局…

渗透测试之SSRF漏洞原理 危害 产生的原因 探测手法 防御手法 绕过手法 限制的手段

目录 SSRF说明: SSRF攻击流程 原理&#xff1a; 危害: SSRF产生的原因 ssrf漏洞利用{危害} 探测手法是否存在SSRF漏洞 如何找ssrf漏洞位置 分享连接地址 google hack url关键字 PHP语言中可能出现的ssrf漏洞函数 file_get_contents sockopen() curl_exec() SSRF…

centos9编译安装opensips 二【进阶篇-定制目录+模块】推荐

环境&#xff1a;centos9 last opensips -V version: opensips 3.6.0-dev (x86_64/linux) flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, HP_MALLOC, DBG_MALLOC, CC_O0, FAST_LOCK-ADAPTIVE_WAIT ADAPTIVE_WAIT_LOOPS1024, MAX_RE…

HDFS的Java API操作

注&#xff1a;下述步骤仅供参考&#xff0c;具体指令和操作截图的word版本可见上方本博文免费资源绑定。 1、配置案例环境 2、添加Maven库依赖 3、获取客户端对象 4、上传文件到HDFS 5、从HDFS下载文件 6、目录操作 7、查看目录中的文件信息 8、在Windows中配置Hadoop…