데이터베이스 이중화(Database Replication) - Master/Slave

2024. 5. 17. 00:21·Database
반응형

데이터베이스 이중화란?

- 데이터베이스의 가용성과 안정성을 높이기 위해 사용하는 기법으로, 하나의 데이터베이스 시스템을 기본으로 하여, 동일한 데이터를 가지는 복제본을 하나 더 운영하는 걸 뜻합니다.

- 대표적으로 Master-Slave가 있습니다.

 

Master-Slave란?

- Master 서버에서 모든 쓰기 작업이 수행되고, Slave 서버는 읽기 작업을 처리합니다. 이러한 구조는 Master서버에서 문제가 발생했을 시 Slave서버가 대체 역할을 하게 됩니다.


Master-Slave  구축해보기

* 구축환경

1. VMware

2. CentOS 8

3. MariaDB

 

* 필자는 가상환경에서 진행하기 때문에, DB서버 2개(Master,Slave) 생성 및 각 서버에 MariaDB를 설치해서 진행할 예정입니다.

Master구축

1. 방화벽 끄기

setenforce 0
systemctl stop firewalld

 

2. DB설치

yum install -y mariadb-server

 

3. DB실행

systemctl start mariadb
mysql

 

4. DB생성

CREATE DATABASE masterdb;

 

5. 계정 생성 

CREATE USER 'test'@'%' IDENTIFIED BY 'abcd1234';

 

6. 사용자한테 DB 관리 권한 부여 후 종료

GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
exit

systemctl restart mariadb

 

7. Master 설정

vi /etc/my.cnf.d/mariadb-server.cnf
[mariadb]	<- 해당 부분은 추가하는게 아니다.
log-bin
server_id=1
log-basename=master1
binlog-format=mixed

- log-bin : 변경되는 내용을 binary log로 저장하겠다는 의미이다. 즉 컴퓨터가 알수 있는 2진수, 숫자형태로 저장하겠다는 것이다.

- server_id=1 : DB서버마다 구분이 되게 서버 넘버를 정해준다. 여기서 주의사항은 각 서버마다 겹치면 안되는 점이다.

- log-basename=master1 : log파일을 저장하는데 이름이 master1로 시작하게 한다. 해당 부분은 추후 설정에서 볼 수 있다.

- binlog-format=mixed : 서버에서 복제 시 형식을 상황에 따라 혼합하여 사용한다는 설정이다.

 

8. Master 확인

mysql
show master status;

 

 

9. DB 백업

mysqldump -u root masterdb > web.sql

scp web.sql [SLAVE 서버의 IP]:/root/web.sql

 

- "masterdb" 이 부분은 생성한 DB 이름이 들어가면 된다.


Slave구축

- Master 단계에서 DB 설치부터 생성까지 과정은 동일하다. 그 이후 단계부터 진행하겠다.

 

1. DB 복구

mysql -u root masterdb < web.sql

 

2. DB 서버 설정

vi /etc/my.cnf.d/mariadb-server.cnf
[mariadb]	<- 마찬가지로 추가하는 부분이 아니다.
server_id=2

 

systemctl restart mariadb

 

3. Master 지정

mysql

CHANGE MASTER TO
MASTER_HOST='[Master 서버 IP]',
MASTER_USER='test',
MASTER_PASSWORD='abcd1234',
MASTER_PORT=3306,
MASTER_LOG_FILE='[Master 서버에서 show master status; 했을 때 File 이름]',
MASTER_LOG_POS=[Master 서버에서 show master status; 했을 때 position 번호],
MASTER_CONNECT_RETRY=10;

Master 참고 정보 조회
Slave에 정보 기입

 

START SLAVE;

 

4. Slave 확인

SHOW SLAVE STATUS\G

 

 

- 해당 부분이 둘다 Yes로 되어있으면 성공이다!

반응형

'Database' 카테고리의 다른 글

Window11 Oracle Database 설치  (2) 2024.12.14
Error Code: 2013. Lost connection to MySQL server during query  (0) 2024.12.01
Index란?  (3) 2024.11.15
mysql 외부접속 connection locked (Unblock with 'mysqladmin flush-hosts')  (2) 2024.10.02
Keepalived를 활용하여 Active(Master)-Standby(Slave)  (2) 2024.06.23
'Database' 카테고리의 다른 글
  • Error Code: 2013. Lost connection to MySQL server during query
  • Index란?
  • mysql 외부접속 connection locked (Unblock with 'mysqladmin flush-hosts')
  • Keepalived를 활용하여 Active(Master)-Standby(Slave)
Hyunily
Hyunily
    반응형
  • Hyunily
    Hyunily
    Hyunily
  • 전체
    오늘
    어제
    • 분류 전체보기 (45)
      • Daily (16)
      • 한화시스템 Beyond (6)
      • CS (3)
      • Database (10)
      • Monitoring (2)
      • Spring (8)
  • 블로그 메뉴

    • 홈
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Hyunily
데이터베이스 이중화(Database Replication) - Master/Slave
상단으로

티스토리툴바