Перейти к основному содержимому

Резервное копирование и восстановление данных

Эта тема описывает, как создавать резервные копии и восстанавливать данные в Selena, или мигрировать данные в новый кластер Selena.

Selena поддерживает резервное копирование данных в виде снимков в удаленную систему хранения и восстановление данных в любые кластеры Selena.

Selena поддерживает следующие удаленные системы хранения:

  • Кластер Apache™ Hadoop® (HDFS)
  • AWS S3
  • Google GCS

ПРИМЕЧАНИЕ

Кластеры Selena с общими данными не поддерживают операции BACKUP и RESTORE данных.

Резервное копирование данных

Selena поддерживает ПОЛНОЕ резервное копирование на уровне детализации базы данных, таблицы или раздела.

Если вы храните большое количество данных в таблице, мы рекомендуем создавать резервные копии и восстанавливать данные по разделам. Таким образом, вы можете снизить стоимость повторных попыток в случае сбоев заданий. Если вам нужно регулярно создавать резервные копии инкрементальных данных, вы можете разработать план динамического разделения (например, через определенный временной интервал) для вашей таблицы и каждый раз создавать резервные копии только новых разделов.

Создание репозитория

Перед созданием резервной копии данных необходимо создать репозиторий, который используется для хранения снимков данных в удаленной системе хранения. Вы можете создать несколько репозиториев в кластере Selena. Подробные инструкции см. в CREATE REPOSITORY.

  • Создание репозитория в HDFS

Следующий пример создает репозиторий с именем test_repo в кластере HDFS.

CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "hdfs://<hdfs_host>:<hdfs_port>/repo_dir/backup"
PROPERTIES(
"username" = "<hdfs_username>",
"password" = "<hdfs_password>"
);
  • Создание репозитория в AWS S3

    Вы можете выбрать учетные данные на основе пользователя IAM (Access Key и Secret Key), Instance Profile или Assumed Role в качестве метода аутентификации для доступа к AWS S3.

    • Следующий пример создает репозиторий с именем test_repo в корзине AWS S3 bucket_s3, используя учетные данные на основе пользователя IAM в качестве метода аутентификации.
    CREATE REPOSITORY test_repo
    WITH BROKER
    ON LOCATION "s3a://bucket_s3/backup"
    PROPERTIES(
    "aws.s3.access_key" = "XXXXXXXXXXXXXXXXX",
    "aws.s3.secret_key" = "yyyyyyyyyyyyyyyyyyyyyyyy",
    "aws.s3.region" = "us-east-1"
    );
    • Следующий пример создает репозиторий с именем test_repo в корзине AWS S3 bucket_s3, используя Instance Profile в качестве метода аутентификации.
    CREATE REPOSITORY test_repo
    WITH BROKER
    ON LOCATION "s3a://bucket_s3/backup"
    PROPERTIES(
    "aws.s3.use_instance_profile" = "true",
    "aws.s3.region" = "us-east-1"
    );
    • Следующий пример создает репозиторий с именем test_repo в корзине AWS S3 bucket_s3, используя Assumed Role в качестве метода аутентификации.
    CREATE REPOSITORY test_repo
    WITH BROKER
    ON LOCATION "s3a://bucket_s3/backup"
    PROPERTIES(
    "aws.s3.use_instance_profile" = "true",
    "aws.s3.iam_role_arn" = "arn:aws:iam::xxxxxxxxxx:role/yyyyyyyy",
    "aws.s3.region" = "us-east-1"
    );

ПРИМЕЧАНИЕ

Selena поддерживает создание репозиториев в AWS S3 только по протоколу S3A. Поэтому при создании репозиториев в AWS S3 необходимо заменить s3:// в URI S3, который вы передаете как местоположение репозитория в ON LOCATION, на s3a://.

  • Создание репозитория в Google GCS

Следующий пример создает репозиторий с именем test_repo в корзине Google GCS bucket_gcs.

CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_gcs/backup"
PROPERTIES(
"fs.s3a.access.key" = "xxxxxxxxxxxxxxxxxxxx",
"fs.s3a.secret.key" = "yyyyyyyyyyyyyyyyyyyy",
"fs.s3a.endpoint" = "storage.googleapis.com"
);

ПРИМЕЧАНИЕ

  • Selena поддерживает создание репозиториев в Google GCS только по протоколу S3A. Поэтому при создании репозиториев в Google GCS необходимо заменить префикс в URI GCS, который вы передаете как местоположение репозитория в ON LOCATION, на s3a://.
  • Не указывайте https в адресе конечной точки.

После создания репозитория вы можете проверить репозиторий с помощью SHOW REPOSITORIES. После восстановления данных вы можете удалить репозиторий в Selena с помощью DROP REPOSITORY. Однако снимки данных, созданные в удаленной системе хранения, нельзя удалить через Selena. Их нужно удалять вручную в удаленной системе хранения.

Создание резервной копии снимка данных

После создания репозитория необходимо создать снимок данных и сохранить его в удаленном репозитории. Подробные инструкции см. в BACKUP.

Следующий пример создает снимок данных sr_member_backup для таблицы sr_member в базе данных sr_hub и сохраняет его в репозитории test_repo.

BACKUP SNAPSHOT sr_hub.sr_member_backup
TO test_repo
ON (sr_member);
подсказка

Selena поддерживает операции BACKUP и RESTORE на следующих уровнях детализации:

  • Уровень раздела: Необходимо указать предложение ON в формате ON (<table_name> PARTITION (<partition_name>, ...)).
  • Уровень таблицы: Необходимо указать предложение ON в формате ON (<table_name>).
  • Уровень базы данных: Не нужно указывать предложение ON. Это создаст резервную копию или восстановит всю базу данных.

BACKUP — это асинхронная операция. Вы можете проверить статус задания BACKUP с помощью SHOW BACKUP или отменить задание BACKUP с помощью CANCEL BACKUP.

Восстановление или миграция данных

Вы можете восстановить снимок данных, сохраненный в удаленной системе хранения, в текущий или другие кластеры Selena для восстановления или миграции данных.

(Опционально) Создание репозитория в новом кластере

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

Проверка снимка

Перед восстановлением данных вы можете проверить снимки в указанном репозитории с помощью SHOW SNAPSHOT.

Следующий пример проверяет информацию о снимке в test_repo.

mysql> SHOW SNAPSHOT ON test_repo;
+------------------+-------------------------+--------+
| Snapshot | Timestamp | Status |
+------------------+-------------------------+--------+
| sr_member_backup | 2023-02-07-14-45-53-143 | OK |
+------------------+-------------------------+--------+
1 row in set (1.16 sec)

Восстановление данных через снимок

Вы можете использовать оператор RESTORE для восстановления снимков данных из удаленной системы хранения в текущий или другие кластеры Selena.

Следующий пример восстанавливает снимок данных sr_member_backup из test_repo в таблицу sr_member. Он восстанавливает только ОДНУ реплику данных.

RESTORE SNAPSHOT sr_hub.sr_member_backup
FROM test_repo
ON (sr_member)
PROPERTIES (
"backup_timestamp"="2023-02-07-14-45-53-143",
"replication_num" = "1"
);
подсказка

Selena поддерживает операции BACKUP и RESTORE на следующих уровнях детализации:

  • Уровень раздела: Необходимо указать предложение ON в формате ON (<table_name> PARTITION (<partition_name>, ...)).
  • Уровень таблицы: Необходимо указать предложение ON в формате ON (<table_name>).
  • Уровень базы данных: Не нужно указывать предложение ON. Это создаст резервную копию или восстановит всю базу данных.

RESTORE — это асинхронная операция. Вы можете проверить статус задания RESTORE с помощью SHOW RESTORE или отменить задание RESTORE с помощью CANCEL RESTORE.

Настройка заданий BACKUP или RESTORE

Вы можете оптимизировать производительность заданий BACKUP или RESTORE, изменив следующие параметры конфигурации в файле конфигурации BE be.conf:

Параметр конфигурацииОписание
make_snapshot_worker_countМаксимальное количество потоков для задач создания снимков заданий BACKUP на узле BE. По умолчанию: 5. Увеличьте значение этого параметра конфигурации для увеличения параллелизма задачи создания снимков.
release_snapshot_worker_countМаксимальное количество потоков для задач освобождения снимков неудачных заданий BACKUP на узле BE. По умолчанию: 5. Увеличьте значение этого параметра конфигурации для увеличения параллелизма задачи освобождения снимков.
upload_worker_countМаксимальное количество потоков для задач загрузки заданий BACKUP на узле BE. По умолчанию: 0. 0 означает установку значения равным количеству ядер процессора на машине, где находится BE. Увеличьте значение этого параметра конфигурации для увеличения параллелизма задачи загрузки.
download_worker_countМаксимальное количество потоков для задач скачивания заданий RESTORE на узле BE. По умолчанию: 0. 0 означает установку значения равным количеству ядер процессора на машине, где находится BE. Увеличьте значение этого параметра конфигурации для увеличения параллелизма задачи скачивания.

BACKUP и RESTORE материализованных представлений

Во время задания BACKUP или RESTORE таблицы Selena автоматически создает резервные копии или восстанавливает ее синхронные материализованные представления.

Начиная с версии 1.5.0, Selena поддерживает резервное копирование и восстановление асинхронных материализованных представлений при резервном копировании и восстановлении базы данных, в которой они находятся.

Во время BACKUP и RESTORE базы данных Selena выполняет следующие действия:

  • BACKUP
  1. Обходит базу данных для сбора информации обо всех таблицах и асинхронных материализованных представлениях.
  2. Корректирует порядок таблиц в очереди BACKUP и RESTORE, обеспечивая размещение базовых таблиц материализованных представлений перед материализованными представлениями:
    • Если базовая таблица существует в текущей базе данных, Selena добавляет таблицу в очередь.
    • Если базовая таблица не существует в текущей базе данных, Selena выводит предупреждающий лог и продолжает операцию BACKUP без блокировки процесса.
  3. Выполняет задачу BACKUP в порядке очереди.
  • RESTORE
  1. Восстанавливает таблицы и материализованные представления в порядке очереди BACKUP и RESTORE.
  2. Восстанавливает зависимость между материализованными представлениями и их базовыми таблицами и повторно отправляет расписание задач обновления.

Любая ошибка, возникшая в процессе RESTORE, не будет блокировать процесс.

После RESTORE вы можете проверить статус материализованного представления с помощью SHOW MATERIALIZED VIEWS.

  • Если материализованное представление активно, его можно использовать напрямую.
  • Если материализованное представление неактивно, это может быть связано с тем, что его базовые таблицы не восстановлены. После восстановления всех базовых таблиц вы можете использовать ALTER MATERIALIZED VIEW для повторной активации материализованного представления.

Примечания по использованию

  • Выполнение операций резервного копирования и восстановления на глобальном уровне, уровне базы данных, таблицы и раздела требует различных привилегий. Подробную информацию см. в разделе Настройка ролей на основе сценариев.
  • В каждой базе данных одновременно разрешено только одно выполняющееся задание BACKUP или RESTORE. В противном случае Selena возвращает ошибку.
  • Поскольку задания BACKUP и RESTORE занимают много ресурсов вашего кластера Selena, вы можете создавать резервные копии и восстанавливать данные, когда ваш кластер Selena не сильно загружен.
  • Selena не поддерживает указание алгоритмов сжатия данных для резервного копирования данных.
  • Поскольку данные создаются в виде снимков, данные, загруженные после создания снимка, не включаются в снимок. Поэтому, если вы загружаете данные в старый кластер после создания снимка и до завершения задания RESTORE, вам также необходимо загрузить данные в кластер, в который восстанавливаются данные. Рекомендуется загружать данные в оба кластера параллельно в течение некоторого времени после завершения миграции данных, а затем мигрировать ваше приложение в новый кластер после проверки корректности данных и сервисов.
  • До завершения задания RESTORE вы не можете работать с таблицей, которая восстанавливается.
  • Таблицы с первичным ключом нельзя восстановить в кластер Selena версии ранее v2.5.
  • Вам не нужно создавать таблицу для восстановления в новом кластере перед ее восстановлением. Задание RESTORE автоматически создает ее.
  • Если существует таблица с дублирующим именем таблицы для восстановления, Selena сначала проверяет, соответствует ли схема существующей таблицы схеме таблицы для восстановления. Если схемы совпадают, Selena перезаписывает существующую таблицу данными из снимка. Если схема не совпадает, задание RESTORE завершается неудачей. Вы можете либо переименовать таблицу для восстановления, используя ключевое слово AS, либо удалить существующую таблицу перед восстановлением данных.
  • Если задание RESTORE перезаписывает существующую базу данных, таблицу или раздел, перезаписанные данные нельзя восстановить после того, как задание входит в фазу COMMIT. Если задание RESTORE завершается неудачей или отменяется в этот момент, данные могут быть повреждены и недоступны. В этом случае вы можете только снова выполнить операцию RESTORE и дождаться завершения задания. Поэтому мы рекомендуем не восстанавливать данные путем перезаписи, если вы не уверены, что текущие данные больше не используются. Операция перезаписи сначала проверяет согласованность метаданных между снимком и существующей базой данных, таблицей или разделом. Если обнаружена несогласованность, операция RESTORE не может быть выполнена.
  • В настоящее время Selena не поддерживает резервное копирование и восстановление логических представлений.
  • В настоящее время Selena не поддерживает резервное копирование и восстановление конфигурационных данных, связанных с учетными записями пользователей, привилегиями и группами ресурсов.
  • В настоящее время Selena не поддерживает резервное копирование и восстановление отношений Colocate Join между таблицами.