웹사이트 검색

CentOS/RHEL 7 및 Debian 8/9에서 MariaDB(마스터-슬레이브) 복제를 설정하는 방법


일부 IT 담당자는 "데이터베이스 복제"라는 말을 듣더라도 하드웨어 오류나 데이터 손상 시 데이터 손실을 방지하기 위해 동일한 정보의 여러 복사본이 필요하다는 것과 연관시키는 경우가 많습니다. 어느 정도는 사실이지만, 데이터베이스 복제에는 데이터베이스 백업 및 데이터 가용성이라는 일반적인 개념보다 훨씬 더 많은 것이 있습니다.

마스터-슬레이브 설정에서 데이터베이스 복제의 다른 이점 중 다음을 언급할 수 있습니다.

  1. 마스터의 쓰기 작업에 영향을 주지 않고 슬레이브 서버에서 백업을 수행할 수 있습니다.
  2. 리소스 집약적인 작업(예: 데이터 분석)을 마스터 성능에 영향을 주지 않고 슬레이브에서 수행할 수 있습니다.

이 글에서는 MariaDB 10.1에서 마스터-슬레이브 복제를 설정하는 방법을 설명합니다. 클래식 복제와 달리 MariaDB는 v10.0에서 전역 트랜잭션 ID(GTID) 개념을 도입했습니다. 다른 마스터에 쉽게 연결하고 복제할 수 있습니다. 게다가 슬레이브의 상태는 충돌로부터 안전한 방식으로 기록됩니다(상태 업데이트는 데이터 업데이트와 동일한 트랜잭션에서 수행됩니다).

CentOS/RHEL 6에서 MySQL 복제를 찾고 있다면 이 가이드를 따르세요. CentOS/RHEL 6에서 MySQL(마스터-슬레이브) 복제 설정

CentOS/RHEL 7 및 Debian 8/9에 MariaDB 10.1 설치

테스트 환경은 다음 시스템으로 구성됩니다(둘 다 CentOS 7).

Master: 192.168.0.18
Slave: 192.168.0.19

최신 버전의 MariaDB를 설치하려면 해당 리포지토리를 서버에 추가해야 합니다. 이전 버전의 MariaDB(예: 5.5)를 사용하는 경우 아래 문서를 사용하여 최신 10.1 버전으로 업그레이드하는 것이 좋습니다.

  1. MariaDB 5.5를 MariaDB 10.1로 업그레이드

CentOS/RHEL에서

마스터슬레이브< 모두에 다음 내용을 포함하여 /etc/yum.repos.d 내에 MariaDB.repo라는 파일을 생성합니다. 시스템:

MariaDB 10.1 CentOS repository list - created 2016-01-23 14:16 UTC
http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

파일을 저장하고 yum을 사용하여 두 서버 모두에 MariaDB를 설치합니다.

yum update && yum install MariaDB-server MariaDB-client

데비안/우분투에서

패키지와 MariaDB 저장소를 인증하기 위한 키를 추가합니다.

apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb [arch=amd64,i386] http://mirror.edatel.net.co/mariadb/repo/10.1/debian jessie main'

참고: 위의 강조 표시된 줄에서 배포판 이름코드명을 바꾸세요.

apt-get 명령을 사용하여 설치합니다.

apt-get update
apt-get install mariadb-server

MariaDB를 설치한 후 마스터와 슬레이브 모두에서 mysql_secure_installation 절차를 실행하고 마스터 머신에 샘플 테스트 데이터베이스를 설정해 보겠습니다.

마스터에 샘플 MySQL 데이터베이스 설정

이제 https://github.com/datacharmer/test_dbEmployees 데이터베이스를 마스터 서버에 설정하겠습니다(4

저장소를 복제하고 이를 사용하여 샘플 데이터베이스를 MariaDB 설치로 가져옵니다.

git clone https://github.com/datacharmer/test_db
cd test_db
mysql < employees.sql

마스터에 MySQL 서버 구성

마스터를 구성하려면 다음 단계를 따르세요.

1단계: /etc/my.cnf 파일을 편집합니다. [mysqld] 섹션 아래에 다음 네 줄을 추가합니다.

log-bin
server_id=1
replicate-do-db=employees
bind-address=192.168.0.18

MariaDB를 다시 시작합니다.

systemctl restart mariadb

2단계: MariaDB 서버에 루트로 로그온하고 사용자 슬레이브를 생성한 후 필요한 권한을 할당합니다.

MariaDB [(none)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;

마지막 명령(SHOW MASTER STATUS)은 바이너리 로그의 현재 위치(슬레이브가 복제를 시작해야 하는 정확한 지점을 나타내는 정확한 좌표:

3단계: MariaDB 프롬프트를 종료하고(exit; 사용) 다음 명령을 사용하여 직원 데이터베이스의 스냅샷을 만듭니다. Enter를 누르면 이전에 mysql_secure_installation을 통해 설정한 루트의 비밀번호를 입력하라는 메시지가 표시됩니다.

mysqldump -u root -p employees > employees-dump.sql

덤프가 완료된 후 데이터베이스 서버에 다시 연결하여 테이블 잠금을 해제한 후 종료합니다.

MariaDB [(none)]> UNLOCK TABLES;
MariaDB [(none)]> exit;

4단계: 덤프를 슬레이브에 복사합니다.

scp employees-dump.sql [email :/root/ 

5단계: mysql_upgrade 절차를 실행하여 시스템 테이블을 업그레이드합니다(MariaDB 루트 비밀번호를 입력하라는 메시지가 표시됩니다).

mysql_upgrade -u root -p

6단계: 방화벽을 통해 데이터베이스 서비스를 허용합니다.

firewall-cmd --add-service=mysql
firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload

이제 슬레이브를 구성해 보겠습니다.

슬레이브에 MySQL 서버 구성

슬레이브를 구성하려면 다음 단계를 따르십시오.

1단계: 복제 작업을 수행하기 위한 계정을 만듭니다. 다음을 사용하여 로컬 MariaDB 서버에 연결합니다.

mysql -u root –p

그리고 앞서 설정한 비밀번호를 입력하세요.

2단계: 데이터베이스 서버에 연결되면 사용자와 빈 데이터베이스를 만들고 권한을 부여합니다.

MariaDB [(none)]> CREATE DATABASE employees;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON employees.* TO 'slave'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

3단계: MariaDB 프롬프트를 종료하고 마스터 서버에 생성된 덤프를 로드합니다.

mysql -u root -p employees < employees-dump.sql

4단계: /etc/my.cnf 파일을 편집하여 [mysqld]< 아래의 슬레이브에 서버 ID를 할당합니다. /코드> 섹션. 마스터에서 1을 사용했으므로 1과 다른 정수여야 합니다.

server_id=2
replicate-do-db=employees

데이터베이스 서버를 다시 시작합니다.

systemctl restart mariadb

5단계: mysql_upgrade 절차를 실행하여 시스템 테이블을 업그레이드합니다(MariaDB 루트 비밀번호를 입력하라는 메시지가 표시됩니다).

mysql_upgrade -u root -p

6단계: 덤프를 슬레이브로 가져오고 나면 몇 단계만 거치면 복제를 시작할 수 있습니다. 데이터베이스에 로그온하고 MariaDB 프롬프트에서 다음 명령을 실행합니다. MASTER_LOG_FILEMASTER_LOG_POS 변수에 특히 주의하세요. 이 변수는 '마스터 구성' 2단계의 SHOW MASTER STATUS에서 반환된 값과 일치해야 합니다. 위에.

MariaDB [(none)]> CHANGE MASTER TO
  MASTER_HOST='192.168.0.18',
  MASTER_USER='slave',
  MASTER_PASSWORD='SlavePassword',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master-bin.000001',
  MASTER_LOG_POS=314,
  MASTER_CONNECT_RETRY=10,
  MASTER_USE_GTID=current_pos;

7단계: MariaDB 프롬프트를 종료하지 않고 슬레이브를 시작하고 상태를 확인합니다.

MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G;

지금 당장 필요한 것은 아니지만 다음을 사용하여 슬레이브를 중지할 수 있습니다.

MariaDB [(none)]> STOP SLAVE;

SHOW SLAVE STATUS\G; 명령이 오류를 반환하는 경우. 해당 오류를 사용하여 문제를 해결한 다음 START SLAVE;를 실행하여 다시 테스트하세요.

MySQL/MariaDB 데이터베이스 복제 테스트

마스터 서버의 employees 테이블에 레코드를 추가해 보겠습니다.

MariaDB [(none)]> INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');

그런 다음 이 변경 사항이 슬레이브에 복제되었는지 확인합니다.

MariaDB [(none)]> USE employees;
MariaDB [(none)]> SELECT * FROM employees WHERE emp_no=500000;

보시다시피 복제는 마스터에서 슬레이브로 올바르게 작동하고 있습니다.

요약

이 기사에서는 CentOS/RHEL 7 및 Debian 8/9에 최신 버전의 MariaDB를 설치하는 방법을 설명하고 GTID를 사용하여 마스터-슬레이브 복제를 설정하는 방법에 대해 논의했습니다. 자세한 내용은 MariaDB 복제 가이드를 참조하시기 바랍니다. 질문이나 의견이 있는 경우 주저하지 말고 아래 양식을 사용하여 문의해 주세요.


판권 소유. © Linux-Console.net • 2019-2024