> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Часто задаваемые вопросы о ClickPipes для MySQL.

# FAQ по ClickPipes для MySQL

<div id="does-the-clickpipe-support-mariadb">
  ### Поддерживает ли MySQL ClickPipe MariaDB?
</div>

Да, MySQL ClickPipe поддерживает MariaDB 10.0 и выше. Его конфигурация очень похожа на конфигурацию MySQL, при этом по умолчанию используется GTID-репликация.

<div id="does-the-clickpipe-support-planetscale-vitess">
  ### Поддерживает ли MySQL ClickPipe PlanetScale, Vitess или TiDB?
</div>

Нет, они не поддерживают binlog API MySQL.

<div id="how-is-replication-managed">
  ### Как управляется репликация?
</div>

Мы поддерживаем репликацию как через `GTID`, так и через `FilePos`. В отличие от Postgres, здесь нет слота для управления смещением. Вместо этого нужно настроить сервер MySQL с достаточным периодом хранения binlog. Если наше смещение в binlog станет недействительным *(например, если mirror был слишком долго приостановлен или при использовании репликации `FilePos` произошло аварийное переключение базы данных)*, вам потребуется повторно синхронизировать пайп. Обязательно оптимизируйте materialized view, зависящие от целевых таблиц, поскольку неэффективные запросы могут замедлить ингестию так, что она начнёт отставать и выйдет за пределы периода хранения.

Также возможно, что неактивная база данных выполнит ротацию файла журнала, не давая ClickPipes перейти к более новому смещению. В этом случае может потребоваться настроить таблицу heartbeat с регулярными обновлениями по расписанию.

В начале начальной загрузки мы фиксируем смещение binlog, с которого нужно начинать. Это смещение должно оставаться действительным к моменту завершения начальной загрузки, чтобы CDC (фиксация изменений данных) мог продолжиться. Если вы выполняете приём большого объёма данных, обязательно настройте подходящий период хранения binlog. При настройке таблиц вы можете ускорить начальную загрузку, включив параметр *Use a custom partitioning key for initial load* для больших таблиц в расширенных настройках, чтобы мы могли загружать одну таблицу параллельно.

<div id="binlog-event-exceeded-max-allowed-packet">
  ### Почему мой пайп завершается из-за ошибки max\_allowed\_packet binlog?
</div>

Если ваш пайп завершается с ошибкой, похожей на:

```text theme={null}
MySQL execute error: ERROR 1236 (HY000): log event entry exceeded max_allowed_packet;
Increase max_allowed_packet on source
```

это означает, что одно событие binlog (соответствующее изменению одной строки) больше, чем значение [`max_allowed_packet`](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_allowed_packet) на вашем сервере MySQL. Поскольку сервер не может отправить событие, превышающее этот лимит, чтение потока binlog прерывается, и CDC (фиксация изменений данных) не может продвигаться дальше.

Чаще всего это происходит из-за строк с большими значениями `BLOB`, `TEXT` или `JSON`. Чтобы устранить проблему:

* **Увеличьте `max_allowed_packet` на источнике.** Установите значение больше размера самого крупного изменения строки — обычно безопасно задать максимальное значение `1G`:
  ```sql theme={null}
  SET GLOBAL max_allowed_packet = 1073741824; -- 1 GiB
  ```
  Также задайте его в конфигурации сервера (например, в `my.cnf` или в DB Parameter Group), чтобы значение сохранялось после перезапуска.
* **Если одна строка больше 1G:** выполните повторную синхронизацию пайпа.

<div id="tls-certificate-validation-error">
  ### Почему при подключении к MySQL возникает ошибка проверки TLS-сертификата?
</div>

При подключении к MySQL вы можете столкнуться с ошибками сертификата, такими как `x509: certificate is not valid for any names` или `x509: certificate signed by unknown authority`. Это происходит потому, что ClickPipes по умолчанию использует шифрование TLS.

У вас есть несколько способов решить эти проблемы:

1. **Укажите поле TLS Host** — если имя хоста в вашем подключении не совпадает с именем в сертификате (это часто бывает при использовании AWS PrivateLink через Endpoint Service). Установите значение "TLS Host (optional)" так, чтобы оно совпадало с Common Name (CN) или Subject Alternative Name (SAN) сертификата.

2. **Загрузите свой корневой CA** — для серверов MySQL, использующих внутренние центры сертификации, или Google Cloud SQL со стандартной конфигурацией CA на instance. Подробнее о том, как получить доступ к сертификатам Google Cloud SQL, см. [в этом разделе](/ru/integrations/clickpipes/mysql/source/gcp#download-root-ca-certificate-gcp-mysql).

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

4. **Отключите проверку сертификата** — для самоуправляемого MySQL или MariaDB, в конфигурации по умолчанию которых создаётся самоподписанный сертификат, который мы не можем проверить ([MySQL](https://dev.mysql.com/doc/refman/8.4/en/creating-ssl-rsa-files-using-mysql.html#creating-ssl-rsa-files-using-mysql-automatic), [MariaDB](https://mariadb.com/kb/en/securing-connections-for-client-and-server/#enabling-tls-for-mariadb-server)). Использование такого сертификата шифрует данные при передаче, но создаёт риск подмены сервера. Для промышленных сред мы рекомендуем использовать корректно подписанные сертификаты, однако этот вариант удобен для разового тестирования или при подключении к устаревшей инфраструктуре.

<div id="do-you-support-schema-changes">
  ### Поддерживаются ли изменения схемы?
</div>

Подробнее см. на странице [ClickPipes for MySQL: Поддержка передачи изменений схемы](/ru/integrations/clickpipes/mysql/schema-changes).

<div id="support-on-delete-cascade">
  ### Поддерживается ли репликация каскадных удалений по внешним ключам MySQL `ON DELETE CASCADE`?
</div>

Из-за особенностей [обработки каскадных удалений](https://dev.mysql.com/doc/refman/8.0/en/innodb-and-mysql-replication.html) в MySQL они не записываются в binlog. Поэтому ClickPipes (как и любой инструмент CDC (фиксация изменений данных)) не может их реплицировать. Это может привести к несогласованности данных. Для поддержки каскадных удалений рекомендуется использовать триггеры.

<div id="replicate-table-dot">
  ### Почему я не могу реплицировать таблицу, если в её имени есть точка?
</div>

В PeerDB пока есть ограничение: если в идентификаторе исходной таблицы — то есть в имени схемы или имени таблицы — есть точки, репликация не поддерживается. Это связано с тем, что PeerDB разделяет идентификатор по точке и в таком случае не может понять, где схема, а где таблица.
Сейчас ведётся работа над тем, чтобы поддержать отдельный ввод схемы и таблицы и тем самым обойти это ограничение.

<div id="include-excluded-columns">
  ### Можно ли включить столбцы, которые я изначально исключил из репликации?
</div>

Пока это не поддерживается. В качестве альтернативы можно [повторно синхронизировать таблицу](/ru/integrations/clickpipes/mysql/table-resync), столбцы из которой вы хотите включить.
