본문 바로가기

리눅스

MySQL 서버에서 UUID 확인하는 방법

728x90

MySQL 서버에서 UUID 확인하는 방법

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.

 

Last_IO_Error에 표시된 오류는 슬레이브 I/O 스레드가 중지된 이유를 나타내는 메시지입니다. 이 오류는 마스터와 슬레이브 간에 동일한 MySQL 서버 UUID가 있는 경우 발생합니다. MySQL 복제가 작동하기 위해서는 마스터와 슬레이브의 UUID가 서로 다르게 설정되어야 합니다.

 

이 오류를 해결하기 위해 다음 단계를 수행할 수 있습니다.

 

1. 마스터 서버의 MySQL 서버 UUID 확인

마스터 서버에 접속하고 MySQL 관리자 계정으로 로그인합니다.

다음 쿼리를 실행하여 마스터 서버의 MySQL 서버 UUID를 확인합니다.

SELECT @@server_uuid;
mysql> SELECT @@server_uuid;
+--------------------------------------+
| @@server_uuid                        |
+--------------------------------------+
| 1e320772-f6c4-11ed-a93d-0800278c2c47 |
+--------------------------------------+
1 row in set (0.00 sec)

 

2. 슬레이브 서버의 MySQL 서버 UUID 확인

슬레이브 서버에 접속하고 MySQL 관리자 계정으로 로그인합니다.

다음 쿼리를 실행하여 슬레이브 서버의 MySQL 서버 UUID를 확인합니다.

SELECT @@server_uuid;
mysql> SELECT @@server_uuid;
+--------------------------------------+
| @@server_uuid                        |
+--------------------------------------+
| 1e320772-f6c4-11ed-a93d-0800278c2c47 |
+--------------------------------------+
1 row in set (0.00 sec)

 

3. MySQL 서버 UUID 설정 변경

슬레이브 서버의 MySQL 서버 UUID를 변경하여 마스터와 서로 다른 값을 가지도록 설정합니다. 이를 위해 슬레이브 서버의 MySQL 설정 파일 (my.cnf 또는 my.ini)을 열고 server_uuid 값을 고유한 UUID 값으로 변경합니다.

예를 들어:

server_uuid = "unique_uuid_value"

 

4. 슬레이브 서버 재시작

MySQL 서비스를 재시작하여 변경 사항을 적용합니다.

 

이후에 슬레이브 서버를 다시 시작하고 SHOW SLAVE STATUS; 명령어를 실행하여 복제가 정상적으로 작동하는지 확인할 수 있습니다.

728x90

MySQL server_uuid를 신규로 생성하는 방법

MySQL server_uuid를 신규로 생성하는 방법은 다음과 같습니다.

 

1. MySQL 서버에 접속하고 MySQL 관리자 계정으로 로그인합니다.

 

2. 다음 쿼리를 실행하여 새로운 UUID 값을 생성합니다.

SELECT UUID();

이 쿼리는 새로운 UUID 값을 반환합니다.

  • node1 - master
mysql> SELECT UUID();
+--------------------------------------+
| UUID()                               |
+--------------------------------------+
| 8059cb95-f8ab-11ed-ada1-0800278c2c47 |
+--------------------------------------+
1 row in set (0.00 sec)
  • node2 - slave
mysql> SELECT UUID();
+--------------------------------------+
| UUID()                               |
+--------------------------------------+
| 81a1c980-f8ab-11ed-9f7e-0800273d1990 |
+--------------------------------------+
1 row in set (0.00 sec)
  • node3 - slave
mysql> SELECT UUID();
+--------------------------------------+
| UUID()                               |
+--------------------------------------+
| 8802cba8-f8ab-11ed-aa0c-080027dcd0c8 |
+--------------------------------------+
1 row in set (0.00 sec)

 

3. 생성된 UUID 값을 기록합니다.

 

4. MySQL 설정 파일 (my.cnf 또는 my.ini)을 열고 [mysqld] 섹션 아래에 다음 줄을 추가합니다.

여기서 "generated_uuid_value"는 이전 단계에서 생성된 UUID 값을 사용합니다.

server_uuid = "generated_uuid_value"

 

vim /usr/local/mysql/my.cnf
[mysqld]
...
server_uuid = "81a1c980-f8ab-11ed-9f7e-0800273d1990"

 

5. MySQL 서비스를 재시작하여 변경 사항을 적용합니다.

 

이제 MySQL 서버는 새로운 server_uuid 값으로 시작됩니다. 이 UUID는 서버의 고유 식별자로 사용됩니다.

MySQL 5.7 server_uuid를 편집하는 방법

MySQL 5.7 버전 서버에는 UUID가 있는 것으로 판단됩니다. MySQL 복제가 작동하려면 마스터와 슬레이브의 UUID가 서로 다르게 설정되어야 합니다.

 

MySQL 5.7 버전에서는 server_uuid 변수가 존재하지 않기 때문에 다른 방법을 사용해야 합니다. 아래 단계를 따라 진행해보세요.

 

1. 슬레이브 서버에서 MySQL 서비스를 중지합니다.

 

2. MySQL 데이터 디렉토리로 이동합니다. 기본적으로 /var/lib/mysql에 위치합니다.

cd /usr/local/mysql/data

 

3. 슬레이브 서버의 auto.cnf 파일을 찾습니다. 이 파일은 MySQL 서버가 생성한 UUID와 관련된 정보를 포함하고 있습니다.

 

4. auto.cnf 파일을 백업한 후 해당 파일을 편집기로 엽니다.

vim /usr/local/mysql/data/auto.cnf
[auto]
server-uuid=8802cba8-f8ab-11ed-aa0c-080027dcd0c8

 

5. auto.cnf 파일에서 server-uuid 또는 auto-gtid와 같은 UUID 관련 항목을 찾습니다.

 

6. UUID 값을 변경합니다. 예를 들어, 새로운 UUID 값을 생성하여 기존 값과 다르게 설정합니다. 이는 UUID 생성기를 사용하거나 온라인 UUID 생성 도구를 통해 수행할 수 있습니다.

 

7. auto.cnf 파일을 저장하고 닫습니다.

 

8. MySQL 서비스를 다시 시작합니다.

 

이제 슬레이브 서버는 새로운 UUID 값으로 시작되며, 마스터와 UUID가 다르게 설정되어 복제가 정상적으로 작동할 수 있습니다.

 

728x90