MySQL - Slave is not configured or failed to initialize properly

Last Updated on 3월 30, 2021 by 태랑(정현호)



1. 발생한 에러 내역

• 명령어 수행시

mysql> <replication 관련 커맨드 수행> 
ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. 
You must at least set --server-id to enable either a master or a slave.
Additional error messages can be found in the MySQL error log.


• mysql.err 로그 내역

[ERROR] Error creating master info: 
        Multiple replication metadata repository instances found with data in them. 
        Unable to decide which is the correct one to choose.
[ERROR] Failed to create or recover replication info repository.




2. 에러 발생 상황

아래와 같이 MSR 을 구성한 이후에 MSR을 Master 로 바라보는 새로운 Replica(Slave) DB를 구성하는 과정에서 발생되었습니다.






3. 원인

위의 그림 상에서 중간에 위치한 MSR Replica 서버에는 MSR 로 구성되었기 때문에 slave_master_info 과 slave_relay_log_info 을 TABLE 로 설정하여 replication 이 구성되게 됩니다.

slave_master_info 과 slave_relay_log_info 의 TABLE 설정에 따라서 Replica(Slave) 정보가 테이블에 저장되게 됩니다. 

이러한 정보를 가지는 DB를 백업 & 리스토어 를 통해 다시 Replication 을 구성을 하는 과정에서 새로 구성하는 Replica DB 는 MSR 이 아니라서 slave_master_info 와 slave_relay_log_info 파라미터를 별도로 설정하지 않아 발생된 상황이었습니다.

[참조1] MSR Replication 과 관련된 내용은 아래 포스팅을 참조하시면 됩니다.



[참조2] 백업&리스토어로 구성시 MySQL 을 종료 하고 cp 나 tar.gz 등으로 datadir 과 logdir를 복제를 하여 사용할 경우 server-uuid 정보가 겹치게(duplicate) 됨으로 파일을 삭제(또는 rename) 처리가 필요 합니다.

• show slave status\G 조회시 에러

Last_IO_Error: Fatal error: The SLAVE I/O thread stops because MASTER 
AND SLAVE have equal MySQL SERVER UUIDs; 
these UUIDs must be different FOR REPLICATION TO work.


• 조치 사항 : datadir 에 있는 auto.cnf 파일을 삭제(또는 rename)
파일에는 아래와 같이 UUID 정보가 있습니다.

[root]# cat /var/lib/mysql/auto.cnf

[auto]
server-uuid=134a0c55-0c7c-11e8-9b53-509a4c7578d3




4. 조치


MySQL을 기동 후 show slave status\G 등으로 조회하면 slave에 대한 정보는 조회되지 않지만 mysql.slave_master_info 와 mysql.slave_relay_log_info 테이블을 조회하면 Master 로 바라보는 MSR Replication DB의 정보가 그대로 남아있는 걸 확인 할 수 있고 이 정보를 삭제를 해주면 됩니다.

진행은 아래 절차대로 수행하면 됩니다. 

mysql> STOP SLAVE;
mysql> SET SQL_LOG_BIN=0;
mysql> DELETE FROM mysql.slave_master_info ;
mysql> DELETE FROM mysql.slave_relay_log_info ;
mysql> SET SQL_LOG_BIN=1;


수행이 완료 되면 MySQL 을 재기동을 합니다.

[root]# systemctl restart mysqld




Ref document.
Error creating master info: Multiple replication metadata repository instances found with data in them. (Doc ID 2128199.1)



관련된 다른 글

답글 남기기