2.8. TLS 암호화를 사용하여 MySQL 복제
MySQL은 기본부터 고급까지 복제를 위한 다양한 구성 옵션을 제공합니다. 이 섹션에서는 GTID(글로벌 트랜잭션 식별자)를 사용하여 새로 설치된 MySQL 서버에서 MySQL을 복제하는 트랜잭션 기반 방법을 설명합니다. GTID를 사용하면 트랜잭션 식별 및 일관성 확인이 간소화됩니다.
복제에 기존 MySQL 서버를 사용하려면 먼저 데이터를 동기화해야 합니다. 자세한 내용은 업스트림 문서를 참조하십시오.
2.8.1. MySQL 소스 서버 구성 링크 복사링크가 클립보드에 복사되었습니다!
MySQL 소스 서버에 필요한 구성 옵션을 설정하여 TLS 프로토콜을 통해 데이터베이스 서버에서 수행된 모든 변경 사항을 올바르게 실행하고 복제할 수 있습니다.
사전 요구 사항
- 소스 서버가 설치되어 있어야 합니다.
소스 서버에는 TLS가 설정되어 있습니다.
중요소스 및 복제본 인증서는 동일한 인증 기관에서 서명해야 합니다.
프로세스
[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
binlog_do_db=db_name1 binlog_do_db=db_name2 binlog_do_db=db_name3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Optional:
binlog_ignore_db=db_name
복제에서 특정 데이터베이스를 제외하려면 이 옵션을 사용합니다.
mysqld
서비스를 다시 시작합니다.systemctl restart mysqld.service
# systemctl restart mysqld.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.2. MySQL 복제본 서버 구성 링크 복사링크가 클립보드에 복사되었습니다!
MySQL 복제본 서버에 필요한 구성 옵션을 설정하여 복제를 성공적으로 수행할 수 있습니다.
사전 요구 사항
- 복제본 서버가 설치되어 있어야 합니다.
복제본 서버에는 TLS가 설정되어 있습니다.
중요소스 및 복제본 인증서는 동일한 인증 기관에서 서명해야 합니다.
프로세스
[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
binlog_do_db=db_name1 binlog_do_db=db_name2 binlog_do_db=db_name3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Optional:
binlog_ignore_db=db_name
복제에서 특정 데이터베이스를 제외하려면 이 옵션을 사용합니다.
mysqld
서비스를 다시 시작합니다.systemctl restart mysqld.service
# systemctl restart mysqld.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.3. MySQL 소스 서버에서 복제 사용자 생성 링크 복사링크가 클립보드에 복사되었습니다!
복제 사용자를 생성하고 복제 트래픽에 필요한 이 사용자에게 권한을 부여해야 합니다. 다음 절차에서는 적절한 권한이 있는 복제 사용자를 생성하는 방법을 보여줍니다. 소스 서버에서만 이러한 단계를 실행합니다.
사전 요구 사항
- 소스 서버는 MySQL 소스 서버 구성에 설명된 대로 설치 및 구성됩니다.
프로세스
복제 사용자를 생성합니다.
mysql> CREATE USER 'replication_user'@'replica_server_hostname' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> CREATE USER 'replication_user'@'replica_server_hostname' IDENTIFIED WITH mysql_native_password BY 'password';
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자에게 복제 권한을 부여합니다.
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'replica_server_hostname';*
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'replica_server_hostname';*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MySQL 데이터베이스에서 권한 부여 테이블을 다시 로드합니다.
mysql> FLUSH PRIVILEGES;
mysql> FLUSH PRIVILEGES;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 소스 서버를 읽기 전용 상태로 설정합니다.
mysql> SET @@GLOBAL.read_only = ON;
mysql> SET @@GLOBAL.read_only = ON;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.4. MySQL 복제본 서버를 소스 서버에 연결 링크 복사링크가 클립보드에 복사되었습니다!
MySQL 복제본 서버에서는 자격 증명과 소스 서버의 주소를 구성해야 합니다. 다음 절차에 따라 복제본 서버를 구현합니다.
사전 요구 사항
- 소스 서버는 MySQL 소스 서버 구성에 설명된 대로 설치 및 구성됩니다.
- 복제본 서버는 MySQL 복제본 서버 구성에 설명된 대로 설치 및 구성됩니다.
- 복제 사용자를 생성했습니다. MySQL 소스 서버에서 복제 사용자 생성을 참조하십시오.
프로세스
복제본 서버를 읽기 전용 상태로 설정합니다.
mysql> SET @@GLOBAL.read_only = ON;
mysql> SET @@GLOBAL.read_only = ON;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 복제 소스를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MySQL 복제본 서버에서 복제본 스레드를 시작합니다.
mysql> START REPLICA;
mysql> START REPLICA;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 소스 및 복제본 서버에서 모두 읽기 전용 상태를 설정 해제합니다.
mysql> SET @@GLOBAL.read_only = OFF;
mysql> SET @@GLOBAL.read_only = OFF;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 디버깅을 위해 복제본 서버의 상태를 검사합니다.
mysql> SHOW REPLICA STATUS\G;
mysql> SHOW REPLICA STATUS\G;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고복제본 서버가 시작 또는 연결에 실패하면
SHOW MASTER STATUS
명령의 출력에 표시된 바이너리 로그 파일 위치에 따라 특정 수의 이벤트를 건너뛸 수 있습니다. 예를 들어 정의된 위치에서 첫 번째 이벤트를 건너뜁니다.mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그런 다음 복제본 서버를 다시 시작합니다.
선택 사항: 복제본 서버에서 복제본 스레드를 중지합니다.
mysql> STOP REPLICA;
mysql> STOP REPLICA;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.5. MySQL 서버에서 복제 확인 링크 복사링크가 클립보드에 복사되었습니다!
여러 MySQL 서버에 복제를 구성한 후 작동하는지 확인해야 합니다.
프로세스
소스 서버에서 예제 데이터베이스를 생성합니다.
mysql> CREATE DATABASE test_db_name;
mysql> CREATE DATABASE test_db_name;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
test_db_name
데이터베이스가 복제본 서버에서 복제되는지 확인합니다. 소스 또는 복제본 서버 중 하나에서 다음 명령을 실행하여 MySQL 서버의 바이너리 로그 파일에 대한 상태 정보를 표시합니다.
mysql> SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 소스에서 실행되는 트랜잭션에 대한 GTID 집합을 표시하는
Executed_Gtid_Set
열은 비워 둘 수 없습니다.참고복제본 서버에서
SHOW REPLICA STATUS
를 사용할 때Executed_Gtid_Set
행에 동일한 GTIDs 세트가 표시됩니다.