Database/MySQL, MariaDB

MySQL Binlog > GTID 모드 복제로 변경

BabyTT 2023. 3. 13. 22:19

MySQL의 기존 Binlog 복제를 GTID 모드로 변경하는 방법

 

Binlog 복제를 GTID 모드로 변경하기 위해서는 GTID 모드를 확인 (MySQL 8.0.30 기준으로 작성)

show variables like 'gtid_mode';

 

 

OFF로 설정되어 있을 경우, 

STOP REPLICA;

 

OFF로 설정되어 있을 경우 다음 순서로 GTID 모드 변수를 변경 후, GTID 모드를 활성화 한다.

set global gtid_mode='OFF_PERMISSIVE';
set global gtid_mode='ON_PERMISSIVE';
set global gtid_mode='ON';

 

 

복제 정보를 GTID를 이용할 수 있도록 변경한다.

Change replication source to
  source_host='소스정보',
  source_port='소스포트정보',
  source_user='소스의 복제 권한 부여된 계정명',
  source_password='복제 계정 비밀번호',
  source_auto_position=1;

START REPLICA;

 

 

복제 시작 후, REPLICA 서버에서 복제 에러 발생 시 GTID에서 복제 skip 방법

-- 오류가 발생한 GTID 번호 확인
select * from performance_schema.replication_applier_status_by_workers\G;

-- 위 GTID SKIP (skip이 가능한 트랜잭션인지 반드시 확인해야 함)
set gtid_next='GTID 번호'
begin;
commit;
start replica;
show replica status\G;

 

영구적으로 변경 사항을 반영하기 위해 mysql configuration에 다음 내역을 추가한다.

[mysqld]
server-id=각 서버의 고유 ID
log-bin=binlog
gtid-mode=ON
enforce-gtid-consistency=ON
log_slave_updates=ON