🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Geo data types support > 原文:[https://docs.gitlab.com/ee/administration/geo/replication/datatypes.html](https://docs.gitlab.com/ee/administration/geo/replication/datatypes.html) * [Data types](#data-types) * [Git repositories](#git-repositories) * [Blobs](#blobs) * [Database](#database) * [Limitations on replication/verification](#limitations-on-replicationverification) # Geo data types support[](#geo-data-types-support-premium-only "Permalink") 地理数据类型是一个或多个 GitLab 功能存储相关信息所需的特定数据类别. 要使用 Geo 复制这些功能生成的数据,我们使用几种策略来访问,传输和验证它们. ## Data types[](#data-types "Permalink") 当前,我们区分三种不同的数据类型: * [Git repositories](#git-repositories) * [Blobs](#blobs) * [Database](#database) 请参阅下面列出的我们复制的每个功能或组件,其对应的数据类型,复制和验证方法的列表: | Type | 功能/组件 | 复制方式 | 验证方式 | | --- | --- | --- | --- | | Database | PostgreSQL 中的应用程序数据 | Native | Native | | Database | Redis | *N/A* (*1*) | *N/A* | | Database | Elasticsearch | Native | Native | | Database | 个人摘要 | PostgreSQL 复制 | PostgreSQL 复制 | | Database | 项目摘要 | PostgreSQL 复制 | PostgreSQL 复制 | | Database | SSH 公钥 | PostgreSQL 复制 | PostgreSQL 复制 | | Git | 项目资料库 | 地理与吉塔利 | Gitaly 校验和 | | Git | 项目 Wiki 资料库 | 地理与吉塔利 | Gitaly 校验和 | | Git | 项目设计资料库 | 地理与吉塔利 | Gitaly 校验和 | | Git | 用于分支项目重复数据删除的对象池 | 地理与吉塔利 | *未实现* | | Blobs | User uploads *(filesystem)* | 带有 API 的地理位置 | *未实现* | | Blobs | 用户上传*(对象存储)* | 具有 API /托管的地理区域( *2* ) | *未实现* | | Blobs | LFS 对象*(文件系统)* | 带有 API 的地理位置 | *未实现* | | Blobs | LFS 对象*(对象存储)* | 具有 API /托管的地理区域( *2* ) | *未实现* | | Blobs | CI 作业工件*(文件系统)* | 带有 API 的地理位置 | *未实现* | | Blobs | CI 作业工件*(对象存储)* | 具有 API /托管的地理区域( *2* ) | *未实现* | | Blobs | 归档的 CI 构建跟踪*(文件系统)* | 带有 API 的地理位置 | *未实现* | | Blobs | 归档的 CI 构建跟踪*(对象存储)* | 具有 API /托管的地理区域( *2* ) | *未实现* | | Blobs | 容器注册表*(文件系统)* | 使用 API​​ / Docker API 进行地理定位 | *未实现* | | Blobs | 容器注册表*(对象存储)* | 带有 API / Managed / Docker API 的 Geo( *2* ) | *未实现* | | Blobs | 程序包注册表*(文件系统)* | 带有 API 的地理位置 | *未实现* | | Blobs | 程序包注册表*(对象存储)* | 具有 API /托管的地理区域( *2* ) | *未实现* | * ( *1* ):Redis 复制可与 Redis 前哨一起用作 HA 的一部分. 在地理节点之间不使用它. * ( *2* ):对象存储复制可以通过 Geo 或您的对象存储提供者/设备本机复制功能来执行. ### Git repositories[](#git-repositories "Permalink") 一个 GitLab 实例可以具有一个或多个存储库分片. 每个分片都有一个 Gitaly 实例,该实例负责允许对本地存储的 Git 存储库进行访问和操作. 它可以在具有单个磁盘,作为单个安装点安装多个磁盘(如 RAID 阵列)或使用 LVM 的计算机上运行. 它不需要特殊的文件系统,并且可以与 NFS 或已安装的 Storage Appliance 一起使用(使用远程文件系统时可能会有性能限制). 通过 Gitaly 自己的 gRPC API 完成通信. 有三种可能的同步方式: * 使用常规的 Git 从一个 Geo 节点到另一个 Geo 节点的克隆/获取(具有特殊身份验证). * 使用存储库快照(用于第一种方法失败或存储库损坏时). * 从管理界面手动触发(上述两者的组合). 每个项目最多可以有 3 个不同的存储库: * 一个项目存储库,其中存储了源代码. * Wiki 存储库,用于存储 Wiki 内容. * 一个设计库,在其中对设计工件进行索引(资产实际上在 LFS 中). 他们都住在同一个碎片,并用共享相同的基础名称`-wiki`和`-design`用于 Wiki 以及设计资源库的情况下后缀. ### Blobs[](#blobs "Permalink") GitLab 将文件和 Blob(例如 Issue 附件或 LFS 对象)存储到以下任一位置: * 特定位置的文件系统. * [对象存储](../../object_storage.html)解决方案. 对象存储解决方案可以是: * 像 Amazon S3 Google Cloud Storage 一样基于云. * 由您托管(如 MinIO). * 公开与对象存储兼容的 API 的存储设备. 当使用文件系统存储而不是对象存储时,如果使用多个服务器,则需要使用网络安装的文件系统来运行 GitLab. 关于复制和验证: * 我们使用内部 API 请求传输文件和 Blob. * 使用对象存储,您可以: * 使用云提供程序复制功能. * 让 GitLab 为您复制它. ### Database[](#database "Permalink") 对于不同的用例,GitLab 依赖于存储在多个数据库中的数据. PostgreSQL 是 Web 界面中用户生成的内容(例如问题内容,​​注释以及权限和凭据)的唯一事实. PostgreSQL 还可以保存某种程度的缓存数据,例如 HTML 呈现的 Markdown,缓存的合并请求差异(也可以配置为卸载到对象存储中). 我们使用 PostgreSQL 自己的复制功能将数据从**主**节点复制到**辅助**节点. 我们将 Redis 用作缓存存储并为我们的后台作业系统保留持久性数据. 由于这两个用例都具有同一地理节点专有的数据,因此我们不在节点之间复制它. Elasticsearch 是一个可选数据库,可以启用高级搜索功能,例如源代码级别的改进的全局搜索以及"问题/合并请求"和讨论中用户生成的内容. 目前,Geo 不支持此功能. ## Limitations on replication/verification[](#limitations-on-replicationverification "Permalink") 下表列出了 GitLab 功能及其在**辅助**节点上的复制和验证状态. 您可以跟踪实现这些史诗/问题中缺少的项目的进度: * [Unreplicated Data Types](https://gitlab.com/groups/gitlab-org/-/epics/893) * [Verify all replicated data](https://gitlab.com/groups/gitlab-org/-/epics/1430) **危险:**不在此列表上或"已**复制"**列中具有" **否"的**功能不会在**辅助**节点上复制. 如果不从这些功能中手动复制数据而进行故障转移,将导致数据**丢失** . 如果希望在**辅助**节点上使用这些功能或成功执行故障转移,则必须使用其他方法复制它们的数据. | 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](https://gitlab.com/gitlab-org/gitlab/-/issues/32467) |   |   | | Uploads | **Yes** (10.2) | [No](https://gitlab.com/groups/gitlab-org/-/epics/1817) | 仅在转移时验证,或手动验证( *1* ) |   | | LFS 对象 | **Yes** (10.2) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/8922) | 仅在转移时验证,或手动验证( *1* ). 在 11.11.x 和 12.0.x( *2* )中的新 LFS 对象不可用. |   | | CI 作业工件(痕迹除外) | **Yes** (10.4) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/8923) | 仅手动验证( *1* ) |   | | 存档的痕迹 | **Yes** (10.4) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/8923) | 仅在转移时验证,或手动验证( *1* ) |   | | 个人摘要 | **Yes** (10.2) | **Yes** (10.2) |   |   | | [Versioned snippets](../../../user/snippets.html#versioned-snippets) | [No](https://gitlab.com/groups/gitlab-org/-/epics/2809) | [No](https://gitlab.com/groups/gitlab-org/-/epics/2810) |   |   | | 项目摘要 | **Yes** (10.2) | **Yes** (10.2) |   |   | | 用于分支项目重复数据删除的对象池 | **Yes** | No |   |   | | [Server-side Git hooks](../../server_hooks.html) | No | No |   |   | | [Elasticsearch integration](../../../integration/elasticsearch.html) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/1186) | No |   |   | | [GitLab Pages](../../pages/index.html) | [No](https://gitlab.com/groups/gitlab-org/-/epics/589) | No |   |   | | [Container Registry](../../packages/container_registry.html) | **Yes** (12.3) | No |   |   | | [NPM Registry](../../../user/packages/npm_registry/index.html) | **Yes** (13.2) | No |   |   | | [Maven Repository](../../../user/packages/maven_repository/index.html) | **Yes** (13.2) | No |   |   | | [Conan Repository](../../../user/packages/conan_repository/index.html) | **Yes** (13.2) | No |   |   | | [NuGet Repository](../../../user/packages/nuget_repository/index.html) | **Yes** (13.2) | No |   |   | | [PyPi Repository](../../../user/packages/pypi_repository/index.html) | **Yes** (13.2) | No |   |   | | [Composer Repository](../../../user/packages/composer_repository/index.html) | **Yes** (13.2) | No |   |   | | [External merge request diffs](../../merge_request_diffs.html) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/33817) | No |   |   | | [Terraform State](../../terraform_state.html) | [No](https://gitlab.com/groups/gitlab-org/-/epics/3112)(*3*) | No |   |   | | [Vulnerability Export](../../../user/application_security/security_dashboard/#export-vulnerabilities) | [No](https://gitlab.com/groups/gitlab-org/-/epics/3111)(*3*) | No |   |   | | 对象存储中的内容 | **Yes** (12.4) | No |   |   | * ( *1* ):可以使用两个节点上的[完整性检查瑞克任务](../../raketasks/check.html)并比较它们之间的输出来手动验证[完整性](../../raketasks/check.html) . * ( *2* ):GitLab 版本 11.11.x 和 12.0.x 受到[一个错误的](https://gitlab.com/gitlab-org/gitlab/-/issues/32696)影响, [该错误阻止了任何新的 LFS 对象的复制](https://gitlab.com/gitlab-org/gitlab/-/issues/32696) . * ( *3* ):如果使用的是对象存储,则可以通过对象存储提供程序执行复制(如果支持). 请参阅[带有对象存储的地理位置](object_storage.html)