Laravel и MySQL Group Replication

Я пытаюсь создать приложение Laravel с настройкой HA MySQL. Поэтому я остановился на MySQL Group Replication с тремя серверами в режиме Multi-Primary и балансировщиком нагрузки перед серверами MySQL.

Это работало довольно хорошо, пока я не узнал, что MySQL Group Replication не может обрабатывать каскадные операторы в моем приложении Laravel. Единственный способ исправить это - перейти от настройки Multi-Primary к настройке Single-Primary с остальными серверами в качестве подчиненных.

В MySQL Group Replication, если мастер отключается, он автоматически назначает одного из подчиненных в качестве нового мастера. Но я не могу понять, как справиться с этим в моем приложении. Лучшее, что я могу выяснить - это вручную изменить IP-адрес сервера MySQL в Laravel, если мастер выйдет из строя. Я больше не могу использовать настройку балансировки нагрузки, так как только мастер может принимать записи.

Кто-нибудь знает, как я могу справиться с автоматической сменой серверов MySQL в Laravel? Любая помощь высоко ценится!

1 ответ

Мои ответы могут прийти слишком поздно, но я все равно буду отвечать на собственном опыте, если кто-то еще наткнется на эту ветку.

Вы можете взглянуть на роутер mysql https://dev.mysql.com/doc/mysql-router/8.0/en/

В основном, то, что я настроил, так это то, что на каждом из моих серверов приложений был установлен маршрутизатор mysql, а мой laravel был настроен на использование сокета от локального маршрутизатора mysql. Маршрутизатор Mysql имеет функции, позволяющие определить, какой мастер вышел из строя, и автоматически перенаправить запись / чтение на другие доступные узлы.

Другие вопросы по тегам