Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/group/import/index.md')
-rw-r--r--doc/user/group/import/index.md76
1 files changed, 72 insertions, 4 deletions
diff --git a/doc/user/group/import/index.md b/doc/user/group/import/index.md
index 154eb467ece..b645ea04038 100644
--- a/doc/user/group/import/index.md
+++ b/doc/user/group/import/index.md
@@ -4,7 +4,7 @@ group: Import and Integrate
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---
-# Migrating GitLab groups **(FREE)**
+# Migrating GitLab groups **(FREE ALL)**
You can migrate GitLab groups:
@@ -64,6 +64,53 @@ groups are in the same GitLab instance. Transferring groups is a faster and more
See [epic 6629](https://gitlab.com/groups/gitlab-org/-/epics/6629) for a list of known issues for migrating by direct
transfer.
+### Estimating migration duration
+
+Estimating the duration of migration by direct transfer is difficult. The following factors affect migration duration:
+
+- Hardware and database resources available on the source and destination GitLab instances. More resources on the source and destination instances can result in
+ shorter migration duration because:
+ - The source instance receives API requests, and extracts and serializes the entities to export.
+ - The destination instance runs the jobs and creates the entities in its database.
+- Complexity and size of data to be exported. For example, imagine you want to migrate two different projects with 1000 merge requests each. The two projects can take
+ very different amounts of time to migrate if one of the projects has a lot more attachments, comments, and other items on the merge requests. Therefore, the number
+ of merge requests on a project is a poor predictor of how long a project will take to migrate.
+
+There’s no exact formula to reliably estimate a migration. However, the average durations of each pipeline worker importing a project relation can help you to get an idea of how long importing your projects might take:
+
+| Project resource type | Average time (in seconds) to import a record |
+|:----------------------------|:---------------------------------------------|
+| Empty Project | 2.4 |
+| Repository | 20 |
+| Project Attributes | 1.5 |
+| Members | 0.2 |
+| Labels | 0.1 |
+| Milestones | 0.07 |
+| Badges | 0.1 |
+| Issues | 0.1 |
+| Snippets | 0.05 |
+| Snippet Repositories | 0.5 |
+| Boards | 0.1 |
+| Merge Requests | 1 |
+| External Pull Requests | 0.5 |
+| Protected Branches | 0.1 |
+| Project Feature | 0.3 |
+| Container Expiration Policy | 0.3 |
+| Service Desk Setting | 0.3 |
+| Releases | 0.1 |
+| CI Pipelines | 0.2 |
+| Commit Notes | 0.05 |
+| Wiki | 10 |
+| Uploads | 0.5 |
+| LFS Objects | 0.5 |
+| Design | 0.1 |
+| Auto DevOps | 0.1 |
+| Pipeline Schedules | 0.5 |
+| References | 5 |
+| Push Rule | 0.1 |
+
+If you are migrating large projects and encounter problems with timeouts or duration of the migration, see [Reducing migration duration](#reducing-migration-duration).
+
### Limits
Hardcoded limits apply on migration by direct transfer.
@@ -77,7 +124,6 @@ Hardcoded limits apply on migration by direct transfer.
| 50 MB | Maximum length an NDJSON row can have. |
| 5 minutes | Maximum number of seconds until an empty export status on source instance is raised. |
| 8 hours | Time until migration times out. |
-| 90 minutes | Time the destination is waiting for export to complete. |
You can test the maximum relation size limit using these APIs:
@@ -91,8 +137,12 @@ If either API produces files larger than the maximum relation size limit, group
After migration:
- Private groups and projects stay private.
+- Internal groups and projects:
+ - Stay internal when copied into an internal group unless internal visibility is [restricted](../../../administration/settings/visibility_and_access_controls.md#restrict-visibility-levels). In that case, the groups and projects become private.
+ - Become private when copied into a private group.
- Public groups and projects:
- - Stay public when copied into a public group.
+ - Stay public when copied into a public group unless public visibility is [restricted](../../../administration/settings/visibility_and_access_controls.md#restrict-visibility-levels). In that case, the groups and projects become internal.
+ - Become internal when copied into an internal group unless internal visibility is [restricted](../../../administration/settings/visibility_and_access_controls.md#restrict-visibility-levels). In that case, the groups and projects become private.
- Become private when copied into a private group.
If you used a private network on your source instance to hide content from the general public,
@@ -429,6 +479,24 @@ You can receive other `404` errors when importing a group, for example:
This error indicates a problem transferring from the _source_ instance. To solve this, check that you have met the [prerequisites](#prerequisites) on the source
instance.
+#### Reducing migration duration
+
+A single direct transfer migration runs 5 entities (groups or projects) per import at a time, independent of the number of workers available on the destination instance.
+That said, having more workers on the destination instance speeds up migration by decreasing the time it takes to import each entity.
+
+Increasing the number of workers on the destination instance helps reduce the migration duration until the source instance hardware resources are saturated. Exporting and importing relations in batches (proposed in [epic 9036](https://gitlab.com/groups/gitlab-org/-/epics/9036)) will make having enough available workers on
+the destination instance even more useful.
+
+The number of workers on the source instance should be enough to export the 5 concurrent entities in parallel (for each running import). Otherwise, there can be
+delays and potential timeouts as the destination is waiting for exported data to become available.
+
+Distributing projects in different groups helps to avoid timeouts. If several large projects are in the same group, you can:
+
+1. Move large projects to different groups or subgroups.
+1. Start separate migrations each group and subgroup.
+
+The GitLab UI can only migrate top-level groups. Using the API, you can also migrate subgroups.
+
## Migrate groups by uploading an export file (deprecated)
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/2888) in GitLab 13.0 as an experimental feature. May change in future releases.
@@ -581,7 +649,7 @@ To help avoid abuse, by default, users are rate limited to:
| Download export | 1 download per group per minute |
| Import | 6 groups per minute |
-## Automate group and project import **(PREMIUM)**
+## Automate group and project import **(PREMIUM ALL)**
For information on automating user, group, and project import API calls, see
[Automate group and project import](../../project/import/index.md#automate-group-and-project-import).