Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Managed Service for PostgreSQL
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение настроек кластера и базы данных
    • Подключение к DataLens
    • Управление хостами PostgreSQL
    • Управление базами данных
    • Управление PostgreSQL-расширениями
    • Управление пользователями БД
    • Назначение привилегий и ролей
    • Управление резервными копиями
    • Удаление кластера
    • Миграция базы данных в Yandex.Cloud
    • Создание логической реплики Аmazon RDS для PostgreSQL в Managed Service for PostgreSQL
  • Сценарии использования
    • Создание кластера PostgreSQL для 1С
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for PostgreSQL
    • Квоты и лимиты
    • Типы хранилища
    • Резервные копии
    • Назначение ролей
    • Репликация
    • Поддерживаемые клиенты
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC
      • Обзор
      • BackupService
      • ClusterService
      • DatabaseService
      • ResourcePresetService
      • UserService
      • OperationService
    • REST
      • Обзор
      • Backup
        • Обзор
        • get
        • list
      • Cluster
        • Обзор
        • addHosts
        • backup
        • create
        • delete
        • deleteHosts
        • get
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • move
        • restore
        • start
        • startFailover
        • stop
        • update
        • updateHosts
      • Database
        • Обзор
        • create
        • delete
        • get
        • list
        • update
      • ResourcePreset
        • Обзор
        • get
        • list
      • User
        • Обзор
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Operation
        • Обзор
        • get
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о PostgreSQL
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Создание логической реплики Аmazon RDS для PostgreSQL в Managed Service for PostgreSQL

Создание логической реплики Аmazon RDS для PostgreSQL в Managed Service for PostgreSQL

  • Настройка на стороне Аmazon RDS для PostgreSQL
  • Настройка на стороне Managed Service for PostgreSQL
  • Особенности использования логической репликации

Если вы используете сервис Аmazon RDS для PostgreSQL, вы можете создать копию ваших данных в Managed Service for PostgreSQL.

Настройка на стороне Аmazon RDS для PostgreSQL

Доступно для Аmazon RDS для PostgreSQL версии 10.4 и выше.

Важно

Экземпляр БД должен иметь публичный доступ — Public accessibility = yes.

  1. Настройте логическую репликацию.

    1. Установите параметр в parameter group вашего экземпляра БД:

      rds.logical_replication = 1
      
    2. Перезапустите кластер для применения изменений.

  2. Создайте отдельного пользователя с ролью rds_replication. Для этого выполните от имени пользователя с ролью rds_superuser:

    CREATE ROLE <user> WITH LOGIN PASSWORD <password>;
    GRANT rds_replication TO <user>;
    
  3. Предоставьте привилегию SELECT на все таблицы, участвующие в репликации:

    GRANT SELECT ON <table>, <table2> TO <user>;
    
  4. Создайте публикацию:

    CREATE PUBLICATION pub FOR TABLE <table>, <table2>;
    

    Примечание

    Не рекомендуется использовать публикации FOR ALL TABLES из-за невозможности отредактировать список таблиц в будущем.

  5. Добавьте inbound правило в VPC security groups.
    Например:

    protocol: tcp, port: 5432, source: 84.201.175.90/32
    

    Где

    • 84.201.175.90 - публичный IP-адрес.

Настройка на стороне Managed Service for PostgreSQL

Важно

Хосты должны иметь публичный доступ.

  1. Для создания subscription назначьте пользователю роль mdb_admin:

    yc managed-postgresql user update {user_name} --grants mdb_admin --cluster-id {cluster_id}
    
  2. На хосте кластера Managed Service for PostgreSQL создайте подписку со строкой подключения к Аmazon RDS:

    CREATE SUBSCRIPTION s_data_migration CONNECTION 'host=<адрес сервера Аmazon RDS> port=<порт> user=<имя пользователя> sslmode=prefer dbname=<имя базы данных>' PUBLICATION pub;
    

Подробнее о создании подписок смотрите в документации PostgreSQL.

Особенности использования логической репликации

  • Изменения схемы базы данных и DDL не реплицируются.

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

  • Последовательности не реплицируются.

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

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

    ALTER SEQUENCE serial RESTART WITH <new value>;
    
  • По умолчанию при создании подписки происходит полное копирование данных из исходных таблиц.

    Для ускорения копирования создавайте только primary key, а после его завершения создайте все остальные индексы.

  • Если на таблице отсутсвует primary key, вы будете получать ошибки:

    ERROR:  55000: cannot update table "t2" because it does not have a replica identity and publishes updates
    HINT:  To enable updating the table, set REPLICA IDENTITY using ALTER TABLE.
    

    Для работы репликации UPDATE, DELETE на таблицах без primary key необходимо изменить REPLICA IDENTITY :

    alter table t2 replica identity full;
    
  • В PostgreSQL версии 10 команда TRUNCATE не реплицируется.

    Вместо этого можно использовать DELETE.

  • Внешние таблицы не реплицируются.

  • Ошибки, связанные с работой логической репликации смотрите в логах Managed Service for PostgreSQL.

  • Если потребуется пересоздать подписку, то для предотвращения ошибок ограничения primary key, очистите таблицы на стороне подписчика.

В этой статье:
  • Настройка на стороне Аmazon RDS для PostgreSQL
  • Настройка на стороне Managed Service for PostgreSQL
  • Особенности использования логической репликации
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»