웹사이트 검색

RHEL, Rocky 및 AlmaLinux에서 MySQL 복제를 설정하는 방법


데이터 복제는 데이터 가용성을 향상하고 애플리케이션의 안정성과 성능을 향상시키기 위해 여러 서버에 걸쳐 데이터를 복사하는 프로세스입니다. MySQL 복제에서는 데이터의 일관성을 보장하고 백업 및 중복성을 제공하기 위해 마스터 서버의 데이터베이스에서 다른 노드로 데이터가 실시간으로 복사됩니다.

이 가이드에서는 CentOS, 등의 RHEL 기반 배포판에서 MySQL(마스터-슬레이브) 복제를 설정하는 방법을 보여줍니다. >Fedora, Rocky LinuxAlmaLinux.

MySQL 복제 설정

여기 MySQL 복제 실험실 설정이 있습니다.

MySQL Master - 10.128.0.14
MySQL Slave - 10.128.15.211

시작하자…

1단계: 마스터 및 슬레이브 서버에 MySQL 설치

마스터슬레이브 서버 모두에 MySQL 데이터베이스를 설치하는 것부터 시작하겠습니다.

sudo dnf install @mysql

설치가 완료되면 데이터베이스 서버를 시작하도록 지시합니다.

sudo systemctl start mysqld

그런 다음 시스템 시작 시 또는 재부팅 시 시작할 수 있도록 활성화합니다.

sudo systemctl enable mysqld

그런 다음 MySQL 데이터베이스 서버가 다음과 같이 실행되고 있는지 확인하세요.

sudo systemctl status mysqld

2단계: 마스터 및 슬레이브 서버에서 MySQL 보안

다음 단계는 마스터슬레이브 서버 모두에서 MySQL 데이터베이스를 보호하는 것입니다. 이는 기본 설정이 안전하지 않고 해커가 쉽게 악용할 수 있는 허점을 제시하기 때문입니다.

따라서 MySQL을 강화하려면 다음 명령을 실행하십시오.

sudo mysql_secure_installation

먼저 MySQL 루트 비밀번호를 설정해야 합니다. 강력한 루트 비밀번호를 제공하십시오. 대문자, 소문자, 특수 문자 및 숫자를 혼합하여 8자 이상이면 좋습니다.

나머지 프롬프트에서는 'Y'를 입력하여 데이터베이스 서버를 권장 설정으로 조정합니다.

마스터 및 슬레이브 노드에 MySQL 설치 및 강화를 마쳤으면 다음은 마스터 노드를 구성하는 것입니다.

3단계: 마스터 노드(서버) 구성

다음 단계는 마스터 노드를 구성하고 슬레이브 노드에 이에 대한 액세스 권한을 부여하는 것입니다. 먼저 mysql-server.cnf 구성 파일을 편집해야 합니다.

sudo vim /etc/my.cnf.d/mysql-server.cnf

[mysqld] 섹션 아래에 다음 줄을 추가합니다.

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

완료되면 변경 사항을 저장하고 종료합니다. 그런 다음 MySQL 서버를 다시 시작하세요.

sudo sysemctl restart mysqld

그런 다음 MySQL 셸에 로그인합니다.

sudo mysql -u root -p

복제를 위해 마스터와 슬레이브를 바인딩하는 데 사용할 데이터베이스 사용자를 생성하려면 다음 명령을 실행합니다.

mysql> CREATE USER 'replica'@'10.128.15.211' IDENTIFIED BY 'P@ssword321';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';

변경 사항을 적용하고 MySQL 서버를 종료합니다.

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

마스터의 상태를 확인합니다.

mysql> SHOW MASTER STATUS\G

파일 이름과 위치를 기록해 두십시오. 나중에 복제를 위해 슬레이브를 설정할 때 이 정보가 필요합니다. 우리의 경우 파일 이름은 mysql-bin.000001이고 위치는 1232입니다.

4단계: 슬레이브 노드(서버) 구성

이제 슬레이브 노드로 돌아갑니다. 다시 한 번 mysql-server.cnf 구성 파일을 편집합니다.

sudo vim /etc/my.cnf.d/mysql-server.cnf

이전과 마찬가지로 [mysqld] 섹션 아래에 다음 줄을 붙여넣습니다. 슬레이브의 IP에 해당하도록 IP 주소를 변경합니다. 또한 다른 서버 ID를 할당하세요. 여기서는 2 값을 할당했습니다.

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

변경 사항을 저장하고 파일을 종료합니다. 그런 다음 데이터베이스 서버를 다시 시작하십시오.

sudo systemctl restart mysqld

마스터 노드에서 복제하도록 슬레이브 노드를 구성하려면 슬레이브의 MySQL 서버에 로그인하세요.

sudo mysql -u root -p

가장 먼저 복제 스레드를 중지합니다.

mysql> STOP SLAVE;

그런 다음 다음 명령을 실행하여 슬레이브 노드가 마스터에서 데이터베이스를 복제하도록 구성합니다.

mysql> CHANGE MASTER TO
     MASTER_HOST='10.128.0.14' ,
     MASTER_USER='replica' ,
     MASTER_PASSWORD='P@ssword321' ,
     MASTER_LOG_FILE='mysql-bin.000001' ,
     MASTER_LOG_POS=1232;

MASTER_LOG_FILEMASTER_LOG_POS 플래그는 끝에 있는 마스터 노드의 파일 및 Position 값에 해당합니다. 1 단계.

MASTER_HOST, MASTER_USER, MASTER_PASSWORD는 각각 마스터 IP 주소, 복제 사용자, 복제 사용자 비밀번호에 해당합니다.

그런 다음 슬레이브 복제 스레드를 시작합니다.

mysql> START SLAVE;

4단계: MySQL 마스터-슬레이브 복제 테스트

이제 마스터 노드와 슬레이브 노드 간의 복제가 작동하는지 테스트하려면 마스터 노드의 MySQL 데이터베이스 서버에 로그인하세요.

sudo mysql -u root -p

테스트 데이터베이스를 만듭니다. 여기서는 테스트 데이터베이스를 replication_db라고 합니다.

mysql> CREATE DATABASE replication_db;
Verify the existence of the database.
mysql> SHOW DATABASES;

이제 슬레이브 노드로 가서 MySQL 서버에 로그인하고 replication_db 데이터베이스가 있는지 확인하세요. 아래 출력에서 데이터베이스가 존재하는 것을 확인할 수 있습니다. 이는 마스터에서 슬레이브 노드로 복제가 이루어졌음을 확인하는 것입니다.

mysql> SHOW DATABASES;

이것이 전부입니다. 마스터 노드에서 슬레이브 노드로 데이터베이스를 복제할 수 있는 MySQL 마스터-슬레이브 복제 모델을 설정하는 방법을 성공적으로 시연했습니다.