검색

3.7. MySQL 복제

download PDF

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

MySQL 에서 복제를 설정하려면 다음을 수행해야 합니다.

중요

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

3.7.1. MySQL 소스 서버 구성

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

사전 요구 사항

  • 소스 서버가 설치되어 있어야 합니다.

절차

  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
    • Optional: binlog_ignore_db=db_name

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

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

    # systemctl restart mysqld.service

3.7.2. MySQL 복제본 서버 구성

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

사전 요구 사항

  • 복제본 서버가 설치되어 있어야 합니다.

절차

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

    • server-id=id

      id 는 고유해야 합니다.

    • relay-log=path_to_replica_server_log

      릴레이 로그는 복제 중에 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
    • Optional: binlog_ignore_db=db_name

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

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

    # systemctl restart mysqld.service

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

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

사전 요구 사항

절차

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

    mysql> CREATE USER 'replication_user'@'replica_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';
  2. 사용자 복제 권한을 부여합니다.

    mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'replica_server_ip';
  3. MySQL 데이터베이스에서 부여 테이블을 다시 로드합니다.

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

    mysql> SET @@GLOBAL.read_only = ON;

3.7.4. 소스 서버에 복제본 서버 연결

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

사전 요구 사항

절차

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

    mysql> SET @@GLOBAL.read_only = ON;
  2. 복제 소스를 구성합니다.

    mysql> CHANGE REPLICATION SOURCE TO
        -> SOURCE_HOST='source_ip_address',
        -> SOURCE_USER='replication_user',
        -> SOURCE_PASSWORD='password',
        -> SOURCE_AUTO_POSITION=1;
  3. MySQL 복제본 서버에서 복제본 스레드를 시작합니다.

    mysql> START REPLICA;
  4. 소스 및 복제본 서버 둘 다에서 읽기 전용 상태를 설정 해제합니다.

    mysql> SET @@GLOBAL.read_only = OFF;
  5. 선택 사항: 디버깅 목적으로 복제본 서버의 상태를 검사합니다.

    mysql> SHOW REPLICA STATUS\G;
    참고

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

    mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

    복제 서버를 다시 시작합니다.

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

    mysql> STOP REPLICA;

3.7.5. 검증

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

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

    mysql> SHOW MASTER STATUS;

    소스에서 실행되는 트랜잭션에 대한 GTID 집합을 표시하는 Executed_Gtid_Set 열은 비어 있지 않아야 합니다.

    참고

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

3.7.6. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.