문제 상황

Slave 복제 연결 시 native password 방식 로드 실패 에러

Error connecting to source 'replica_user@db:3306'. This was attempt 6/10, with a delay of 60 seconds between attempts. Message: Plugin 'mysql_native_password' is not loaded

가설

docker-compose에서 master 서버 설정에 native password를 쓰겠다는 설정이 빠졌다고 판단

접근

  1. docker-compose에 native 설정 추가 후 master 서버 재실행 했으나 실패
  2. master 서버 실행 상태에서 native password 방식으로 변경하려 했으나 실패
Error Code: 1524. Plugin 'mysql_native_password' is not loaded

해결 방법

MySQL 8.4에서는 기본 인증이 caching_sha2_password로 고정되어 있고 replica설정은 native_password로 설정되어있어 충돌이 일어나는 것이다.

docker-compose 설정 수정이나 서버 상태 변경으로 해결이 불가능했기 때문에, MySQL 버전을 8.3으로 다운그레이드하여 native password를 기본으로 지원하도록 조정

결과 및 인사이트

MySQL 8.4부터는 기본 인증 방식이 변경되었기 때문에, 복제 환경을 구성할 때 master와 slave 간 인증 방식 호환을 반드시 사전에 고려해야 한다.

docker-compose만 수정한다고 항상 해결되지 않을 수 있으므로, 상황에 따라서는 버전 자체를 조정하는 유연한 대응이 필요하다.