# Geo Frequently Asked Questions > 原文:[https://docs.gitlab.com/ee/administration/geo/replication/faq.html](https://docs.gitlab.com/ee/administration/geo/replication/faq.html) * [What are the minimum requirements to run Geo?](#what-are-the-minimum-requirements-to-run-geo) * [How does Geo know which projects to sync?](#how-does-geo-know-which-projects-to-sync) * [Can I use Geo in a disaster recovery situation?](#can-i-use-geo-in-a-disaster-recovery-situation) * [What data is replicated to a **secondary** node?](#what-data-is-replicated-to-a-secondary-node) * [Can I `git push` to a **secondary** node?](#can-i-git-push-to-a-secondary-node) * [How long does it take to have a commit replicated to a **secondary** node?](#how-long-does-it-take-to-have-a-commit-replicated-to-a-secondary-node) * [What if the SSH server runs at a different port?](#what-if-the-ssh-server-runs-at-a-different-port) * [Is this possible to set up a Docker Registry for a **secondary** node that mirrors the one on the **primary** node?](#is-this-possible-to-set-up-a-docker-registry-for-a-secondary-node-that-mirrors-the-one-on-the-primary-node) # Geo Frequently Asked Questions[](#geo-frequently-asked-questions-premium-only "Permalink") ## What are the minimum requirements to run Geo?[](#what-are-the-minimum-requirements-to-run-geo "Permalink") 要求[在索引页面](index.html#requirements-for-running-geo)上列出 ## How does Geo know which projects to sync?[](#how-does-geo-know-which-projects-to-sync "Permalink") 在每个**辅助**节点上,都有一个 GitLab 数据库的只读复制副本. **辅助**节点还具有跟踪数据库,其中存储了已同步的项目. Geo 比较这两个数据库以查找尚未跟踪的项目. 首先,此跟踪数据库为空,因此 Geo 将开始尝试从它在 GitLab 数据库中可以看到的每个项目中进行更新. 对于每个要同步的项目: 1. Geo 将发出`git fetch geo --mirror`来从**主**节点获取最新信息. 如果没有更改,则同步将很快并快速结束. 否则,它将提取最新的提交. 2. **辅助**节点将更新跟踪数据库,以存储它已同步项目 A,B,C 等的事实. 3. 重复直到所有项目都同步. 当有人将提交推送到**主**节点时,它将在 GitLab 数据库中生成一个事件,说明存储库已更改. **辅助**节点看到此事件,将有问题的项目标记为脏,并计划重新同步该项目. 为确保管道问题(例如,同步失败太多或丢失的作业)不会永久停止项目同步,Geo 还会定期检查跟踪数据库中是否有标记为脏的项目. 当并发同步数降到`repos_max_capacity`以下并且没有新的项目等待同步时,将进行此检查. Geo 还具有校验和功能,可在所有对 SHA 值的 Git 引用中运行 SHA256 和. 如果**主**节点和**辅助**节点之间的引用不匹配,则**辅助**节点会将项目标记为脏项目,然后尝试重新同步. 因此,即使我们拥有一个过时的跟踪数据库,验证也应激活并找到存储库状态中的差异并重新同步. ## Can I use Geo in a disaster recovery situation?[](#can-i-use-geo-in-a-disaster-recovery-situation "Permalink") 是的,但是我们复制的内容有局限性(请参阅将[哪些数据复制到**辅助**节点?](#what-data-is-replicated-to-a-secondary-node) ). 阅读[灾难恢复](../disaster_recovery/index.html)文档. ## What data is replicated to a **secondary** node?[](#what-data-is-replicated-to-a-secondary-node "Permalink") 当前,我们复制项目存储库,LFS 对象,生成的附件/化身以及整个数据库. 这意味着用户帐户,问题,合并请求,组,项目数据等将可用于查询. ## Can I `git push` to a **secondary** node?[](#can-i-git-push-to-a-secondary-node "Permalink") 是! [GitLab Premium](https://about.gitlab.com/pricing/#self-managed) 11.3 中[引入](https://about.gitlab.com/releases/2018/09/22/gitlab-11-3-released/)了直接推送到**辅助**节点(对于 HTTP 和 SSH,包括 Git LFS). ## How long does it take to have a commit replicated to a **secondary** node?[](#how-long-does-it-take-to-have-a-commit-replicated-to-a-secondary-node "Permalink") 所有复制操作都是异步的,并排队等待分派. 因此,这取决于很多因素,包括流量,提交的大小,节点之间的连接,硬件等. ## What if the SSH server runs at a different port?[](#what-if-the-ssh-server-runs-at-a-different-port "Permalink") 很好 我们使用 HTTP 来获取从**主**节点到所有**辅助**节点的存储库更改. ## Is this possible to set up a Docker Registry for a **secondary** node that mirrors the one on the **primary** node?[](#is-this-possible-to-set-up-a-docker-registry-for-a-secondary-node-that-mirrors-the-one-on-the-primary-node "Permalink") 是. 有关[**辅助**节点,](docker_registry.html)请参见[Docker Registry](docker_registry.html) .