> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Пошаговое руководство по настройке Amazon RDS MySQL в качестве источника для ClickPipes

# Руководство по настройке источника RDS MySQL

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

В этом пошаговом руководстве показано, как настроить Amazon RDS MySQL для репликации данных в ClickHouse Cloud с помощью [MySQL ClickPipe](/docs/ru/integrations/clickpipes/mysql/index). Ответы на распространённые вопросы о CDC MySQL см. на [странице с часто задаваемыми вопросами по MySQL](/docs/ru/integrations/clickpipes/mysql/faq).

<div id="enable-binlog-retention-rds">
  ## Включение хранения бинарного лога
</div>

Бинарный лог — это набор файлов журнала, содержащих информацию об изменениях данных, внесённых в экземпляр сервера MySQL, и эти файлы бинарного лога необходимы для репликации. Чтобы настроить хранение бинарного лога в RDS MySQL, необходимо [включить бинарное логирование](#enable-binlog-logging) и [увеличить интервал хранения бинарного лога](#binlog-retention-interval).

<Steps>
  <Step title="Включите бинарное логирование с помощью автоматического резервного копирования" id="enable-binlog-logging">
    Функция автоматического резервного копирования определяет, будет ли для MySQL включено бинарное логирование. Автоматическое резервное копирование можно настроить для вашего экземпляра в RDS Console, перейдя в **Modify** > **Additional configuration** > **Backup** и установив флажок **Enable automated backups** (если он ещё не установлен).

    <Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/mysql/source/rds/rds-backups.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=88828f15321d2cfda5570c7b03755bf2" alt="Включение автоматического резервного копирования в RDS" size="lg" border width="3230" height="530" data-path="images/integrations/data-ingestion/clickpipes/mysql/source/rds/rds-backups.webp" />

    Мы рекомендуем установить для **Backup retention period** достаточно длительный срок в зависимости от сценария использования репликации.
  </Step>

  <Step title="Увеличьте интервал хранения бинарного лога" id="binlog-retention-interval">
    <Warning>
      Если ClickPipes попытается возобновить репликацию, а необходимые файлы бинарного лога уже были удалены из-за настроенного срока хранения binlog, ClickPipe перейдёт в состояние с ошибкой, и потребуется повторная синхронизация.
    </Warning>

    По умолчанию Amazon RDS удаляет бинарный лог как можно быстрее (то есть использует *отложенную очистку*). Мы рекомендуем увеличить интервал хранения бинарного лога как минимум до **72 часов**, чтобы файлы бинарного лога оставались доступными для репликации в случае сбоев. Чтобы задать интервал хранения бинарного лога ([`binlog retention hours`](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql-stored-proc-configuring.html#mysql_rds_set_configuration-usage-notes.binlog-retention-hours)), используйте процедуру [`mysql.rds_set_configuration`](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql-stored-proc-configuring.html#mysql_rds_set_configuration):

    [//]: # "ПРИМЕЧАНИЕ: Большинство провайдеров CDC рекомендуют максимальный срок хранения для RDS (7 дней/168 часов). Поскольку это влияет на использование диска, мы даём более осторожную рекомендацию: минимум 3 дня/72 часа."

    ```text theme={null}
    mysql=> call mysql.rds_set_configuration('binlog retention hours', 72);
    ```

    Если этот параметр не задан или задан слишком маленький интервал, это может привести к пропускам в бинарных логах, из-за чего ClickPipes не сможет возобновить репликацию.
  </Step>
</Steps>

<div id="binlog-settings">
  ## Настройка параметров binlog
</div>

Группу параметров можно найти, если выбрать свой экземпляр MySQL в RDS Console, а затем перейти на вкладку **Configuration**.

<Tip>
  Если у вас кластер MySQL, указанные ниже параметры находятся в группе параметров [DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.CreatingCluster.html), а не в группе параметров экземпляра DB.
</Tip>

<Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/mysql/parameter_group/rds_config.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=6036d21ce1fc3406e4f55afd0438d3f7" alt="Где найти группу параметров в RDS" size="lg" border width="708" height="853" data-path="images/integrations/data-ingestion/clickpipes/mysql/parameter_group/rds_config.webp" />

<br />

Нажмите ссылку группы параметров — откроется её отдельная страница. В правом верхнем углу вы увидите кнопку **Edit**.

<Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/mysql/parameter_group/edit_button.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=192065830ca746a62c66263ec2a20b0d" alt="Изменение группы параметров" size="lg" border width="1662" height="292" data-path="images/integrations/data-ingestion/clickpipes/mysql/parameter_group/edit_button.webp" />

Нужно задать следующие параметры:

1. `binlog_format` — `ROW`.

<Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/mysql/parameter_group/binlog_format.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=1a7a35322b2245e40effe756d3d2ad3b" alt="Формат binlog: ROW" size="lg" border width="960" height="232" data-path="images/integrations/data-ingestion/clickpipes/mysql/parameter_group/binlog_format.webp" />

2. `binlog_row_metadata` — `FULL`

<Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/mysql/parameter_group/binlog_row_metadata.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=0c74f95749753ac8b403f7bcf98577b7" alt="Метаданные строк binlog: FULL" size="lg" border width="934" height="234" data-path="images/integrations/data-ingestion/clickpipes/mysql/parameter_group/binlog_row_metadata.webp" />

3. `binlog_row_image` — `FULL`

<Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/mysql/parameter_group/binlog_row_image.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=3429000da2c1e3133c96c89ea39f151c" alt="Образ строки binlog: FULL" size="lg" border width="934" height="234" data-path="images/integrations/data-ingestion/clickpipes/mysql/parameter_group/binlog_row_image.webp" />

<br />

Затем нажмите **Save Changes** в правом верхнем углу. Чтобы изменения вступили в силу, может потребоваться перезагрузка экземпляра. Это можно понять по статусу `Pending reboot` рядом со ссылкой на группу параметров на вкладке **Configuration** экземпляра RDS.

<div id="gtid-mode">
  ## Включение режима GTID
</div>

<Tip>
  MySQL ClickPipe также поддерживает репликацию без использования режима GTID. Однако для более высокой производительности и более простого устранения неполадок рекомендуется включить режим GTID.
</Tip>

[Global Transaction Identifiers (GTIDs)](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids.html) — это уникальные идентификаторы, назначаемые каждой зафиксированной транзакции в MySQL. Они упрощают репликацию по binlog и делают устранение неполадок более простым. Мы **рекомендуем** включить режим GTID, чтобы MySQL ClickPipe мог использовать репликацию на основе GTID.

Репликация на основе GTID поддерживается в Amazon RDS for MySQL версий 5.7, 8.0 и 8.4. Чтобы включить режим GTID для вашего экземпляра Aurora MySQL, выполните следующие шаги:

1. В RDS Console выберите свой экземпляр MySQL.
2. Перейдите на вкладку **Configuration**.
3. Нажмите ссылку группы параметров.
4. Нажмите кнопку **Edit** в правом верхнем углу.
5. Установите для `enforce_gtid_consistency` значение `ON`.
6. Установите для `gtid-mode` значение `ON`.
7. Нажмите **Save Changes** в правом верхнем углу.
8. Перезагрузите экземпляр, чтобы изменения вступили в силу.

<Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/mysql/enable_gtid.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=3e5f43eadc040115889be1aff97bcd4a" alt="GTID включен" size="lg" border width="1650" height="469" data-path="images/integrations/data-ingestion/clickpipes/mysql/enable_gtid.webp" />

<br />

<Tip>
  MySQL ClickPipe также поддерживает репликацию без использования режима GTID. Однако для более высокой производительности и более простого устранения неполадок рекомендуется включить режим GTID.
</Tip>

<div id="configure-database-user">
  ## Настройте пользователя базы данных
</div>

Подключитесь к своему экземпляру RDS MySQL под учетной записью администратора и выполните следующие команды:

1. Создайте отдельного пользователя для ClickPipes:

   ```sql theme={null}
   CREATE USER 'clickpipes_user'@'host' IDENTIFIED BY 'some-password';
   ```

2. Выдайте разрешения на схему. В следующем примере показаны разрешения для базы данных `mysql`. Повторите эти команды для каждой базы данных и каждого хоста, которые нужно реплицировать:

   ```sql theme={null}
   GRANT SELECT ON `mysql`.* TO 'clickpipes_user'@'host';
   ```

3. Выдайте пользователю разрешения на репликацию:

   ```sql theme={null}
   GRANT REPLICATION CLIENT ON *.* TO 'clickpipes_user'@'%';
   GRANT REPLICATION SLAVE ON *.* TO 'clickpipes_user'@'%';
   ```

<div id="iam-authentication">
  ### Использование IAM authentication (необязательно)
</div>

Вместо пароля можно аутентифицировать пользователя ClickPipes с помощью role-based access через роль IAM AWS. Создайте пользователя, как показано ниже, а затем предоставьте ему те же привилегии на схему и репликацию, что и выше:

```sql theme={null}
CREATE USER 'clickpipes_iam_user' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
```

См. [Аутентификация БД с помощью AWS IAM (RDS/Aurora)](/docs/ru/integrations/clickpipes/postgres/auth), где приведены полные инструкции по настройке роли IAM и политики, необходимых для аутентификации ClickPipes таким способом.

<div id="configure-network-access">
  ## Настройте сетевой доступ
</div>

<div id="ip-based-access-control">
  ### Управление доступом на основе IP
</div>

Чтобы ограничить доступ к вашему экземпляру Aurora MySQL, добавьте [статические NAT IP-адреса, указанные в документации](/docs/ru/integrations/clickpipes/home#list-of-static-ips), в **Inbound rules** группы безопасности RDS.

<Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/mysql/source/rds/security-group-in-rds-mysql.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=41438dc20ba5bf00f8891b847ec9dee7" alt="Где найти группу безопасности в RDS MySQL?" size="lg" border width="2850" height="994" data-path="images/integrations/data-ingestion/clickpipes/mysql/source/rds/security-group-in-rds-mysql.webp" />

<Image img="https://mintcdn.com/private-7c7dfe99/ODDx2ujqe_LWUyTV/images/integrations/data-ingestion/clickpipes/postgres/source/rds/edit_inbound_rules.webp?fit=max&auto=format&n=ODDx2ujqe_LWUyTV&q=85&s=9808abca84e218a11bf9a241473ba062" alt="Изменить правила входящего трафика для указанной выше группы безопасности" size="lg" border width="1800" height="935" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/rds/edit_inbound_rules.webp" />

<div id="private-access-via-aws-privatelink">
  ### Доступ через AWS PrivateLink по частной сети
</div>

Чтобы подключиться к вашему экземпляру RDS по частной сети, можно использовать AWS PrivateLink. Следуйте [руководству по настройке AWS PrivateLink для ClickPipes](/docs/ru/resources/support-center/knowledge-base/cloud-services/aws-privatelink-setup-for-clickpipes), чтобы настроить подключение.

<div id="next-steps">
  ## Следующие шаги
</div>

Теперь, когда ваш экземпляр Amazon RDS MySQL настроен для репликации через binlog и безопасного подключения к ClickHouse Cloud, вы можете [создать свой первый MySQL ClickPipe](/docs/ru/integrations/clickpipes/mysql/index#create-your-clickpipe). Ответы на распространённые вопросы о MySQL CDC см. на [странице с часто задаваемыми вопросами по MySQL](/docs/ru/integrations/clickpipes/mysql/faq).
