Geo data types support
Geo data types support
地理数据类型是一个或多个 GitLab 功能存储相关信息所需的特定数据类别.
要使用 Geo 复制这些功能生成的数据,我们使用几种策略来访问,传输和验证它们.
当前,我们区分三种不同的数据类型:
请参阅下面列出的我们复制的每个功能或组件,其对应的数据类型,复制和验证方法的列表:
- ( 1 ):Redis 复制可与 Redis 前哨一起用作 HA 的一部分. 在地理节点之间不使用它.
- ( 2 ):对象存储复制可以通过 Geo 或您的对象存储提供者/设备本机复制功能来执行.
一个 GitLab 实例可以具有一个或多个存储库分片. 每个分片都有一个 Gitaly 实例,该实例负责允许对本地存储的 Git 存储库进行访问和操作. 它可以在具有单个磁盘,作为单个安装点安装多个磁盘(如 RAID 阵列)或使用 LVM 的计算机上运行.
它不需要特殊的文件系统,并且可以与 NFS 或已安装的 Storage Appliance 一起使用(使用远程文件系统时可能会有性能限制).
- 使用常规的 Git 从一个 Geo 节点到另一个 Geo 节点的克隆/获取(具有特殊身份验证).
- 使用存储库快照(用于第一种方法失败或存储库损坏时).
- 从管理界面手动触发(上述两者的组合).
每个项目最多可以有 3 个不同的存储库:
- 一个项目存储库,其中存储了源代码.
- Wiki 存储库,用于存储 Wiki 内容.
- 一个设计库,在其中对设计工件进行索引(资产实际上在 LFS 中).
他们都住在同一个碎片,并用共享相同的基础名称和-design
用于 Wiki 以及设计资源库的情况下后缀.
GitLab 将文件和 Blob(例如 Issue 附件或 LFS 对象)存储到以下任一位置:
- 特定位置的文件系统.
当使用文件系统存储而不是对象存储时,如果使用多个服务器,则需要使用网络安装的文件系统来运行 GitLab.
关于复制和验证:
- 我们使用内部 API 请求传输文件和 Blob.
- 使用对象存储,您可以:
- 使用云提供程序复制功能.
- 让 GitLab 为您复制它.
对于不同的用例,GitLab 依赖于存储在多个数据库中的数据. PostgreSQL 是 Web 界面中用户生成的内容(例如问题内容,注释以及权限和凭据)的唯一事实.
我们使用 PostgreSQL 自己的复制功能将数据从主节点复制到辅助节点.
我们将 Redis 用作缓存存储并为我们的后台作业系统保留持久性数据. 由于这两个用例都具有同一地理节点专有的数据,因此我们不在节点之间复制它.
Elasticsearch 是一个可选数据库,可以启用高级搜索功能,例如源代码级别的改进的全局搜索以及”问题/合并请求”和讨论中用户生成的内容. 目前,Geo 不支持此功能.
Limitations on replication/verification
下表列出了 GitLab 功能及其在辅助节点上的复制和验证状态.
您可以跟踪实现这些史诗/问题中缺少的项目的进度:
危险:不在此列表上或”已复制”列中具有” 否”的功能不会在辅助节点上复制. 如果不从这些功能中手动复制数据而进行故障转移,将导致数据丢失 . 如果希望在辅助节点上使用这些功能或成功执行故障转移,则必须使用其他方法复制它们的数据.
Feature | 复制(在 GitLab 版本中添加) | 已验证(在 GitLab 版本中添加) | Notes | |
---|---|---|---|---|
PostgreSQL 中的应用程序数据 | Yes (10.2) | Yes (10.2) | ||
项目资料库 | Yes (10.2) | Yes (10.7) | ||
项目 Wiki 资料库 | Yes (10.2) | Yes (10.7) | ||
项目设计资料库 | Yes (12.7) | No | ||
Uploads | Yes (10.2) | 仅在转移时验证,或手动验证( 1 ) | ||
LFS 对象 | Yes (10.2) | No | 仅在转移时验证,或手动验证( 1 ). 在 11.11.x 和 12.0.x( 2 )中的新 LFS 对象不可用. | |
CI 作业工件(痕迹除外) | Yes (10.4) | 仅手动验证( 1 ) | ||
存档的痕迹 | Yes (10.4) | No | 仅在转移时验证,或手动验证( 1 ) | |
个人摘要 | Yes (10.2) | Yes (10.2) | ||
No | ||||
项目摘要 | Yes (10.2) | Yes (10.2) | ||
用于分支项目重复数据删除的对象池 | Yes | No | ||
Server-side Git hooks | No | No | ||
No | No | |||
No | No | |||
Yes (12.3) | No | |||
NPM Registry | Yes (13.2) | No | ||
Yes (13.2) | No | |||
Conan Repository | Yes (13.2) | No | ||
Yes (13.2) | No | |||
PyPi Repository | Yes (13.2) | No | ||
Yes (13.2) | No | |||
External merge request diffs | No | |||
Terraform State | (3) | No | ||
Vulnerability Export | (3) | No | ||
对象存储中的内容 | Yes (12.4) | No |