웹사이트 검색

Ubuntu 18.04에서 MySQL 마스터-슬레이브 복제를 설정하는 방법


MySQL 마스터-슬레이브 복제는 네트워크에 있는 하나 이상의 노드에서 데이터베이스 파일을 복제하거나 복사할 수 있도록 하는 절차입니다. 이 설정은 마스터 노드에 오류가 발생하는 경우에도 슬레이브 노드에서 데이터베이스를 복구할 수 있도록 중복성과 내결함성을 제공합니다. 이를 통해 사용자는 데이터베이스의 복제본을 다른 서버에서 계속 검색할 수 있으므로 어떠한 경우에도 모든 것이 손실되지 않을 것이라는 확신을 갖게 됩니다.

이 가이드에서는 Ubuntu 18.04 시스템에서 MySQL 데이터베이스 마스터-슬레이브 복제를 수행하는 방법을 배우게 됩니다.

전제 조건

설정에는 다음 IP 주소를 사용하여 Ubuntu 18.04를 실행하는 두 대의 서버가 있습니다.

Master server: 10.128.0.28
Slave server: 10.128.0.29

이제 Ubuntu에서 마스터-슬레이브 복제 설정을 구성하는 방법을 살펴보겠습니다.

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

Ubuntu 저장소에는 MySQL 버전 5.7이 포함되어 있습니다. 새로운 기능을 활용하고 잠재적인 문제를 방지하려면 최신 MySQL 버전을 설치해야 합니다. 하지만 먼저 다음 apt 명령을 사용하여 두 노드를 업데이트하겠습니다.

sudo apt update

두 노드 모두에 MySQL을 설치하려면 명령을 실행합니다.

sudo apt install mysql-server mysql-client

다음으로 mysql 구성 파일을 엽니다.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

마스터 노드에서 스크롤하여 아래와 같이 bind-address 속성을 찾습니다.

bind-address 	 =127.0.0.1

마스터 노드의 IP 주소와 일치하도록 루프백 주소를 변경합니다.

bind-address  	=10.128.0.28

그런 다음 [mysqld] 섹션에서 server-id 속성 값을 지정합니다. 선택한 번호는 다른 서버 ID 번호와 일치하면 안 됩니다. 1 값을 할당해 보겠습니다.

server-id	 =1

구성 파일 맨 끝에 아래 줄을 복사하여 붙여넣습니다.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

변경 사항이 마스터 노드에 적용되도록 구성 파일을 종료하고 MySQL 서비스를 다시 시작합니다.

sudo systemctl restart mysql

MySQL 서버가 예상대로 실행되고 있는지 확인하려면 명령을 실행하십시오.

sudo systemctl status mysql

완벽한! MySQL 서버가 예상대로 실행 중입니다!

2단계: 마스터 노드에서 복제를 위한 새 사용자 생성

이 섹션에서는 마스터 노드에 복제 사용자를 생성하겠습니다. 이를 달성하려면 표시된 대로 MySQL 서버에 로그인하십시오.

sudo mysql -u root -p

다음으로 아래 쿼리를 실행하여 복제본 사용자를 생성하고 복제 슬레이브에 대한 액세스 권한을 부여합니다. IP 주소를 사용하는 것을 잊지 마세요.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

그런 다음 다음 명령을 실행하십시오.

mysql> SHOW MASTER STATUS\G

출력은 아래에서 볼 수 있는 것과 유사해야 합니다.

주의 깊게 mysql-bin.000002 값과 위치 ID 1643을 기록해 두십시오. 이 값은 슬레이브 서버를 설정할 때 중요합니다.

3단계: MySQL 슬레이브 서버 구성

슬레이브 서버로 가서 마스터 서버에서 했던 것처럼 MySQL 구성 파일을 엽니다.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

마스터 서버와 마찬가지로 다음 줄을 편집하세요.

bind-address           = 10.128.0.29

이전과 마찬가지로 [mysqld] 섹션에서 server-id 속성 값을 지정합니다. 이번에는 다른 값을 선택합니다. 2로 가죠.

server-id		=2 

다시 구성 파일 맨 끝에 아래 줄을 붙여넣습니다.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

다음으로 슬레이브 노드에서 MySQL 서버를 다시 시작합니다.

sudo systemctl restart mysql

완료되면 텍스트 편집기를 저장하고 종료하십시오.

그런 다음 표시된 대로 MySQL 셸에 로그인합니다.

sudo mysql -u root -p

이 단계에서는 슬레이브 서버마스터 서버에 연결되도록 허용하는 몇 가지 구성을 수행해야 합니다. 하지만 먼저 표시된 대로 슬레이브 스레드를 중지하십시오.

mysql> STOP SLAVE; 

슬레이브 서버마스터 서버를 복제하도록 허용하려면 다음 명령을 실행하세요.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

예민하신 분들은 앞서 슬레이브 복제 사용자를 생성한 후 표시된 mysql-bin.00002 값과 위치 ID 1643를 사용했다는 사실을 아실 것입니다.

또한 마스터 서버의 IP 주소, 복제 사용자 및 비밀번호가 사용되었습니다.

나중에 이전에 중지했던 스레드를 시작하십시오.

mysql> START SLAVE;

4단계: MySQL 마스터-슬레이브 복제 확인

설정이 실제로 예상대로 작동하는지 확인하기 위해 마스터에 새 데이터베이스를 생성하고 MySQL 슬레이브 서버에 복제되었는지 확인하겠습니다.

마스터 서버에서 MySQL에 로그인합니다.

sudo mysql -u root -p

테스트 데이터베이스를 만들어 보겠습니다. 이 경우 replication_db라는 데이터베이스를 생성합니다.

mysql> CREATE DATABASE replication_db;

이제 슬레이브 서버에서 MySQL 인스턴스에 로그인하세요.

sudo mysql -u root -p

이제 쿼리를 사용하여 데이터베이스를 나열합니다.

mysql> SHOW DATABASES;

마스터에서 생성한 데이터베이스가 슬레이브에 복제되었음을 알 수 있습니다. 엄청난 ! MySQL 마스터-슬레이브 복제가 예상대로 작동하고 있습니다! 이제 오류가 발생하는 경우 데이터베이스 파일의 복사본이 슬레이브 서버에 복제되므로 안심할 수 있습니다.

결론

이 가이드에서는 Ubuntu 18.04에서 MySQL 마스터-슬레이브 복제 설정을 설정하는 방법을 배웠습니다.