CREATE ASYNC REPLICATION
Вызов CREATE ASYNC REPLICATION создает экземпляр асинхронной репликации.
Синтаксис
CREATE ASYNC REPLICATION <name>
FOR <remote_path> AS <local_path> [, <another_remote_path> AS <another_local_path>]
WITH (option = value [, ...])
где:
name— имя экземпляра асинхронной репликации.remote_path— относительный или абсолютный путь до исходной таблицы или директории в базе-источнике.local_path— относительный или абсолютный путь до целевой таблицы или директории в текущей базе.WITH (option = value [, ...])— параметры асинхронной репликации.
Параметры
-
CONNECTION_STRING— строка соединения c базой-источником. Обязательный параметр. -
CA_CERT— корневой сертификат для TLS. Необязательный параметр. Может быть указан, если база-источник поддерживает режим обмена данными с шифрованием (CONNECTION_STRINGначинается сgrpcs://). -
INITIAL_SCAN: выполнять ли первоначальное сканирование. Необязательный параметр типаBool. Если не указан, используется настройка сервера; по умолчаниюTRUE.TRUE: исходные данные передаются через потоки изменений, объекты-реплики создаются автоматически.FALSE: репликация создаётся в состоянииPAUSEDи подготавливает потоки изменений без первоначального сканирования. Целевые таблицы не создаются и не подключаются к репликации до перевода вSTANDBY. Сначала создайте резервную копию источника и восстановите данные в приёмнике, затем запустите репликацию с помощью ALTER ASYNC REPLICATION. К моменту запуска целевые таблицы должны существовать и соответствовать схемам источника с учётом ограничений. Порядок действий описан в руководстве по первоначальной синхронизации.
-
AVAILABILITY_PERIOD— период доступности неподтверждённых изменений. Необязательный параметр: положительное значение типаIntervalили строка'UNLIMITED'. По умолчанию —'UNLIMITED'.'UNLIMITED': изменения сохраняются до подтверждения их обработки репликацией.Interval, напримерInterval('PT48H'): неподтверждённые изменения защищены от удаления в течение заданного периода. После его истечения они могут быть удалены.
Параметр задаётся только при создании репликации. Выбрать значение поможет сравнение вариантов хранения.
-
Настройки для аутентификации в базе-источнике одним из способов (обязательно):
-
С помощью токена:
TOKEN_SECRET_PATH— секрет, содержащий токен.
-
С помощью логина и пароля:
USER— имя пользователя.PASSWORD_SECRET_PATH— секрет, содержащий пароль.
-
С помощью сервисного агента:
SERVICE_ACCOUNT_ID— идентификатор сервисного аккаунта.INITIAL_TOKEN_SECRET_PATH— секрет, содержащий токен от сервисного аккаунта. Используется для первоначальной инициализации.
-
-
CONSISTENCY_LEVEL— уровень согласованности реплицируемых данных:ROW— согласованность данных уровня строки. Режим по умолчанию.GLOBAL— глобальная согласованность данных. Дополнительно можно указать:COMMIT_INTERVAL— периодичность фиксации изменений в формате ISO 8601. Значение по умолчанию — 10 секунд.
Примеры
Совет
Перед выполнением операции создайте секрет с аутентификационными данными для подключения или убедитесь в его существовании и наличии доступа к нему.
Создание экземпляра асинхронной репликации для таблицы original_table из базы /Root/another_database в текущую базу в таблицу replica_table:
CREATE ASYNC REPLICATION my_replication_for_single_table
FOR original_table AS replica_table
WITH (
CONNECTION_STRING = 'grpcs://example.com:2135/?database=/Root/another_database',
TOKEN_SECRET_PATH = 'my_secret'
);
Для подключения к базе /Root/another_database используется эндпоинт grpcs://example.com:2135, а для аутентификации — токен из секрета my_secret.
Создание экземпляра асинхронной репликации для таблиц original_table_1 и original_table_2 в replica_table_1 и replica_table_2, соответственно:
CREATE ASYNC REPLICATION my_replication_for_multiple_tables
FOR original_table_1 AS replica_table_1, original_table_2 AS replica_table_2
WITH (
CONNECTION_STRING = 'grpcs://example.com:2135/?database=/Root/another_database',
TOKEN_SECRET_PATH = 'my_secret'
);
Создание экземпляра асинхронной репликации для содержимого директории original_dir:
CREATE ASYNC REPLICATION my_replication_for_dir
FOR original_dir AS replica_dir
WITH (
CONNECTION_STRING = 'grpcs://example.com:2135/?database=/Root/another_database',
TOKEN_SECRET_PATH = 'my_secret'
);
Создание экземпляра асинхронной репликации для содержимого базы /Root/another_database:
CREATE ASYNC REPLICATION my_replication_for_database
FOR `/Root/another_database` AS `/Root/my_database`
WITH (
CONNECTION_STRING = 'grpcs://example.com:2135/?database=/Root/another_database',
TOKEN_SECRET_PATH = 'my_secret'
);
Создание экземпляра асинхронной репликации с указанием корневого сертификата для TLS:
CREATE ASYNC REPLICATION my_consistent_replication
FOR original_table AS replica_table
WITH (
CONNECTION_STRING = 'grpcs://example.com:2135/?database=/Root/another_database',
TOKEN_SECRET_PATH = 'my_secret',
CA_CERT = '-----BEGIN CERTIFICATE-----...'
);
Создание экземпляра асинхронной репликации в режиме глобальной согласованности данных (периодичность фиксации изменений по умолчанию — 10 секунд):
CREATE ASYNC REPLICATION my_consistent_replication
FOR original_table AS replica_table
WITH (
CONNECTION_STRING = 'grpcs://example.com:2135/?database=/Root/another_database',
TOKEN_SECRET_PATH = 'my_secret',
CONSISTENCY_LEVEL = 'GLOBAL'
);
Создание экземпляра асинхронной репликации в режиме глобальной согласованности данных с минутной периодичностью фиксации изменений:
CREATE ASYNC REPLICATION my_consistent_replication_1min_commit_interval
FOR original_table AS replica_table
WITH (
CONNECTION_STRING = 'grpcs://example.com:2135/?database=/Root/another_database',
TOKEN_SECRET_PATH = 'my_secret',
CONSISTENCY_LEVEL = 'GLOBAL',
COMMIT_INTERVAL = Interval('PT1M')
);
Создание репликации с периодом доступности неподтверждённых изменений 48 часов:
CREATE ASYNC REPLICATION my_replication_with_availability_period
FOR original_table AS replica_table
WITH (
CONNECTION_STRING = 'grpcs://example.com:2135/?database=/Root/another_database',
TOKEN_SECRET_PATH = 'my_secret',
AVAILABILITY_PERIOD = Interval('PT48H')
);
Создание репликации для первоначальной синхронизации с помощью резервного копирования и восстановления с сохранением неподтверждённых изменений без ограничения по возрасту:
CREATE ASYNC REPLICATION my_replication_without_initial_scan
FOR original_table AS replica_table
WITH (
CONNECTION_STRING = 'grpcs://example.com:2135/?database=/Root/another_database',
TOKEN_SECRET_PATH = 'my_secret',
INITIAL_SCAN = FALSE,
AVAILABILITY_PERIOD = 'UNLIMITED'
);
Репликация подготавливает потоки изменений в состоянии PAUSED. Дождитесь их готовности, выполните резервное копирование и восстановление, затем переведите репликацию в STANDBY с помощью ALTER ASYNC REPLICATION.