Репликация
В кластерах Managed Service for MySQL используется полусинхронная репликация: по умолчанию мастер ожидает завершения транзакции хотя бы на одной реплике. Отличие полусинхронной репликации Managed Service for MySQL от стандартной схемы в том, что при отказе всех полусинхронных реплик кластер не переключается на асинхронную репликацию, а отключает репликацию совсем пока хотя бы одна реплика не станет доступна.
Если реплика и мастер находятся в разных зонах доступности, то при полусинхронной репликации задержка подтверждения транзакции (latency) будет не меньше, чем время передачи данных туда и обратно (Round-Trip Time, RTT) между дата-центрами, которые размещены в этих зонах доступности. Это приводит к тому, что при записи в один поток и включенном режиме AUTOCOMMIT производительность такого кластера может существенно снижаться. Для достижения максимальной производительности рекомендуем, где это возможно, производить запись в несколько потоков, а также отключить AUTOCOMMIT и группировать запросы в транзакции.
Также при репликации в Managed Service for MySQL используются глобальные идентификаторы транзакций (GTID), которые помогают поддерживать консистентность данных между хостами кластера.
Из-за ограниченных ресурсов хосты классов b1.nano, b1.micro, b2.nano и b2.micro не реплицируются.
Особенности репликации в Managed Service for MySQL
Если кластер состоит из единственного хоста, или все реплики, кроме мастера, полностью недоступны (хосты в состоянии DEAD
), репликация не работает. Как только в кластере появляется или становится доступной какая-либо реплика, полусинхронная репликация запускается поэтапно:
- Когда реплика становится доступной, для нее сразу включается асинхронная репликация с мастера. Мастер при этом полностью доступен для чтения и записи, а отставание реплики постепенно сокращается.
- Как только отставание становится меньше 100 МБ, включается синхронная репликация. Мастер становится недоступным для записи, пока данные не синхронизируются с репликой полностью — этот процесс может занимать от единиц до десятков секунд, в зависимости от производительности сети.
- Как только данные на мастере и реплике полностью синхронизируются, хосты снова становятся полностью доступны и реплицируются синхронно.