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;…

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

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

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

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

【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" …

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…

渗透测试之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…

【前端】CSS学习笔记(1)

目录 CSS的简介CSS的概念语法 CSS的引入方式内联样式&#xff08;行内样式&#xff09;内部样式外部样式&#xff08;推荐&#xff09; 选择器全局选择器元素选择器类选择器ID选择器合并选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器伪类选择器:link:visited:hover:ac…

Java面试专题——面向对象

面向过程和面向对象的区别 面向过程&#xff1a;当事件比较简单的时候&#xff0c;利用面向过程&#xff0c;注重的是事件的具体的步骤/过程&#xff0c;注重的是过程中的具体的行为&#xff0c;以函数为最小单位&#xff0c;考虑怎么做。 面向对象&#xff1a;注重找“参与者…

电阻电位器可调电阻信号隔离变送器典型应用

电阻电位器可调电阻信号隔离变送器典型应用 产品描述&#xff1a; 深圳鑫永硕科技的XYS-5587系列是一进一出线性电子尺(电阻/电位计信号及位移)信号隔离变送器&#xff0c;是将输入电阻,线性电子尺,角度位移传感器信号进行采集,隔离,放大并转换成模拟量信号的小型仪表设备,并以…

Alluxio 联手 Solidigm 推出针对 AI 工作负载的高级缓存解决方案

作者&#xff1a;Wayne Gao, Yi Wang, Jie Chen, Sarika Mehta Alluxio 作为全球领先的 AI 缓存解决方案供应商&#xff0c; 提供针对 GPU 驱动 AI 负载的高速缓存。其可扩展架构支持数万个节点&#xff0c;能显著降低存储带宽的消耗。Alluxio 在解决 AI 存储挑战方面的前沿技…

文件系统格式RAW数据恢复全攻略

一、RAW文件系统格式深度解析 在数据存储的世界里&#xff0c;文件系统扮演着至关重要的角色&#xff0c;它负责管理和组织硬盘、U盘、SD卡等存储设备上的数据。而RAW文件系统格式&#xff0c;作为一种特殊状态&#xff0c;常常让许多用户感到困惑与不安。RAW格式并非一种标准…

探索 Stable-Diffusion-Webui-Forge:更快的AI图像生成体验

目录 简介&#x1f31f; 主要特点&#x1f4e5; 安装步骤1. 下载2. 配置环境和安装依赖3. 模型目录说明 &#x1f680; 运行 Stable-Diffusion-Webui-Forge1. 进入项目目录2. 运行项目3. 打开页面 &#x1f3a8; 使用体验常见问题&#x1f4dd; 小结 简介 Stable-Diffusion-We…

汇编与逆向(一)-汇编工具简介

RadASM是一款著名的WIN32汇编编辑器&#xff0c;支持MASM、TASM等多种汇编编译器&#xff0c;Windows界面&#xff0c;支持语法高亮&#xff0c;自带一个资源编辑器和一个调试器。 一、汇编IDE工具&#xff1a;RadASM RadASM有内置的语言包 下载地址&#xff1a;RadASM asse…