SW/리눅스

CentOS 7 : MySQL Master-Slave Replication 구성 방법, 예제, 명령어

얇은생각 2021. 9. 28. 07:30
반응형

MySQL 복제는 하나의 데이터베이스 서버에서 하나 이상의 서버로 데이터를 자동으로 복사할 수 있는 프로세스입니다.

MySQL은 여러 복제 토폴로지를 지원합니다. 마스터/슬레이브 토폴로지는 한 데이터베이스 서버가 마스터 역할을 하고 하나 이상의 서버가 슬레이브 역할을 하는 가장 잘 알려진 토폴로지 중 하나입니다. 기본적으로 복제는 마스터가 데이터베이스 수정 사항을 설명하는 이벤트를 이진 로그에 보내고 슬레이브가 준비되면 이벤트를 요청하는 비동기식 복제입니다.

CentOS 7에서 하나의 마스터 서버와 하나의 슬레이브 서버로 MySQL Master/Slave 복제를 설정하는 방법을 설명합니다. 동일한 단계가 MariaDB에도 적용됩니다.

이러한 유형의 복제 토폴로지는 읽기 확장용, 읽기 복제본, 손상 복구용 실시간 데이터베이스 백업 및 분석 작업에 가장 적합합니다.

 

 

CentOS 7 : MySQL Master-Slave Replication 구성 방법, 예제, 명령어

 

 

필수 조건

이 예에서는 두 대의 서버가 Cent를 실행한다고 가정합니다.OS 7: 개인 네트워크를 통해 서로 통신할 수 있습니다. 호스트 제공자가 개인 IP 주소를 제공하지 않는 경우 공용 IP 주소를 사용하고 신뢰할 수 있는 소스에서만 포트 3306의 트래픽을 허용하도록 방화벽을 구성할 수 있습니다.

이 예제의 서버에는 다음과 같은 IP가 있습니다.

Master IP: 192.168.121.59
Slave IP:  192.168.121.14

 

 

 

MySQL 설치

기본값인 The Cent입니다.OS 7 저장소에는 MySQL 패키지가 포함되어 있지 않으므로 공식 Yum Repository에서 MySQL을 설치하겠습니다. 문제를 방지하기 위해 두 서버 모두에 동일한 MySQL 버전 5.7을 설치합니다.

마스터 서버와 슬레이브 서버 모두에 MySQL을 설치합니다.

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo yum install mysql-community-server

 

 

설치가 완료되면 MySQL 서비스를 시작하고 부팅 시 다음을 통해 자동으로 시작되도록 설정합니다.

sudo systemctl enable mysqld
sudo systemctl start mysqld

 

 

MySQL 서버가 처음 시작되면 MySQL 루트 사용자에 대한 임시 암호가 생성됩니다. 암호를 찾으려면 다음 grep 명령을 사용합니다.

sudo grep 'temporary password' /var/log/mysqld.log

 

 

mysql_secure_installation 명령을 실행하여 새 루트 암호를 설정하고 MySQL 인스턴스의 보안을 향상시킵니다.

mysql_secure_installation

 

 

임시 루트 암호를 입력하고 모든 질문에 Y(예)로 답하십시오.

새 암호는 8자 이상이어야 하며 대문자, 소문자, 숫자 및 특수 문자를 하나 이상 포함해야 합니다.

 

 

 

마스터 서버 구성

먼저 마스터 MySQL 서버를 구성하고 다음을 변경합니다.

MySQL 서버가 개인 IP를 수신하도록 설정합니다.

고유한 서버 ID를 설정합니다.

이진 로그를 실행합니다.

 

이렇게 하려면 MySQL 구성 파일을 열고 [mysqld] 섹션에 다음 줄을 추가하십시오.

# master:/etc/my.cnf

bind-address           = 192.168.121.59
server-id              = 1
log_bin                = mysql-bin

 

 

완료되면 MySQL 서비스를 다시 시작하여 변경 내용을 적용합니다.

sudo systemctl restart mysqld

 

 

다음 단계에서는 새 복제 사용자를 생성합니다. 루트 사용자로 MySQL 서버에 로그인합니다.

mysql -uroot -p

 

 

MySQL 프롬프트에서 다음 SQL 쿼리를 실행하여 복제본 사용자를 생성하고 사용자에게 복제 슬레이브 권한을 부여합니다.

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';

 

 

슬레이브 IP 주소로 IP를 변경해야 합니다. 원하는 대로 사용자 이름을 지정할 수 있습니다.

MySQL 프롬프트 안에 있을 때 다음 명령을 실행하여 이진 파일 이름과 위치를 인쇄합니다.

SHOW MASTER STATUS\G

# *************************** 1. row ***************************
#              File: mysql-bin.000001
#          Position: 1427
#      Binlog_Do_DB: 
#  Binlog_Ignore_DB: 
# Executed_Gtid_Set: 
# 1 row in set (0.00 sec)

 

 

파일 이름 'mysql-bin.000001' 및 위치 '1427'을 기록해 두십시오. 슬레이브 서버를 구성할 때 이 값이 필요합니다. 이러한 값은 서버마다 다를 수 있습니다.

 

 

 

슬레이브 서버 구성

위의 마스터 서버와 마찬가지로 슬레이브 서버도 다음과 같이 변경합니다.

MySQL 서버가 개인 IP에서 수신되도록 설정합니다.

고유한 서버 ID를 설정합니다.

이진 로그를 실행합니다.

 

MySQL 구성 파일을 열고 다음 줄을 편집하십시오.

# slave:/etc/my.cnf

bind-address           = 192.168.121.14
server-id              = 2
log_bin                = mysql-bin

 

 

MySQL 서비스를 다시 시작합니다.

sudo systemctl restart mysqld

 

 

다음 단계에서는 슬레이브 서버가 마스터 서버에 연결하는 데 사용할 매개 변수를 구성합니다.

MySQL 셸에 로그인합니다.

mysql -uroot -p

 

 

먼저 슬레이브 스레드를 중지합니다.

STOP SLAVE;

 

 

다음 쿼리를 실행하여 마스터를 복제하도록 슬레이브를 설정합니다.

CHANGE MASTER TO
MASTER_HOST='192.168.121.59',
MASTER_USER='replica',
MASTER_PASSWORD='strong_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1427;

 

 

올바른 IP 주소, 사용자 이름 및 암호를 사용하고 있는지 확인합니다. 로그 파일 이름 및 위치는 마스터 서버에서 얻은 값과 동일해야 합니다.

완료되면 슬레이브 스레드를 시작합니다.

START SLAVE;

 

 

 

구성 테스트

이 시점에는 작동 중인 마스터/슬레이브 복제 설정이 있어야 합니다.

모든 것이 예상대로 작동하는지 확인하기 위해 마스터 서버에 새 데이터베이스를 생성하겠습니다.

mysql -uroot -p

CREATE DATABASE replicatest;

 

 

슬레이브 MySQL 셸에 로그인합니다.

mysql -uroot -p

 

 

다음 명령을 실행하여 모든 데이터베이스를 나열합니다.

마스터 서버에서 생성한 데이터베이스가 슬레이브에 복제됩니다.

SHOW DATABASES;

# +--------------------+
# | Database           |
# +--------------------+
# | information_schema |
# | mysql              |
# | performance_schema |
# | replicatest        |
# | sys                |
# +--------------------+
# 5 rows in set (0.00 sec)

 

반응형