---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ydb.tech/docs/en/concepts/backup.md?version=main
  - https://ydb.tech/docs/ru/concepts/backup.md?version=main
sourcePath: ru/core/concepts/backup.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Концепции резервного копирования

YDB обеспечивает сохранность данных при аппаратных сбоях за счёт [репликации и отказоустойчивости](https://ydb.tech/docs/ru/concepts/topology.md?version=main#cluster-config). Однако репликация не защищает от **логических ошибок**: случайный `DROP TABLE`, ошибочный массовый `UPDATE` или `DELETE` будут воспроизведены на все реплики. Для защиты от таких сценариев необходимо **резервное копирование** — отдельная копия данных, из которой можно восстановиться.

## Полное резервное копирование {#full-backup}

Полная резервная копия — это снимок данных таблиц на определённый момент времени. YDB предоставляет несколько способов создания полных резервных копий, от простых к более функциональным.

### Копирование таблиц внутри кластера {#copy-table}

Самый простой способ — создать копию таблицы (или нескольких таблиц) внутри того же кластера с помощью команды [`ydb tools copy`](https://ydb.tech/docs/ru/reference/ydb-cli/tools-copy.md?version=main). Копия создаётся атомарно из согласованного снимка и использует механизм копирования при записи, поэтому операция выполняется быстро.

Подходит для:

- быстрого создания «страховочной» копии перед опасной операцией;
- клонирования данных для тестирования.

{% note warning %}

Копия хранится в том же кластере, что и исходные данные. Она защищает от логических ошибок, но не от потери кластера.

{% endnote %}

### Дамп в файловую систему {#dump}

Команды [`ydb tools dump`](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/tools-dump.md?version=main) и [`ydb tools restore`](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/tools-restore.md?version=main) позволяют выгрузить данные в локальную файловую систему и восстановить их обратно.

Подходит для:

- локальной разработки и тестирования;
- небольших баз данных;
- создания копии на отдельном носителе.

### Экспорт в S3-совместимое хранилище {#s3}

Команды [`ydb export s3`](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/export-s3.md?version=main) и [`ydb import s3`](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/import-s3.md?version=main) позволяют выгружать и загружать данные во внешнее S3-совместимое хранилище.

Подходит для:

- аварийного восстановления (данные хранятся вне кластера);
- миграции данных между кластерами;
- долгосрочного архивирования.

### Экспорт в NFS {#nfs}

Команды [`ydb export nfs`](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/export-nfs.md?version=main) и [`ydb import nfs`](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/import-nfs.md?version=main) позволяют выгружать и загружать данные в сетевую файловую систему (NFS), смонтированную на всех хостах кластера YDB. В отличие от [дампа в файловую систему](#dump), выгрузка выполняется на стороне сервера и не требует передачи данных через CLI.

Подходит для:

- аварийного восстановления (данные хранятся вне кластера);
- миграции данных между кластерами;
- долгосрочного архивирования.

Подробнее про настройку NFS для резервного копирования и восстановления см. рецепт [Резервное копирование и восстановление через NFS](https://ydb.tech/docs/ru/recipes/nfs-backup/nfs-backup.md?version=main).

## Инкрементальное резервное копирование {#incremental-backup}

При работе с большими таблицами повторное создание полных резервных копий может быть слишком затратным. Инкрементальное резервное копирование решает эту задачу: после начальной полной копии каждый последующий инкремент захватывает только изменения (вставки, обновления, удаления), произошедшие с момента предыдущей резервной копии.

Инкрементальные резервные копии организованы в **цепочку**:

```text
Полная копия → Инкремент₁ → Инкремент₂ → ... → Инкрементₙ
```

Для восстановления необходима вся цепочка: сначала применяется полная копия, затем последовательно все инкременты. Восстановление выполняется к состоянию на момент последнего инкремента в цепочке.

Инкрементальное резервное копирование реализуется с помощью [коллекций резервных копий](https://ydb.tech/docs/ru/concepts/datamodel/backup-collection.md?version=main).

{% note info %}

В настоящее время поддерживаются только [строковые таблицы](https://ydb.tech/docs/ru/concepts/datamodel/table.md?version=main#row-oriented-tables).

{% endnote %}

## Резервное копирование системных таблеток {#system-tablet-backup}

{% note info %}

На текущий момент поддерживается резервное копирование только кластерных системных таблеток. Резервное копирование системных таблеток баз данных не поддерживается.

{% endnote %}

Механизм резервного копирования системных таблеток обеспечивает инкрементальное копирование метаданных кластера — таких как [Hive](https://ydb.tech/docs/ru/concepts/glossary.md?version=main#hive), [BSController](https://ydb.tech/docs/ru/concepts/glossary.md?version=main#ds-controller) и [SchemeShard](https://ydb.tech/docs/ru/concepts/glossary.md?version=main#scheme-shard) — на локальную файловую систему хостов кластера.

Этот механизм используют для восстановления метаданных кластера, когда [восстановление из резервных копий баз данных](#full-backup) технически возможно, но не подходит по времени или объёму работ. Типичный сценарий — совокупный объём баз данных в кластере велик из‑за их количества, размера отдельных баз или сочетания обоих факторов; полный `import/restore` всех данных в новый кластер в таком случае приводит к длительному простою. В этом сценарии можно восстановить системные таблетки и вернуть кластер к работоспособному состоянию, не выполняя массовое восстановление пользовательских данных на новом кластере.

Если объём баз данных позволяет выполнить штатное восстановление, используйте в первую очередь [export/import](#s3) или [dump/restore](#dump). Резервное копирование системных таблеток следует применять как специальный механизм для ситуаций, когда нужно восстановить именно метаданные кластера и сократить объём восстановительных операций.

{% note info %}

Практические инструкции по включению и восстановлению см. в [рецептах для резервного копирования системных таблеток](https://ydb.tech/docs/ru/recipes/system-tablet-backup/index.md?version=main).

{% endnote %}

{% note warning %}

Резервные копии разных системных таблеток создаются независимо друг от друга и не согласованы между собой. После восстановления состояние таблеток может оказаться несогласованным, что может негативно влиять на работу кластера.

{% endnote %}

### Принцип работы {#system-tablet-backup-how-it-works}

Резервное копирование состоит из двух компонентов:

- **Снимок состояния (snapshot)** — при каждом запуске таблетка сканирует все свои таблицы и записывает свое полное состояние в резервную копию, включая схему данных. Сканирование выполняется на основе снимка состояния и не блокирует работу таблетки.
- **Журнал изменений (changelog)** — при каждом изменении данных или схемы таблетка асинхронно записывает изменение в журнал параллельно с записью в распределённое хранилище. Когда размер журнала превышает размер снимка состояния, таблетка автоматически делает новый снимок.

{% note warning %}

Из-за асинхронной записи возможна потеря последних изменений, не успевших попасть в резервную копию до момента сбоя.

{% endnote %}

Резервные копии создаются **локально на хосте, где в данный момент работает таблетка**. Поэтому наиболее актуальная копия находится на том хосте, где таблетка работала непосредственно перед сбоем.

Количество хранимых резервных копий на хосте ограничено в [конфигурации](https://ydb.tech/docs/ru/reference/configuration/system_tablet_backup_config.md?version=main). После успешного снятия снапшота самая старая копия автоматически удаляется при превышении лимита. Незавершённые копии (без полностью записанного снапшота) удаляются при создании новой резервной копии.

## Сравнение подходов {#comparison}

#|
|| **Способ** | **Где хранится** | **Инкременты** | **Сценарии** ||
|| [Копирование таблиц внутри кластера](#copy-table) | В кластере | Нет | Быстрая копия перед опасной операцией ||
|| [Дамп в файловую систему](#dump) | Файловая система | Нет | Разработка, тестирование, небольшие БД ||
|| [Экспорт в S3-совместимое хранилище](#s3) | S3-совместимое хранилище | Нет | Аварийное восстановление, миграция, архивирование ||
|| [Экспорт в NFS](#nfs) | Сетевая файловая система (NFS) | Нет | Аварийное восстановление, миграция, архивирование ||
|| [Инкрементальное резервное копирование](#incremental-backup) | В кластере ([экспортируются](https://ydb.tech/docs/ru/concepts/datamodel/backup-collection.md?version=main#external-storage) в S3 или файловую систему) | Да | Регулярные бэкапы больших производственных БД ||
|| [Резервное копирование системных таблеток](#system-tablet-backup) | Локальная ФС хостов кластера | Да | Восстановление метаданных кластера в аварийных ситуациях ||
|#

## См. также

- [Резервное копирование и восстановление](https://ydb.tech/docs/ru/devops/backup-and-recovery/index.md?version=main) — практическое руководство
- [Коллекции резервных копий](https://ydb.tech/docs/ru/concepts/datamodel/backup-collection.md?version=main) — архитектура и ограничения
- [Рецепты для резервного копирования системных таблеток](https://ydb.tech/docs/ru/recipes/system-tablet-backup/index.md?version=main) — включение и восстановление
- [Резервное копирование и восстановление](https://ydb.tech/docs/ru/devops/backup-and-recovery/index.md?version=main) — практическое руководство
- [Справочник export/import](https://ydb.tech/docs/ru/reference/ydb-cli/export-import/index.md?version=main) — команды CLI
- Справочник YQL:
  - [`CREATE BACKUP COLLECTION`](https://ydb.tech/docs/ru/yql/reference/syntax/create-backup-collection.md?version=main)
  - [`BACKUP`](https://ydb.tech/docs/ru/yql/reference/syntax/backup.md?version=main)
  - [`RESTORE`](https://ydb.tech/docs/ru/yql/reference/syntax/restore-backup-collection.md?version=main)
  - [`DROP BACKUP COLLECTION`](https://ydb.tech/docs/ru/yql/reference/syntax/drop-backup-collection.md?version=main)
