MySQL 복제는 하나의 데이터베이스 서버(마스터)에서 하나 이상의 서버(슬레이브)로 데이터를 복사하는 프로세스입니다.
MySQL은 마스터/슬레이브 토폴로지가 하나 이상의 데이터베이스 서버가 마스터 역할을 하는 반면 하나 이상의 서버가 슬레이브 역할을 하는 가장 잘 알려진 토폴로지의 하나로 여러 복제 토폴로지를 지원합니다. 기본적으로 복제는 비동기식입니다. 마스터는 데이터베이스 수정 내용을 설명하는 이벤트를 이진 로그로 보내고 슬레이브는 이벤트가 준비되면 이벤트를 요청합니다.
Debian 10에서 마스터 서버 1개와 슬레이브 서버 1개로 MariaDB 마스터/슬레이브 복제를 설정하는 방법을 보여드리겠습니다. MariaDB는 Debian에서 MySQL의 기본 구현입니다. Oracle MySQL에도 동일한 단계가 적용됩니다.
이러한 유형의 복제 토폴로지는 읽기 확장용 읽기 복제본, 재해 복구를 위한 실시간 데이터베이스 백업 및 분석 작업에 가장 적합합니다.
필수 조건
데비안 10을 실행하는 두 대의 서버가 사설 네트워크를 통해 서로 통신하고 있다고 가정합니다. 호스팅 공급자가 개인 IP 주소를 지원하지 않는 경우 공용 IP 주소를 사용하고 신뢰할 수 있는 소스의 트래픽만 허용하도록 방화벽을 구성할 수 있습니다.
이 예에서 사용된 서버의 IP 주소는 다음과 같습니다.
Master IP: 10.10.8.12
Slave IP: 10.10.8.164
마리아 DB를 설치
기본값 Debian 10 리포지토리에는 MariaDB 버전 10.3이 포함되어 있습니다. 잠재적인 문제를 방지하려면 두 서버 모두에 동일한 MariaDB 버전을 설치하는 것이 가장 좋습니다.
다음 명령을 실행하여 마스터와 슬레이브에 모두 MariaDB를 설치합니다.
sudo apt-get update
sudo apt-get install mariadb-server
마스터 서버를 구성
첫 번째 단계는 마스터 서버를 설정하는 것입니다. 다음과 같이 변경합니다.
개인 IP에서 수신 대기하도록 MariaDB 서버를 설정합니다.
고유한 서버 ID를 설정합니다.
이진 로깅을 사용합니다.
MariaDB 구성 파일과 압축을 열거나 다음 줄을 설정합니다.
# master:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 10.10.8.12
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
파일을 저장한 후 MySQL 서비스를 다시 시작하여 변경 내용을 적용합니다.
sudo systemctl restart mariadb
다음 단계는 새 복제 사용자를 만드는 것입니다. 루트 사용자로 MariaDB 서버에 로그인합니다.
sudo mysql
다음 SQL 쿼리를 실행하여 복제본이라는 사용자를 만들고 사용자에게 복제 슬레이브 권한을 부여합니다.
CREATE USER 'replica'@'10.10.8.164' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'10.10.8.164';
슬레이브 IP 주소로 IP를 변경해야 합니다. 원하는 대로 사용자 이름을 지정할 수 있습니다.
MySQL 프롬프트 안에 있는 동안 다음 명령을 실행하여 이진 파일 이름과 위치를 인쇄합니다.
SHOW MASTER STATUS\G
# *************************** 1. row ***************************
# File: mysql-bin.000001
# Position: 328
# Binlog_Do_DB:
# Binlog_Ignore_DB:
# 1 row in set (0.001 sec)
파일 이름 'mysql-bin.000001' 및 위치 '328'에 주의하십시오. 이러한 값은 슬레이브 서버를 구성할 때 필요하며 서버에서 다를 수 있습니다.
슬레이브 서버를 구성
슬레이브 서버에서 마스터 서버에서와 동일한 변경을 수행합니다.
개인 IP에서 수신하도록 MySQL 서버를 설정합니다.
고유한 서버 ID를 설정합니다.
이진 로깅을 사용합니다.
MariaDB 구성 파일을 열고 다음 행을 편집합니다.
# slave:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 10.10.8.164
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
MariaDB 서비스를 다시 시작합니다.
sudo systemctl restart mariadb
다음 단계는 슬레이브 서버가 마스터 서버에 연결하는 데 사용할 매개 변수를 구성하는 것입니다. MariaDB 셸에 로그인합니다.
sudo mysql
슬레이브 스레드를 중지하는 것으로 시작합니다.
STOP SLAVE;
다음 쿼리를 실행하여 마스터/슬레이브 복제를 구성합니다.
CHANGE MASTER TO
MASTER_HOST='10.10.8.12',
MASTER_USER='replica',
MASTER_PASSWORD='replica_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=328;
올바른 IP 주소, 사용자 이름 및 암호를 사용하고 있는지 확인합니다. 로그 파일 이름 및 위치는 마스터 서버에서 얻은 값과 동일해야 합니다.
완료되면 슬레이브 스레드를 시작합니다.
START SLAVE;
구성을 테스트
이 때 마스터/슬레이브 복제 설정이 작동해야 합니다.
모든 것이 올바르게 설정되었는지 확인하려면 마스터 서버에 새 데이터베이스를 작성합니다.
데이터베이스 복제 테스트를 작성합니다.
슬레이브 MySQL 셸에 로그인합니다.
sudo mysql
CREATE DATABASE replicatest;
다음 명령을 실행하여 모든 데이터베이스를 나열합니다.
마스터 서버에 작성한 데이터베이스가 슬레이브에 복제됩니다.
SHOW DATABASES;
# +--------------------+
# | Database |
# +--------------------+
# | information_schema |
# | mysql |
# | performance_schema |
# | replicatest |
# | sys |
# +--------------------+
# 5 rows in set (0.00 sec)
Debian 10에서 MariaDB Master/Slave 복제를 만드는 방법을 보여 주었습니다.
'SW > 리눅스' 카테고리의 다른 글
Linux : Debian : exFAT Drive 마운트 방법, 예제, 명령어 (0) | 2022.03.10 |
---|---|
Nginx : HTTP에서 HTTPS 로 리다이렉션 방법, 예제, 명령어 (0) | 2022.03.09 |
Linux : USB Drives, SD Cards 포맷 방법, 예제, 명령어 (0) | 2022.03.07 |
Linux : Tar Bz2 File 압축 풀기(추출 하기) 방법, 예제, 명령어 (0) | 2022.03.06 |
SSH Tunnel 로 MySQL 연결 방법, 예제, 명령어 (0) | 2022.03.05 |