MySQL 8.4 바이너리 로그 위치 기반 복제 설정하기

목차

MySQL 원본(Source)과 복제본(Replica)을 연결하는 절차입니다. 여러 버전의 문법이 섞인 원노트를 8.4의 SOURCE·REPLICA 문법으로 정리했습니다. 이 글은 초기 데이터와 바이너리 로그 좌표가 일치하는 백업을 이미 복제본에 복원한 이후의 연결 단계입니다.

원본과 복제본 준비

두 서버의 server-id는 서로 달라야 합니다. 원본에는 바이너리 로그가 필요합니다. 복제본의 초기 스냅샷과 같은 시점의 파일명·위치를 기록합니다. 단순히 현재 좌표를 조회하고 과거 백업과 조합하면 데이터가 누락될 수 있습니다.

TERMINAL / CONFIG
[mysqld]
server-id=1
log-bin=mysql-bin
TERMINAL / CONFIG
CREATE USER 'replication'@'192.0.2.20' IDENTIFIED BY 'CHANGE_ME_PASSWORD';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.0.2.20';
SHOW BINARY LOG STATUS\G

복제본은 server-id=2처럼 다른 값을 사용합니다. 원본의 접속 허용 범위·인증 계정·TLS 인증서도 준비합니다. 아래 파일명과 위치는 실제 백업 시 기록한 값으로 교체합니다.

복제 연결 시작

관리자 권한으로 복제본에서 실행합니다. GTID 자동 위치 방식은 별도 절차이며 이 예시의 파일·위치 방식과 섞지 않습니다. TLS 연결 설정은 인증서 구성에 맞춰 확인합니다.

TERMINAL / CONFIG
STOP REPLICA;
CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='db-source.example.com',
  SOURCE_USER='replication',
  SOURCE_PASSWORD='CHANGE_ME_PASSWORD',
  SOURCE_PORT=53306,
  SOURCE_LOG_FILE='mysql-bin.000002',
  SOURCE_LOG_POS=894,
  SOURCE_SSL=1;
START REPLICA;
SHOW REPLICA STATUS\G

caching_sha2_password 인증을 TLS 없이 사용할 경우 RSA 공개키 교환 설정이 추가로 필요합니다. 공개키를 가져오는 옵션은 데이터 전송 전체를 암호화하는 기능이 아니므로 TLS와 구분합니다.

상태와 데이터 검증

Replica_IO_Running·Replica_SQL_Running, Last_IO_Error·Last_SQL_Error, 지연 및 로그 위치를 확인합니다. 시험 데이터가 복제되는지 점검하고 read_only 등 복제본 쓰기 정책도 별도로 설정합니다. 장애 원인을 확인하지 않은 채 바이너리 로그를 초기화하거나 복제 메타데이터를 지우지 않습니다.
참고: https://dev.mysql.com/doc/refman/8.4/en/change-replication-source-to.html

DB › MySQL
MySQL 목록