Skip to the content.

GTID (Global Transaction Identifier)

https://dev.mysql.com/doc/refman/8.0/en/replication-gtids.html

구성

source_id:transaction_id


source_id 확인

SELECT @@server_uuid;
/*
+--------------------------------------+
| @@server_uuid                        |
+--------------------------------------+
| uuid                                 |
+--------------------------------------+
*/


구성 방법

  1. Parameter 설정
    • Master
        [mysqld]
        server-id=1
        log-bin=binlog
        gtid-mode=ON
        enforce-gtid-consistency=ON
        log_slave_updates=ON
      
    • Slave
        [mysqld]
        server-id=2
        log-bin=binlog
        gtid-mode=ON
        enforce-gtid-consistency=ON
        log_slave_updates=ON
      
  2. 재시작 후 gtid_mode 확인 (Master, Slave)
     SHOW VARIABLES LIKE '%gtid_mode%';
     /*
     +---------------+-------+
     | Variable_name | Value |
     +---------------+-------+
     | gtid_mode     | ON    |
     +---------------+-------+
     */
    
  3. Replication 유저 생성
     CREATE USER 'replication_user_name'@'%' IDENTIFIED BY 'password';
     GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication_user_name'@'%';
     FLUSH PRIVILEGES;
     SELECT USER, HOST FROM mysql.user;
    
  4. 마스터로부터 덤프 파일 백업 후 슬레이브에서 복원

  5. Replication 설정 및 동작 확인


GTID Mode

|값|Master에서의 동작|Slave에서의 동작| |-|-|-| |OFF|트랜잭션에 GTID 값을 설정하지 않음|트랜잭션에 GTID가 없다면 처리 불가능| |OFF_PERMISSIVE|트랜잭션에 GTID 값을 설정하지 않음|트랜잭션이 어떤 방식이든 처리 가능 (GTID가 있든 없든)| |ON_PERMISSIVE|트랜잭션에 GTID 값을 설정|트랜잭션이 어떤 방식이든 처리 가능 (GTID가 있든 없든)| |ON|트랜잭션에 GTID 값을 설정|트랜잭션에 GTID가 무조건 있어야 처리 가능|