В этом пошаговом руководстве показано, как настроить Amazon RDS MySQL для репликации данных в ClickHouse Cloud с помощью MySQL ClickPipe. Ответы на распространённые вопросы о MySQL CDC см. на странице с часто задаваемыми вопросами по MySQL.
Включение хранения бинарного лога
Бинарный лог — это набор файлов журнала, содержащих информацию об изменениях данных, внесённых в экземпляр сервера MySQL, и эти файлы бинарного лога необходимы для репликации. Чтобы настроить хранение бинарного лога в RDS MySQL, необходимо включить бинарное логирование и увеличить интервал хранения бинарного лога.
Включите бинарное логирование с помощью автоматического резервного копирования
Функция автоматического резервного копирования определяет, будет ли для MySQL включено бинарное логирование. Автоматическое резервное копирование можно настроить для вашего экземпляра в RDS Console, перейдя в Modify > Additional configuration > Backup и установив флажок Enable automated backups (если он ещё не установлен).

Мы рекомендуем установить для Backup retention period достаточно длительный срок в зависимости от сценария использования репликации.
Увеличьте интервал хранения бинарного лога
По умолчанию Amazon RDS удаляет бинарный лог как можно быстрее (то есть использует отложенную очистку). Мы рекомендуем увеличить интервал хранения бинарного лога как минимум до 72 часов, чтобы файлы бинарного лога оставались доступными для репликации в случае сбоев. Чтобы задать интервал хранения бинарного лога (binlog retention hours), используйте процедуру mysql.rds_set_configuration:
mysql=> call mysql.rds_set_configuration('binlog retention hours', 72);Если этот параметр не задан или задан слишком маленький интервал, это может привести к пропускам в бинарных логах, из-за чего ClickPipes не сможет возобновить репликацию.
Настройка параметров binlog
Группу параметров можно найти, если выбрать свой экземпляр MySQL в RDS Console, а затем перейти на вкладку Configuration.

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

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

binlog_row_metadata—FULL

binlog_row_image—FULL

Затем нажмите Save Changes в правом верхнем углу. Чтобы изменения вступили в силу, может потребоваться перезагрузка экземпляра. Это можно понять по статусу Pending reboot рядом со ссылкой на группу параметров на вкладке Configuration экземпляра RDS.
Включение режима GTID
Global Transaction Identifiers (GTIDs) — это уникальные идентификаторы, назначаемые каждой зафиксированной транзакции в MySQL. Они упрощают репликацию по binlog и делают устранение неполадок более простым. Мы рекомендуем включить режим GTID, чтобы MySQL ClickPipe мог использовать репликацию на основе GTID.
Репликация на основе GTID поддерживается в Amazon RDS for MySQL версий 5.7, 8.0 и 8.4. Чтобы включить режим GTID для вашего экземпляра Aurora MySQL, выполните следующие шаги:
- В RDS Console выберите свой экземпляр MySQL.
- Перейдите на вкладку Configuration.
- Нажмите ссылку группы параметров.
- Нажмите кнопку Edit в правом верхнем углу.
- Установите для
enforce_gtid_consistencyзначениеON. - Установите для
gtid-modeзначениеON. - Нажмите Save Changes в правом верхнем углу.
- Перезагрузите экземпляр, чтобы изменения вступили в силу.

Настройте пользователя базы данных
Подключитесь к своему экземпляру RDS MySQL под учетной записью администратора и выполните следующие команды:
-
Создайте отдельного пользователя для ClickPipes:
CREATE USER 'clickpipes_user'@'host' IDENTIFIED BY 'some-password'; -
Выдайте разрешения на схему. В следующем примере показаны разрешения для базы данных
mysql. Повторите эти команды для каждой базы данных и каждого хоста, которые нужно реплицировать:GRANT SELECT ON `mysql`.* TO 'clickpipes_user'@'host'; -
Выдайте пользователю разрешения на репликацию:
GRANT REPLICATION CLIENT ON *.* TO 'clickpipes_user'@'%'; GRANT REPLICATION SLAVE ON *.* TO 'clickpipes_user'@'%';
Использование IAM authentication (необязательно)
Instead of a password, you can authenticate the ClickPipes user with an AWS IAM role. This lets ClickPipes connect to your Amazon RDS instance without storing database credentials.
Enable IAM authentication
- Log in to your AWS account and go to the RDS instance you want to configure.
- Click Modify.
- Scroll to the Database authentication section.
- Select Password and IAM database authentication.
- Click Continue.
- Review the changes and select Apply immediately.
Create the ClickPipes user
Create the ClickPipes user with IAM authentication enabled, then grant it the same schema and replication privileges shown above:
CREATE USER 'clickpipes_iam_user' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';Obtain the ClickHouse service IAM role ARN
- Log in to your ClickHouse Cloud account.
- Select the ClickHouse service you want to connect.
- Select the Settings tab.
- Scroll to the Network security information section at the bottom of the page.
- Copy the service's Service role ID (IAM) value, shown below.

This value is your {ClickHouse_IAM_ARN} — the role ClickPipes uses to access your RDS instance.
Obtain the resource ID
- Log in to your AWS account and go to the RDS instance you want to configure.
- Select the Configuration tab.
- Note the Resource ID value — it looks like
db-xxxxxxxxxxxxxx. This is your{RDS_RESOURCE_ID}, which you reference in the permissions policy.
Create the IAM role
- Log in to your AWS account with an IAM user that has permission to create and manage IAM roles.
- Open the IAM console.
- Create a new IAM role with the following trust and permissions policies.
Trust policy (replace
{ClickHouse_IAM_ARN}with the IAM role ARN of your ClickHouse instance):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "{ClickHouse_IAM_ARN}" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }Permissions policy (replace
{RDS_RESOURCE_ID}with the resource ID of your RDS instance,{RDS_REGION}with its region, and{AWS_ACCOUNT}with your AWS account ID):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:{RDS_REGION}:{AWS_ACCOUNT}:dbuser:{RDS_RESOURCE_ID}/clickpipes_iam_user" ] } ] } - Once the role is created, copy its ARN. This is your
{RDS_ACCESS_IAM_ROLE_ARN}.
You can now use this IAM role to authenticate with your RDS instance from ClickPipes.
Настройте сетевой доступ
Управление доступом на основе IP
Чтобы ограничить доступ к вашему экземпляру Aurora MySQL, добавьте статические NAT IP-адреса, указанные в документации, в Inbound rules группы безопасности RDS.


Доступ через AWS PrivateLink по частной сети
Чтобы подключиться к вашему экземпляру RDS по частной сети, можно использовать AWS PrivateLink. Следуйте руководству по настройке AWS PrivateLink для ClickPipes, чтобы настроить подключение.
Следующие шаги
Теперь, когда ваш экземпляр Amazon RDS MySQL настроен для репликации через binlog и безопасного подключения к ClickHouse Cloud, вы можете создать свой первый MySQL ClickPipe. Ответы на распространённые вопросы о MySQL CDC см. на странице с часто задаваемыми вопросами по MySQL.