Наткнулся я тут недавно на ошибочку Access denied for user '%s'@'%s' (using password: %s) при репликации бд в режиме Active-Active.

Предыстория

Создал я значит репликацию Active-Active в MariaDB. Всё находилось в докере, так как бд используется для mailcow, а он как известно весь на докере. Делал реплику я для отказоустойчивости mailcow, этакий кластер из 2 серверов.

Так вот сделал я реплику, и она даже работала, но люблю я потестить перед вводом в прод так как не престаю удивляться странным багам в opensource продуктах.

И первый тест был простое выключение контейнера с mariadb и последующее включение. Зеркало оставшегося контейнера конечно ругалось что реплика недоступна, но как только первый контейнер подымался репликация работала как надо. И первый этап теста пройден.

Остался второй этап, который судя по первому ничего плохого и не мог предвещать. А заключался второй тест в простой перезагрузке хоста с контейнерами, т.е. по сути такой же рестарт контейнера. Ну вот я перезагрузил и в логах вижу это Access denied for user '%s'@'%s' (using password: %s)

Что за?

Как это пользователь не может подключиться? Ладно, проверяем и как бы всё работает.

Читаем документацию и видим вот такую строчку The password used for a replication user account in a CHANGE MASTER TO statement is limited to 32 characters in length. Ну ладно захотелось вам ограничить, но какого чёрта это всё работает при создании реплики, да и после перезапуска контейнера? А вылезает только после перезагрузки самого хоста, да еще и ошибка такая информативная.

Решение

Ну как бы всё просто пароль пользователя, который используется для репликации должен быть не больше 32 символов, а лучше и поменьше.