Наткнулся я тут недавно на ошибочку 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 символов, а лучше и поменьше.
Комментарии