summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlia Shakhov <[email protected]>2026-04-28 14:31:20 +0300
committerGitHub <[email protected]>2026-04-28 14:31:20 +0300
commitaebbe3e308037d98ce63bde50f1ebbe3087c19e7 (patch)
tree38d16453eae2ff21aed605d23b025d58925243f0
parente37c7c2afe313a5b0f71212bc16873190299027e (diff)
Add system tablet backup docs (#38408)
Co-authored-by: Ilia Shakhov <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: Stepan Beloyarov <[email protected]>
-rw-r--r--ydb/docs/redirects.yaml4
-rw-r--r--ydb/docs/ru/core/concepts/backup.md2
-rw-r--r--ydb/docs/ru/core/concepts/datamodel/backup-collection.md4
-rw-r--r--ydb/docs/ru/core/devops/backup-and-recovery/index.md (renamed from ydb/docs/ru/core/devops/backup-and-recovery.md)31
-rw-r--r--ydb/docs/ru/core/devops/backup-and-recovery/system-tablet-backup.md271
-rw-r--r--ydb/docs/ru/core/devops/backup-and-recovery/toc_p.yaml3
-rw-r--r--ydb/docs/ru/core/devops/concepts/index.md2
-rw-r--r--ydb/docs/ru/core/devops/index.md2
-rw-r--r--ydb/docs/ru/core/devops/toc_p.yaml5
-rw-r--r--ydb/docs/ru/core/recipes/backup-collections/index.md2
-rw-r--r--ydb/docs/ru/core/reference/configuration/index.md1
-rw-r--r--ydb/docs/ru/core/reference/configuration/resource_broker_config.md4
-rw-r--r--ydb/docs/ru/core/reference/configuration/system_tablet_backup_config.md22
-rw-r--r--ydb/docs/ru/core/reference/configuration/toc_p.yaml2
-rw-r--r--ydb/docs/ru/core/reference/ydb-cli/export-import/toc_i.yaml2
-rw-r--r--ydb/docs/ru/core/yql/reference/syntax/backup.md2
-rw-r--r--ydb/docs/ru/core/yql/reference/syntax/restore-backup-collection.md2
17 files changed, 333 insertions, 28 deletions
diff --git a/ydb/docs/redirects.yaml b/ydb/docs/redirects.yaml
index 6ee862024ff..435b7d56741 100644
--- a/ydb/docs/redirects.yaml
+++ b/ydb/docs/redirects.yaml
@@ -508,6 +508,10 @@ ru:
to: /concepts/query_execution/optimizer.md
- from: /concepts/federated_query/(.*)$
to: /concepts/query_execution/federated_query/$1
+ - from: /devops/manual/backup-and-recovery.md
+ to: /devops/backup-and-recovery/index.md
+ - from: /devops/backup-and-recovery.md
+ to: /devops/backup-and-recovery/index.md
en:
- from: /concepts/query_execution/index.md
diff --git a/ydb/docs/ru/core/concepts/backup.md b/ydb/docs/ru/core/concepts/backup.md
index 7e8208d046b..0fd414702ce 100644
--- a/ydb/docs/ru/core/concepts/backup.md
+++ b/ydb/docs/ru/core/concepts/backup.md
@@ -74,7 +74,7 @@
## См. также
- [Коллекции резервных копий](datamodel/backup-collection.md) — архитектура и ограничения
-- [Резервное копирование и восстановление](../devops/backup-and-recovery.md) — практическое руководство
+- [Резервное копирование и восстановление](../devops/backup-and-recovery/index.md) — практическое руководство
- [Справочник export/import](../reference/ydb-cli/export-import/index.md) — команды CLI
- Справочник YQL:
- [`CREATE BACKUP COLLECTION`](../yql/reference/syntax/create-backup-collection.md)
diff --git a/ydb/docs/ru/core/concepts/datamodel/backup-collection.md b/ydb/docs/ru/core/concepts/datamodel/backup-collection.md
index 53b5e6a5fc3..baca872fd5b 100644
--- a/ydb/docs/ru/core/concepts/datamodel/backup-collection.md
+++ b/ydb/docs/ru/core/concepts/datamodel/backup-collection.md
@@ -4,7 +4,7 @@
{% note info %}
-Практические инструкции по созданию и управлению коллекциями резервных копий см. в разделе [Коллекции резервных копий](../../devops/backup-and-recovery.md#backup-collections) документа «Резервное копирование и восстановление».
+Практические инструкции по созданию и управлению коллекциями резервных копий см. в разделе [Коллекции резервных копий](../../devops/backup-and-recovery/index.md#backup-collections) документа «Резервное копирование и восстановление».
{% endnote %}
@@ -170,7 +170,7 @@ block-beta
## См. также
- [Концепции резервного копирования](../backup.md): Обзор всех подходов к резервному копированию в {{ ydb-short-name }}
-- [Резервное копирование и восстановление: коллекции резервных копий](../../devops/backup-and-recovery.md#backup-collections): пошаговые сценарии и команды CLI
+- [Резервное копирование и восстановление: коллекции резервных копий](../../devops/backup-and-recovery/index.md#backup-collections): пошаговые сценарии и команды CLI
- [Рецепты и примеры](../../recipes/backup-collections/index.md): Типовые сценарии и примеры
- Справочник YQL:
- [CREATE BACKUP COLLECTION](../../yql/reference/syntax/create-backup-collection.md)
diff --git a/ydb/docs/ru/core/devops/backup-and-recovery.md b/ydb/docs/ru/core/devops/backup-and-recovery/index.md
index 92cd53d2e26..49e77a83ebf 100644
--- a/ydb/docs/ru/core/devops/backup-and-recovery.md
+++ b/ydb/docs/ru/core/devops/backup-and-recovery/index.md
@@ -1,14 +1,14 @@
# Резервное копирование и восстановление
-{{ ydb-short-name }} изначально спроектирована для сохранности данных при отказах оборудования: доступны варианты избыточности для разного числа зон доступности, стоек, хостов, дисков и других компонентов (см. [режимы работы кластера](../concepts/topology.md#cluster-config)). Это снижает риск потери данных из‑за аппаратных сбоев.
+{{ ydb-short-name }} изначально спроектирована для сохранности данных при отказах оборудования: доступны варианты избыточности для разного числа зон доступности, стоек, хостов, дисков и других компонентов (см. [режимы работы кластера](../../concepts/topology.md#cluster-config)). Это снижает риск потери данных из‑за аппаратных сбоев.
Однако данные могут быть утрачены или испорчены **логически**: ошибки или злоумышленные действия могут привести к массовому удалению/искажению данных легитимными для СУБД операциями. В таких случаях отказоустойчивость кластера не заменяет **отдельную копию** данных вне кластера.
Резервное копирование применяется для защиты от таких сценариев и позволяет восстановить данные из резервной копии. Рекомендуется хранить копии на отдельном носителе или в облачном объектном хранилище (например, через [выгрузку в файлы](#files) или [export в S3](#s3)).
-{{ ydb-short-name }} предоставляет несколько решений для выполнения резервного копирования и восстановления. Концептуальную информацию и сравнение методов резервного копирования см. в [концепциях резервного копирования](../concepts/backup.md).
+{{ ydb-short-name }} предоставляет несколько решений для выполнения резервного копирования и восстановления. Концептуальную информацию и сравнение методов резервного копирования см. в [концепциях резервного копирования](../../concepts/backup.md).
-{% include [_includes/backup_and_recovery/options_overlay.md](_includes/backup_and_recovery/options_overlay.md) %}
+{% include [_includes/backup_and_recovery/options_overlay.md](../_includes/backup_and_recovery/options_overlay.md) %}
## {{ ydb-short-name }} CLI {#cli}
@@ -20,7 +20,7 @@
- `{{ ydb-cli }} admin database dump` — для резервного копирования базы данных
- `{{ ydb-cli }} tools dump` — для резервного копирования отдельных схемных объектов или директорий
-Узнать больше об этих командах можно в [{#T}](../reference/ydb-cli/export-import/tools-dump.md).
+Узнать больше об этих командах можно в [{#T}](../../reference/ydb-cli/export-import/tools-dump.md).
Для выполнения восстановления из файловой резервной копии применяются команды:
@@ -28,17 +28,17 @@
- `{{ ydb-cli }} admin database restore` — для восстановления базы данных из резервной копии
- `{{ ydb-cli }} tools restore` — для восстановления отдельных схемных объектов или директорий из резервной копии
-Узнать больше об этих командах можно в [{#T}](../reference/ydb-cli/export-import/tools-restore.md).
+Узнать больше об этих командах можно в [{#T}](../../reference/ydb-cli/export-import/tools-restore.md).
### S3-совместимое хранилище {#s3}
-Для выполнения резервного копирования в S3-совместимое хранилище (например, [AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html)) применяется команда `{{ ydb-cli }} export s3`. Перейдите [по ссылке](../reference/ydb-cli/export-import/export-s3.md) в справочник по {{ ydb-short-name }} CLI для получения информации о данной команде.
+Для выполнения резервного копирования в S3-совместимое хранилище (например, [AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html)) применяется команда `{{ ydb-cli }} export s3`. Перейдите [по ссылке](../../reference/ydb-cli/export-import/export-s3.md) в справочник по {{ ydb-short-name }} CLI для получения информации о данной команде.
-Для выполнения восстановления из резервной копии, созданной в S3-совместимом хранилище, применяется команда `{{ ydb-cli }} import s3`. Перейдите [по ссылке](../reference/ydb-cli/export-import/import-s3.md) в справочник по {{ ydb-short-name }} CLI для получения информации о данной команде.
+Для выполнения восстановления из резервной копии, созданной в S3-совместимом хранилище, применяется команда `{{ ydb-cli }} import s3`. Перейдите [по ссылке](../../reference/ydb-cli/export-import/import-s3.md) в справочник по {{ ydb-short-name }} CLI для получения информации о данной команде.
{% note info %}
-Скорость операций резервного копирования и восстановления в/из S3-совместимого хранилища подобрана таким образом, чтобы минимизировать влияние на пользовательскую нагрузку. Для управления скоростью операций настройте лимиты для соответствующей очереди [брокера ресурсов](../reference/configuration/resource_broker_config.md#resource-broker-config).
+Скорость операций резервного копирования и восстановления в/из S3-совместимого хранилища подобрана таким образом, чтобы минимизировать влияние на пользовательскую нагрузку. Для управления скоростью операций настройте лимиты для соответствующей очереди [брокера ресурсов](../../reference/configuration/resource_broker_config.md#resource-broker-config).
{% endnote %}
@@ -48,17 +48,16 @@
{% endnote %}
-## Коллекции резервных копий {#backup-collections}
+{% include [_includes/backup_and_recovery/cli_overlay.md](../_includes/backup_and_recovery/cli_overlay.md) %}
-Коллекции резервных копий обеспечивают инкрементальное резервное копирование и восстановление на момент времени для производственных нагрузок. Концептуальную информацию и детали архитектуры см. в [Коллекциях резервных копий](../concepts/datamodel/backup-collection.md).
+{% include [_includes/backup_and_recovery/others_overlay.md](../_includes/backup_and_recovery/others_overlay.md) %}
-Коллекции резервных копий рекомендуются для производственных сред с регулярным расписанием резервного копирования и больших наборов данных, где инкрементальные изменения значительно меньше общего объёма. Для более простых сценариев (разовые миграции, среды разработки, небольшие базы данных) рассмотрите использование [export/import](#s3) или [dump/restore](#files).
+## Резервное копирование системных таблеток {#system-tablet-backup}
-Пошаговые инструкции по настройке и использованию коллекций резервных копий см. в:
+Механизм резервного копирования системных таблеток, таких как [Hive](../../concepts/glossary.md#hive), [BSController](../../concepts/glossary.md#ds-controller) и [SchemeShard](../../concepts/glossary.md#scheme-shard), обеспечивает инкрементальное копирование метаданных кластера на локальную файловую систему кластера.
-- [Коллекциях резервных копий](../concepts/datamodel/backup-collection.md) — архитектура, концепции и ограничения
-- [Рецептах для коллекций резервных копий](../recipes/backup-collections/index.md) — типовые сценарии и примеры
+Этот механизм предназначен для восстановления метаданных кластера, когда другие способы восстановления недоступны — например, резервная копия базы данных отсутствует или объём базы данных слишком велик для восстановления из резервной копии за приемлемое время. Механизм позволяет восстановить метаданные в существующем кластере без необходимости пересоздавать кластер и восстанавливать базы данных из резервных копий.
-{% include [_includes/backup_and_recovery/cli_overlay.md](_includes/backup_and_recovery/cli_overlay.md) %}
+Если есть возможность восстановить кластер с помощью команд [export/import](#s3) или [dump/restore](#files), рекомендуется использовать эти способы.
-{% include [_includes/backup_and_recovery/others_overlay.md](_includes/backup_and_recovery/others_overlay.md) %}
+Подробная информация, включая руководство по восстановлению, доступна в разделе [{#T}](./system-tablet-backup.md).
diff --git a/ydb/docs/ru/core/devops/backup-and-recovery/system-tablet-backup.md b/ydb/docs/ru/core/devops/backup-and-recovery/system-tablet-backup.md
new file mode 100644
index 00000000000..5e3660c3122
--- /dev/null
+++ b/ydb/docs/ru/core/devops/backup-and-recovery/system-tablet-backup.md
@@ -0,0 +1,271 @@
+# Резервное копирование системных таблеток
+
+{% note info %}
+
+На текущий момент поддерживается резервное копирование только кластерных системных таблеток. Резервное копирование системных таблеток баз данных не поддерживается.
+
+{% endnote %}
+
+Механизм резервного копирования системных таблеток обеспечивает инкрементальное копирование метаданных кластера — таких как [Hive](../../concepts/glossary.md#hive), [BSController](../../concepts/glossary.md#ds-controller) и [SchemeShard](../../concepts/glossary.md#scheme-shard) — на локальную файловую систему хостов кластера.
+
+Этот механизм предназначен для восстановления метаданных кластера, когда другие способы восстановления недоступны — например, резервная копия базы данных отсутствует или объём базы данных слишком велик для восстановления ее из резервной копии за приемлемое время. Механизм позволяет восстановить метаданные в существующем кластере без необходимости пересоздавать кластер и восстанавливать базы данных из резервных копий.
+
+Если есть возможность восстановить кластер с помощью команд [export/import](./index.md#s3) или [dump/restore](./index.md#files), рекомендуется использовать эти способы.
+
+{% note warning %}
+
+Резервные копии разных системных таблеток создаются независимо друг от друга и не согласованы между собой. После восстановления состояние таблеток может оказаться несогласованным, что может негативно влиять на работу кластера.
+
+{% endnote %}
+
+## Принцип работы {#how-it-works}
+
+Резервное копирование состоит из двух компонентов:
+
+- **Снимок состояния (snapshot)** — при каждом запуске таблетка сканирует все свои таблицы и записывает свое полное состояние в резервную копию, включая схему данных. Сканирование выполняется на основе снимка состояния и не блокирует работу таблетки.
+- **Журнал изменений (changelog)** — при каждом изменении данных или схемы таблетка асинхронно записывает изменение в журнал параллельно с записью в распределённое хранилище. Когда размер журнала превышает размер снимка состояния, таблетка автоматически делает новый снимок.
+
+{% note warning %}
+
+Из-за асинхронной записи возможна потеря последних изменений, не успевших попасть в резервную копию до момента сбоя.
+
+{% endnote %}
+
+Резервные копии создаются **локально на хосте, где в данный момент работает таблетка**. Поэтому наиболее актуальная копия находится на том хосте, где таблетка работала непосредственно перед сбоем.
+
+Количество хранимых резервных копий на хосте ограничено в [конфигурации](../../reference/configuration/system_tablet_backup_config.md). После успешного снятия снапшота самая старая копия автоматически удаляется при превышении лимита. Незавершённые копии (без полностью записанного снапшота) удаляются при создании новой резервной копии.
+
+## Включение и настройка резервного копирования {#enabling-backup}
+
+{% note warning %}
+
+В качестве хранилища резервных копий поддерживаются только локальные файловые системы. Сетевые файловые системы, такие как NFS, не поддерживаются и могут привести к повреждению резервных копий или сбоям в работе таблеток.
+
+{% endnote %}
+
+По умолчанию резервное копирование системных таблеток **выключено**, так как требует настройки хранилища. Узлы {{ ydb-short-name }} обычно не используют локальную файловую систему, поэтому включение требует осознанного решения администратора.
+
+Для включения добавьте секцию `system_tablet_backup_config` в [конфигурацию кластера](../../reference/configuration/index.md):
+
+```yaml
+system_tablet_backup_config:
+ filesystem:
+ path: "/path/to/backup/directory"
+```
+
+Параметр `path` — абсолютный путь к директории на локальной файловой системе хоста для хранения резервных копий.
+
+{% note warning %}
+
+Директория для резервных копий должна быть доступна для записи процессом {{ ydb-short-name }} на каждом хосте, где работают системные таблетки. Убедитесь, что на диске каждого хоста достаточно свободного места для хранения нескольких резервных копий всех системных таблеток. Для крупных рабочих сред, состоящих из десятков узлов хранения, рекомендуется как минимум 5 ГБ.
+
+{% endnote %}
+
+После изменения конфигурации перезапустите узлы кластера, на которых могут работать системные таблетки. Резервное копирование начнётся автоматически.
+
+{% note warning %}
+
+По умолчанию системные таблетки могут работать на любых статических узлах кластера, в том числе на тех, диски которых входят в [статическую группу](../../concepts/glossary.md#static-group). Резервные копии хранятся локально на хостах, где работают системные таблетки. Это означает, что при потере хостов статической группы могут быть потеряны и резервные копии, которые могут потребоваться для восстановления статической группы.
+
+Рекомендуется настроить секцию `bootstrap_config` в [конфигурации кластера](../../reference/configuration/index.md) так, чтобы системные таблетки запускались на узлах, не входящих в статическую группу. В этом случае резервные копии будут храниться отдельно от данных статической группы.
+
+{% endnote %}
+
+## Руководство по восстановлению {#recovery-guide}
+
+{% note warning %}
+
+Восстановление системных таблеток — критическая операция, в результате которой могут быть потеряны данные. Выполняйте её только при наличии чёткого понимания проблемы и после консультации с командой эксплуатации. Перед началом убедитесь, что вы ознакомились со всеми шагами.
+
+{% endnote %}
+
+### Шаг 1. Переведите таблетку в Recovery-режим {#enable-recovery-mode}
+
+Таблетку, которую требуется восстановить, необходимо перевести в Recovery-режим. В этом режиме таблетка запускается и доступна через [Embedded UI](../../reference/embedded-ui/index.md), но **не работает штатно** и **не вычитывает данные из распределённого хранилища**, что позволяет выполнять операции восстановления. Остальные таблетки продолжат работать в штатном режиме, что позволит кластеру продолжать функционировать, но некоторые control-plane операции могут быть недоступны.
+
+{% note warning %}
+
+Если восстановление выполняется после полной потери [статической группы](../../concepts/glossary.md#static-group), все системные таблетки должны быть переведены в Recovery-режим одновременно с пересозданием статической группы на новых хостах. Если пересоздать статическую группу, не переведя таблетки в Recovery-режим, они автоматически запустятся поверх пустой статической группы, что приведёт к неправильной работе кластера.
+
+{% endnote %}
+
+1. Определите идентификатор системной таблетки, которую требуется восстановить. Идентификатор таблетки можно найти в разделе Tablets в [Embedded UI](../../reference/embedded-ui/index.md).
+2. Определите список узлов, на которых может работать восстанавливаемая системная таблетка. Этот список находится в секции `bootstrap_config` соответствующей таблетки в [конфигурации кластера](../configuration-management/index.md). Если секция `bootstrap_config` отсутствует в конфигурации, используйте список всех [статических узлов](../../concepts/glossary.md#static-node) кластера, указанных в секции `hosts` конфигурации кластера.
+3. Измените конфигурацию, добавив `boot_mode: RECOVERY` в секцию `bootstrap_config` восстанавливаемой таблетки.
+ - При использовании конфигурации V1, необходимо изменить [статическую конфигурацию](../configuration-management/configuration-v1/static-config.md) на всех узлах, на которых может работать восстанавливаемая таблетка.
+ - При использовании конфигурации V2, воспользуйтесь [инструкцией](../configuration-management/configuration-v2/update-config.md).
+ - Пример для таблетки `Hive` с идентификатором `72057594037968897`:
+
+ ```yaml
+ bootstrap_config:
+ tablet:
+ - type: FLAT_HIVE
+ node:
+ - 1
+ - 2
+ - 3
+ info:
+ tablet_id: '72057594037968897'
+ channels:
+ - channel: 0
+ history:
+ - from_generation: 0
+ group_id: 0
+ channel_erasure_name: mirror-3-dc
+ - channel: 1
+ history:
+ - from_generation: 0
+ group_id: 0
+ channel_erasure_name: mirror-3-dc
+ - channel: 2
+ history:
+ - from_generation: 0
+ group_id: 0
+ channel_erasure_name: mirror-3-dc
+ boot_mode: RECOVERY
+ ```
+
+4. Перезапустите все узлы, на которых может работать восстанавливаемая таблетка. Если какой-либо узел недоступен и не может быть перезапущен, изолируйте его от кластера по сети — например, с помощью firewall.
+
+ {% note warning %}
+
+ Убедитесь, что все узлы, на которых может работать восстанавливаемая таблетка, перезапущены с обновлённой конфигурацией или изолированы от кластера по сети до начала восстановления. В процессе восстановления старые данные стираются и заменяются данными из резервной копии. Если в этот момент таблетка запустится в обычном режиме на узле со старой конфигурацией, она может начать работу с частично восстановленными данными.
+
+ {% endnote %}
+
+5. Убедитесь, что:
+ - С таблеткой нет проблем в [HealthCheck](../../reference/ydb-sdk/health-check-api.md).
+ - Таблетка не перезапускается.
+ - В App таблетки в [Embedded UI](../../reference/embedded-ui/index.md) доступна форма восстановления.
+
+### Шаг 2. Найдите файлы резервной копии {#find-backup-files}
+
+1. Определите, на каких хостах искать. Прежде всего проверьте хосты, на которых таблетка работала до сбоя. Определить эти хосты можно с помощью логов или системы мониторинга.
+
+ Если определить конкретные хосты не удалось, проверьте все хосты, на которых таблетка могла работать. Этот список находится в секции `bootstrap_config` соответствующей таблетки в [конфигурации кластера](../configuration-management/index.md). Если секция `bootstrap_config` отсутствует в конфигурации, используйте список всех [статических узлов](../../concepts/glossary.md#static-node) кластера, указанных в секции `hosts` конфигурации кластера.
+
+2. Найдите директорию с резервными копиями. На каждом хосте-кандидате проверьте наличие резервных копий. Путь к резервным копиям определяется параметром `path` в конфигурации `system_tablet_backup_config`:
+
+ ```bash
+ ls /path/to/backup/directory/<tablet_type>/<tablet_id>/
+ ```
+
+ Пример для таблетки `Hive` с идентификатором `72057594037968897`:
+
+ ```bash
+ ls /tablet/hive/72057594037968897/
+ ```
+
+ ```text
+ backup_20251007T181003_g213_s1001
+ backup_20251007T191002_g214_s1040
+ backup_20251007T193502_g214_s1222
+ ```
+
+3. Выберите наиболее актуальную резервную копию. Имя каждой резервной копии содержит ключевую информацию: `backup_<timestamp>_g<generation>_s<step>`, где:
+
+ - `timestamp` — время создания резервной копии;
+ - `generation` — [поколение таблетки](../../concepts/glossary.md#tablet-generation), увеличивается при каждом перезапуске таблетки;
+ - `step` — шаг таблетки в рамках поколения, увеличивается при каждом изменении состояния таблетки.
+
+ Выберите резервную копию с **максимальным поколением**, а при равном поколении — с **максимальным шагом**. Если резервные копии найдены на нескольких хостах, сравните их между собой и выберите наиболее актуальную.
+
+4. Убедитесь, что резервная копия полностью записана. Выбранная резервная копия должна содержать директорию `snapshot`, а **не** `snapshot.tmp`. Наличие `snapshot.tmp` означает, что запись снапшота не была завершена и копия непригодна для восстановления. В этом случае выберите предыдущую по актуальности копию.
+
+ ```bash
+ ls /tablet/hive/72057594037968897/backup_20251007T193502_g214_s1222/snapshot/
+ ```
+
+ ```text
+ manifest.json
+ schema.json
+ Tablet.json
+ TabletFollowerGroup.json
+ ...
+ ```
+
+### Шаг 3. Перенесите файлы резервной копии {#transfer-backup-files}
+
+1. Определите, на каком хосте запущена таблетка в Recovery-режиме. Для этого откройте [Embedded UI](../../reference/embedded-ui/index.md) и найдите узел, на котором работает таблетка.
+2. Если файлы резервной копии находятся на другом хосте, скопируйте их на хост с таблеткой в Recovery-режиме с помощью `scp`, `rsync` или любого другого доступного инструмента:
+
+ ```bash
+ scp -r /tablet/hive/72057594037968897/backup_20251007T193502_g214_s1222 \
+ user@target-host:~/backup_20251007T193502_g214_s1222
+ ```
+
+3. Убедитесь, что файлы доступны для чтения процессу {{ ydb-short-name }} на целевом хосте.
+
+### Шаг 4. Выполните восстановление {#perform-recovery}
+
+1. Откройте App восстанавливаемой таблетки в [Embedded UI](../../reference/embedded-ui/index.md).
+
+2. В форме восстановления укажите полный путь до директории с файлами резервной копии, например:
+
+ ```text
+ /tablet/hive/72057594037968897/backup_20251007T193502_g214_s1222
+ ```
+
+3. При необходимости установите флаги:
+
+ - **Dry Run** — выполняет пробное восстановление без внесения изменений в хранилище. Позволяет убедиться в корректности резервной копии.
+ - **Skip Checksum Validation** — пропускает проверку контрольных сумм файлов резервной копии.
+
+ {% note warning %}
+
+ Всегда выполняйте Dry Run перед первым восстановлением, чтобы убедиться в корректности резервной копии.
+
+ {% endnote %}
+
+ {% note warning %}
+
+ Пропускайте проверку контрольных сумм только в случае ручного редактирования файлов резервной копии. В остальных случаях рекомендуется оставлять проверку включённой для обеспечения целостности восстанавливаемых данных.
+
+ {% endnote %}
+
+4. Нажмите кнопку **Start Restore**. Перед началом восстановления система запросит подтверждение, так как операция перезаписывает существующие данные таблетки. Подтвердите действие для запуска. После начала восстановления форма становится недоступной — повторный запуск невозможен до перезапуска таблетки.
+
+ {% note info %}
+
+ Восстановление также можно запустить с помощью `curl`, отправив POST-запрос на страницу App таблетки с параметром `restoreBackup`:
+
+ ```bash
+ curl -X POST "http://<host>:<mon_port>/tablets/app?TabletID=72057594037968897&restoreBackup=/tablet/hive/72057594037968897/backup_20251007T193502_g214_s1222"
+ ```
+
+ Где `<host>` — адрес узла кластера, `<mon_port>` — порт мониторинга этого узла.
+
+ {% endnote %}
+
+5. Отслеживайте прогресс восстановления. Страница **не обновляется автоматически** — для получения актуального статуса обновляйте страницу вручную. Продолжительность восстановления зависит от объёма резервной копии.
+
+ {% note info %}
+
+ Восстановление выполняется на стороне сервера и не зависит от браузера. Вы можете закрыть страницу или браузер — это **не прервёт** процесс восстановления. При повторном открытии страницы отобразится актуальный статус.
+
+ {% endnote %}
+
+ Под формой отображается текущий статус операции. Возможные статусы:
+
+ - `Restoring from '<путь>'` — восстановление выполняется, данные из резервной копии считываются и записываются в хранилище. Дополнительно отображается **прогресс-бар** с процентом выполнения операции.
+ - `Restore from '<путь>' completed successfully` — восстановление завершено успешно. Можно переходить к следующему шагу.
+ - `Restore from '<путь>' completed, but changelog is not fully restored` — основные данные таблетки восстановлены, но хвост журнала изменений в резервной копии повреждён, и часть последних изменений потеряна. Изучите, какие данные были потеряны, и при необходимости восстановите их вручную, либо переходите к следующему шагу.
+ - `Restore from '<путь>' failed: <описание ошибки>` — восстановление завершилось с ошибкой. Изучите описание ошибки и при необходимости повторите попытку.
+
+ Для принудительного прерывания восстановления **перезапустите таблетку**.
+
+6. Дождитесь успешного завершения восстановления. Если форма восстановления снова стала доступна (кнопка **Start Restore** активна, статус сброшен), это означает, что таблетка была перезапущена и восстановление прервано. В этом случае начните восстановление заново с пункта 2.
+
+### Шаг 5. Верните таблетку к нормальному режиму работы {#return-to-normal}
+
+После успешного восстановления:
+
+1. Определите список узлов, на которых может работать восстанавливаемая системная таблетка. Этот список находится в секции `bootstrap_config` соответствующей таблетки в [конфигурации кластера](../configuration-management/index.md). Если секция `bootstrap_config` отсутствует в конфигурации, используйте список всех [статических узлов](../../concepts/glossary.md#static-node) кластера, указанных в секции `hosts` конфигурации кластера.
+2. Измените конфигурацию, удалив `boot_mode: RECOVERY` из секции `bootstrap_config` восстанавливаемой таблетки.
+ - При использовании конфигурации V1, необходимо изменить [статическую конфигурацию](../configuration-management/configuration-v1/static-config.md) на всех узлах, на которых может работать восстанавливаемая таблетка.
+ - При использовании конфигурации V2, воспользуйтесь [инструкцией](../configuration-management/configuration-v2/update-config.md).
+3. Перезапустите все узлы, на которых может работать восстанавливаемая таблетка. Если какие-либо узлы были изолированы от кластера по сети на предыдущих шагах, снимите сетевую изоляцию.
+4. Убедитесь, что:
+ - С таблеткой нет проблем в [HealthCheck](../../reference/ydb-sdk/health-check-api.md).
+ - Таблетка не перезапускается.
+ - В App таблетки в [Embedded UI](../../reference/embedded-ui/index.md) отсутствует форма восстановления.
diff --git a/ydb/docs/ru/core/devops/backup-and-recovery/toc_p.yaml b/ydb/docs/ru/core/devops/backup-and-recovery/toc_p.yaml
new file mode 100644
index 00000000000..617e900ce4a
--- /dev/null
+++ b/ydb/docs/ru/core/devops/backup-and-recovery/toc_p.yaml
@@ -0,0 +1,3 @@
+items:
+- name: Резервное копирование системных таблеток
+ href: system-tablet-backup.md
diff --git a/ydb/docs/ru/core/devops/concepts/index.md b/ydb/docs/ru/core/devops/concepts/index.md
index 8de28290c25..1d5c4879764 100644
--- a/ydb/docs/ru/core/devops/concepts/index.md
+++ b/ydb/docs/ru/core/devops/concepts/index.md
@@ -14,4 +14,4 @@
* [{#T}](../deployment-options/index.md)
* [{#T}](../configuration-management/index.md)
* [{#T}](../observability/index.md)
-* [{#T}](../backup-and-recovery.md) \ No newline at end of file
+* [{#T}](../backup-and-recovery/index.md) \ No newline at end of file
diff --git a/ydb/docs/ru/core/devops/index.md b/ydb/docs/ru/core/devops/index.md
index b0ff2b29e70..bc2e317635f 100644
--- a/ydb/docs/ru/core/devops/index.md
+++ b/ydb/docs/ru/core/devops/index.md
@@ -14,5 +14,5 @@
* **[Вручную](deployment-options/manual/index.md)**: развертывание кластера вручную.
* [{#T}](observability/index.md) — инструменты для наблюдения за кластерами {{ ydb-short-name }}.
-* [{#T}](backup-and-recovery.md) — резервное копирование и восстановление кластеров {{ ydb-short-name }}.
+* [{#T}](backup-and-recovery/index.md) — резервное копирование и восстановление кластеров {{ ydb-short-name }}.
diff --git a/ydb/docs/ru/core/devops/toc_p.yaml b/ydb/docs/ru/core/devops/toc_p.yaml
index 9c40e6baf4e..d247fdc3a67 100644
--- a/ydb/docs/ru/core/devops/toc_p.yaml
+++ b/ydb/docs/ru/core/devops/toc_p.yaml
@@ -25,4 +25,7 @@ items:
mode: link
path: observability/toc_p.yaml
- name: Резервное копирование и восстановление
- href: backup-and-recovery.md
+ href: backup-and-recovery/index.md
+ include:
+ mode: link
+ path: backup-and-recovery/toc_p.yaml
diff --git a/ydb/docs/ru/core/recipes/backup-collections/index.md b/ydb/docs/ru/core/recipes/backup-collections/index.md
index 13d1c7786a0..e24522d2266 100644
--- a/ydb/docs/ru/core/recipes/backup-collections/index.md
+++ b/ydb/docs/ru/core/recipes/backup-collections/index.md
@@ -24,7 +24,7 @@
## См. также
- [Коллекции резервных копий](../../concepts/datamodel/backup-collection.md)
-- [Резервное копирование и восстановление](../../devops/backup-and-recovery.md)
+- [Резервное копирование и восстановление](../../devops/backup-and-recovery/index.md)
- [CREATE BACKUP COLLECTION](../../yql/reference/syntax/create-backup-collection.md)
- [BACKUP](../../yql/reference/syntax/backup.md)
- [RESTORE](../../yql/reference/syntax/restore-backup-collection.md)
diff --git a/ydb/docs/ru/core/reference/configuration/index.md b/ydb/docs/ru/core/reference/configuration/index.md
index dfca1f70237..d8ee4e46493 100644
--- a/ydb/docs/ru/core/reference/configuration/index.md
+++ b/ydb/docs/ru/core/reference/configuration/index.md
@@ -31,6 +31,7 @@
|| [{#T}](query_service_config.md) | Нет | Конфигурация внешних источников для федеративных запросов ||
|| [{#T}](resource_broker_config.md) | Нет | Брокер ресурсов для контроля потребления CPU и памяти ||
|| [{#T}](security_config.md) | Нет | Настройки конфигурации безопасности ||
+|| [{#T}](system_tablet_backup_config.md) | Нет | Конфигурация резервного копирования системных таблеток ||
|| [{#T}](table_service_config.md) | Нет | Настройки конфигурации выполнения запросов||
|| [{#T}](tli_config.md) | Нет | Параметры диагностики [инвалидации блокировок транзакций](../../concepts/glossary.md#tli) (TLI) ||
|| [{#T}](tls.md) | Нет | Конфигурация TLS для безопасных соединений ||
diff --git a/ydb/docs/ru/core/reference/configuration/resource_broker_config.md b/ydb/docs/ru/core/reference/configuration/resource_broker_config.md
index d0c1d81bea5..fd2edb44297 100644
--- a/ydb/docs/ru/core/reference/configuration/resource_broker_config.md
+++ b/ydb/docs/ru/core/reference/configuration/resource_broker_config.md
@@ -10,8 +10,8 @@
| Название очереди | CPU | Memory | Описание |
|---------------------------| --- | --- |----------------------------------------------------|
| `queue_ttl` | 2 | — | Операции удаления данных по [TTL](../../concepts/ttl.md). |
-| `queue_backup` | 2 | — | Операции [резервного копирования](../../devops/backup-and-recovery.md#s3). |
-| `queue_restore` | 2 | — | Операции [восстановления из резервной копии](../../devops/backup-and-recovery.md#s3). |
+| `queue_backup` | 2 | — | Операции [резервного копирования](../../devops/backup-and-recovery/index.md#s3). |
+| `queue_restore` | 2 | — | Операции [восстановления из резервной копии](../../devops/backup-and-recovery/index.md#s3). |
| `queue_build_index` | 10 | — | Операции [онлайн-создания вторичного индекса](../../concepts/query_execution/secondary_indexes.md#index-add). |
| `queue_cdc_initial_scan` | 4 | — | [Первоначальное сканирование таблицы](../../concepts/cdc.md#initial-scan). |
diff --git a/ydb/docs/ru/core/reference/configuration/system_tablet_backup_config.md b/ydb/docs/ru/core/reference/configuration/system_tablet_backup_config.md
new file mode 100644
index 00000000000..991e3be56cc
--- /dev/null
+++ b/ydb/docs/ru/core/reference/configuration/system_tablet_backup_config.md
@@ -0,0 +1,22 @@
+# system_tablet_backup_config
+
+Механизм [резервного копирования системных таблеток](../../devops/backup-and-recovery/system-tablet-backup.md) обеспечивает инкрементальное копирование метаданных кластера — таких как [Hive](../../concepts/glossary.md#hive), [BSController](../../concepts/glossary.md#ds-controller) и [SchemeShard](../../concepts/glossary.md#scheme-shard) — на локальную файловую систему хостов кластера. Поведение резервного копирования конфигурируется в секции `system_tablet_backup_config` конфигурации {{ ydb-short-name }}.
+
+## Синтаксис
+
+```yaml
+system_tablet_backup_config:
+ filesystem:
+ path: "/path/to/backup/directory"
+ exclude_tablet_ids:
+ - 72057594037968897
+ max_backups_limit: 3
+```
+
+## Параметры
+
+| Параметр | Значение по умолчанию | Описание |
+|---|---|---|
+| `filesystem.path` | — | Абсолютный путь к директории на локальной файловой системе хоста для хранения резервных копий. Директория должна быть доступна для записи процессом {{ ydb-short-name }} на каждом хосте, где работают системные таблетки. Поддерживаются только локальные файловые системы; сетевые файловые системы, такие как NFS, не поддерживаются. |
+| `exclude_tablet_ids` | — | Список идентификаторов системных таблеток, которые необходимо исключить из резервного копирования, например, для снижения нагрузки на диски или экономии места. |
+| `max_backups_limit` | `3` | Максимальное количество резервных копий одной таблетки, хранимых на хосте. После успешного создания новой копии самая старая автоматически удаляется при превышении лимита. |
diff --git a/ydb/docs/ru/core/reference/configuration/toc_p.yaml b/ydb/docs/ru/core/reference/configuration/toc_p.yaml
index accf871b689..530013aa1b7 100644
--- a/ydb/docs/ru/core/reference/configuration/toc_p.yaml
+++ b/ydb/docs/ru/core/reference/configuration/toc_p.yaml
@@ -41,6 +41,8 @@ items:
href: resource_broker_config.md
- name: security_config
href: security_config.md
+- name: system_tablet_backup_config
+ href: system_tablet_backup_config.md
- name: tls
href: tls.md
- name: table_service_config
diff --git a/ydb/docs/ru/core/reference/ydb-cli/export-import/toc_i.yaml b/ydb/docs/ru/core/reference/ydb-cli/export-import/toc_i.yaml
index 7bfd1faa069..fafd14c03c2 100644
--- a/ydb/docs/ru/core/reference/ydb-cli/export-import/toc_i.yaml
+++ b/ydb/docs/ru/core/reference/ydb-cli/export-import/toc_i.yaml
@@ -14,4 +14,4 @@ items:
- name: Импорт данных из файла в существующую таблицу
href: import-file.md
- name: Коллекции резервных копий
- href: ../../../devops/backup-and-recovery.md
+ href: ../../../devops/backup-and-recovery/index.md
diff --git a/ydb/docs/ru/core/yql/reference/syntax/backup.md b/ydb/docs/ru/core/yql/reference/syntax/backup.md
index ce63f6787bd..e87536d5c62 100644
--- a/ydb/docs/ru/core/yql/reference/syntax/backup.md
+++ b/ydb/docs/ru/core/yql/reference/syntax/backup.md
@@ -77,4 +77,4 @@ ydb operation get <operation-id>
* [CREATE BACKUP COLLECTION](create-backup-collection.md).
* [RESTORE](restore-backup-collection.md).
* [DROP BACKUP COLLECTION](drop-backup-collection.md).
-* [Резервное копирование и восстановление](../../../devops/backup-and-recovery.md).
+* [Резервное копирование и восстановление](../../../devops/backup-and-recovery/index.md).
diff --git a/ydb/docs/ru/core/yql/reference/syntax/restore-backup-collection.md b/ydb/docs/ru/core/yql/reference/syntax/restore-backup-collection.md
index dd9fffe757a..9b8926bd1a2 100644
--- a/ydb/docs/ru/core/yql/reference/syntax/restore-backup-collection.md
+++ b/ydb/docs/ru/core/yql/reference/syntax/restore-backup-collection.md
@@ -53,4 +53,4 @@ ydb operation get <operation-id>
* [CREATE BACKUP COLLECTION](create-backup-collection.md)
* [BACKUP](backup.md)
* [DROP BACKUP COLLECTION](drop-backup-collection.md)
-* [Резервное копирование и восстановление](../../../devops/backup-and-recovery.md)
+* [Резервное копирование и восстановление](../../../devops/backup-and-recovery/index.md)