2.8. TLS 암호화를 사용하여 MySQL 복제


MySQL은 기본부터 고급까지 복제를 위한 다양한 구성 옵션을 제공합니다. 이 섹션에서는 GTID(글로벌 트랜잭션 식별자)를 사용하여 새로 설치된 MySQL 서버에서 MySQL을 복제하는 트랜잭션 기반 방법을 설명합니다. GTID를 사용하면 트랜잭션 식별 및 일관성 확인이 간소화됩니다.

중요

복제에 기존 MySQL 서버를 사용하려면 먼저 데이터를 동기화해야 합니다. 자세한 내용은 업스트림 문서를 참조하십시오.

2.8.1. MySQL 소스 서버 구성

MySQL 소스 서버에 필요한 구성 옵션을 설정하여 TLS 프로토콜을 통해 데이터베이스 서버에서 수행된 모든 변경 사항을 올바르게 실행하고 복제할 수 있습니다.

사전 요구 사항

  • 소스 서버가 설치되어 있어야 합니다.
  • 소스 서버에는 TLS가 설정되어 있습니다.

    중요

    소스 및 복제본 인증서는 동일한 인증 기관에서 서명해야 합니다.

프로세스

  1. [mysqld] 섹션의 /etc/my.cnf.d/mysql-server.cnf 파일에 다음 옵션을 포함합니다.

    • bind-address=source_ip_adress

      이 옵션은 복제본에서 소스로 만든 연결에 필요합니다.

    • server-id=id

      ID 고유해야 합니다.

    • log_bin=path_to_source_server_log

      이 옵션은 MySQL 소스 서버의 바이너리 로그 파일의 경로를 정의합니다. 예: log_bin=/var/log/mysql/mysql-bin.log.

    • gtid_mode=ON

      이 옵션은 서버에서 GTID(글로벌 트랜잭션 식별자)를 활성화합니다.

    • enforce-gtid-consistency=ON

      서버는 GTID를 사용하여 안전하게 로깅할 수 있는 명령만 실행하여 GTID 일관성을 적용합니다.

    • Optional: binlog_do_db=db_name

      선택한 데이터베이스만 복제하려면 이 옵션을 사용합니다. 두 개 이상의 선택한 데이터베이스를 복제하려면 각 데이터베이스를 별도로 지정합니다.

      binlog_do_db=db_name1
      binlog_do_db=db_name2
      binlog_do_db=db_name3
      Copy to Clipboard Toggle word wrap
    • Optional: binlog_ignore_db=db_name

      복제에서 특정 데이터베이스를 제외하려면 이 옵션을 사용합니다.

  2. mysqld 서비스를 다시 시작합니다.

    # systemctl restart mysqld.service
    Copy to Clipboard Toggle word wrap

2.8.2. MySQL 복제본 서버 구성

MySQL 복제본 서버에 필요한 구성 옵션을 설정하여 복제를 성공적으로 수행할 수 있습니다.

사전 요구 사항

  • 복제본 서버가 설치되어 있어야 합니다.
  • 복제본 서버에는 TLS가 설정되어 있습니다.

    중요

    소스 및 복제본 인증서는 동일한 인증 기관에서 서명해야 합니다.

프로세스

  1. [mysqld] 섹션의 /etc/my.cnf.d/mysql-server.cnf 파일에 다음 옵션을 포함합니다.

    • server-id=id

      ID 고유해야 합니다.

    • relay-log=path_to_replica_server_log

      relay 로그는 복제 중에 MySQL 복제본 서버에서 생성한 로그 파일 집합입니다.

    • log_bin=path_to_replica_sever_log

      이 옵션은 MySQL 복제본 서버의 바이너리 로그 파일의 경로를 정의합니다. 예: log_bin=/var/log/mysql/mysql-bin.log.

      이 옵션은 복제본에 필요하지 않지만 강력하게 권장됩니다.

    • gtid_mode=ON

      이 옵션은 서버에서 GTID(글로벌 트랜잭션 식별자)를 활성화합니다.

    • enforce-gtid-consistency=ON

      서버는 GTID를 사용하여 안전하게 로깅할 수 있는 명령만 실행하여 GTID 일관성을 적용합니다.

    • log-replica-updates=ON

      이 옵션을 사용하면 소스 서버에서 수신된 업데이트가 복제본의 바이너리 로그에 기록됩니다.

    • skip-replica-start=ON

      이 옵션을 사용하면 복제본 서버가 시작될 때 복제 스레드가 시작되지 않습니다.

    • Optional: binlog_do_db=db_name

      특정 데이터베이스만 복제하려면 이 옵션을 사용합니다. 둘 이상의 데이터베이스를 복제하려면 각 데이터베이스를 별도로 지정합니다.

      binlog_do_db=db_name1
      binlog_do_db=db_name2
      binlog_do_db=db_name3
      Copy to Clipboard Toggle word wrap
    • Optional: binlog_ignore_db=db_name

      복제에서 특정 데이터베이스를 제외하려면 이 옵션을 사용합니다.

  2. mysqld 서비스를 다시 시작합니다.

    # systemctl restart mysqld.service
    Copy to Clipboard Toggle word wrap

2.8.3. MySQL 소스 서버에서 복제 사용자 생성

복제 사용자를 생성하고 복제 트래픽에 필요한 이 사용자에게 권한을 부여해야 합니다. 다음 절차에서는 적절한 권한이 있는 복제 사용자를 생성하는 방법을 보여줍니다. 소스 서버에서만 이러한 단계를 실행합니다.

사전 요구 사항

프로세스

  1. 복제 사용자를 생성합니다.

    mysql> CREATE USER 'replication_user'@'replica_server_hostname' IDENTIFIED WITH mysql_native_password BY 'password';
    Copy to Clipboard Toggle word wrap
  2. 사용자에게 복제 권한을 부여합니다.

    mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'replica_server_hostname';*
    Copy to Clipboard Toggle word wrap
  3. MySQL 데이터베이스에서 권한 부여 테이블을 다시 로드합니다.

    mysql> FLUSH PRIVILEGES;
    Copy to Clipboard Toggle word wrap
  4. 소스 서버를 읽기 전용 상태로 설정합니다.

    mysql> SET @@GLOBAL.read_only = ON;
    Copy to Clipboard Toggle word wrap

2.8.4. MySQL 복제본 서버를 소스 서버에 연결

MySQL 복제본 서버에서는 자격 증명과 소스 서버의 주소를 구성해야 합니다. 다음 절차에 따라 복제본 서버를 구현합니다.

사전 요구 사항

프로세스

  1. 복제본 서버를 읽기 전용 상태로 설정합니다.

    mysql> SET @@GLOBAL.read_only = ON;
    Copy to Clipboard Toggle word wrap
  2. 복제 소스를 구성합니다.

    mysql> CHANGE REPLICATION SOURCE TO
           SOURCE_HOST='source_hostname',
           SOURCE_USER='replication_user',
           SOURCE_PASSWORD='password',
           SOURCE_AUTO_POSITION=1,
           SOURCE_SSL=1,
           SOURCE_SSL_CA='path_to_ca_on_source',
           SOURCE_SSL_CAPATH='path_to_directory_with_certificates',
           SOURCE_SSL_CERT='path_to_source_certificate',
           SOURCE_SSL_KEY='path_to_source_key';
    Copy to Clipboard Toggle word wrap
  3. MySQL 복제본 서버에서 복제본 스레드를 시작합니다.

    mysql> START REPLICA;
    Copy to Clipboard Toggle word wrap
  4. 소스 및 복제본 서버에서 모두 읽기 전용 상태를 설정 해제합니다.

    mysql> SET @@GLOBAL.read_only = OFF;
    Copy to Clipboard Toggle word wrap
  5. 선택 사항: 디버깅을 위해 복제본 서버의 상태를 검사합니다.

    mysql> SHOW REPLICA STATUS\G;
    Copy to Clipboard Toggle word wrap
    참고

    복제본 서버가 시작 또는 연결에 실패하면 SHOW MASTER STATUS 명령의 출력에 표시된 바이너리 로그 파일 위치에 따라 특정 수의 이벤트를 건너뛸 수 있습니다. 예를 들어 정의된 위치에서 첫 번째 이벤트를 건너뜁니다.

    mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
    Copy to Clipboard Toggle word wrap

    그런 다음 복제본 서버를 다시 시작합니다.

  6. 선택 사항: 복제본 서버에서 복제본 스레드를 중지합니다.

    mysql> STOP REPLICA;
    Copy to Clipboard Toggle word wrap

2.8.5. MySQL 서버에서 복제 확인

여러 MySQL 서버에 복제를 구성한 후 작동하는지 확인해야 합니다.

프로세스

  1. 소스 서버에서 예제 데이터베이스를 생성합니다.

    mysql> CREATE DATABASE test_db_name;
    Copy to Clipboard Toggle word wrap
  2. test_db_name 데이터베이스가 복제본 서버에서 복제되는지 확인합니다.
  3. 소스 또는 복제본 서버 중 하나에서 다음 명령을 실행하여 MySQL 서버의 바이너리 로그 파일에 대한 상태 정보를 표시합니다.

    mysql> SHOW MASTER STATUS;
    Copy to Clipboard Toggle word wrap

    소스에서 실행되는 트랜잭션에 대한 GTID 집합을 표시하는 Executed_Gtid_Set 열은 비워 둘 수 없습니다.

    참고

    복제본 서버에서 SHOW REPLICA STATUS 를 사용할 때 Executed_Gtid_Set 행에 동일한 GTIDs 세트가 표시됩니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat