[DB] 재해 복구(DR) / DB 서버 Replication 설정 / 미러 사이트 구성 실습

2024. 12. 3. 10:34· CS/DB
목차
  1. 재해 복구 (DR)
  2. 기존 데이터를 양쪽과 똑같이 설정 (백업, 복구)
  3. DB 서버 Replication 설정 실습 (Master, Slave)
  4. DB 서버 미러 사이트 구성하기 (Active, Active)
728x90

재해 복구 (DR)

Mirror Site (미러 사이트)

: 주 센터와 동일한 수준의 데이터와 시스템을 원격지에 구축하고 Active 상태로 실시간 동시 서비스를 제공하는 방식

 

Hot Site (핫 사이트)

: 주 센터와 동일한 수준의 데이터와 시스템을 원격지에 구축하여 Stand-by 상태로 유지하며 재난 발생 시 Active 상태로 전환하여 서비스 제공

 

Warn Site (웜 사이트)

: 데이터만 원격지에 보관하고 서비스를 위한 시스템은 확보하지 않거나 최소한으로만 구성하고 재난 발생 시에 필요한 시스템을 구성하여 복구

 

Cold Site (콜드 사이트)

: 최소한의 준비만 해두는 것

 

 


기존 데이터를 양쪽과 똑같이 설정 (백업, 복구)

DB 데이터 백업

mysqldump -u root -p --all-databases > backup.sql
💡 방향 재지정 <, >

입력 또는 출력을 다른 곳(파일 등)으로 재지정할 수 있음
명령어 > 파일 : 명령어의 실행 결과를 파일로 옮기겠다
명령어 < 파일 : 파일의 내용을 명령어로 보내라

 

 

 

파일 옮기기

남의 컴퓨터에 있는 파일을 내 컴퓨터에 받을 때

=> 다른 컴퓨터(10.10.10.30)에 있는 backup.sql 파일을 내 컴퓨터의 폴더로 옮기겠다

scp [남의 컴퓨터 계정@IP주소:파일 경로] [파일을 받아서 저장할 경로]
scp test@10.10.10.12:/home/test/backup.sql ./

 

내 컴퓨터에 있는 파일을 남의 컴퓨터에 보낼 때

=> 내 컴퓨터에 있는 backup.sql 파일을 10.10.10.30 컴퓨터의 /home/test 폴더로 옮기겠다

scp [보낼 파일 경로] [남의 컴퓨터 계정@IP주소:보낼 파일 저장할 경로]
scp ./backup.sql test@10.10.10.12:/home/test/

 

y만 쳤다가 빠꾸 먹음... 'yes'로 써주기

 

 

10.10.10.30 컴퓨터에 들어온 것을 확인할 수 있다!

 

 

DB 데이터 복구해주기


DB 서버 Replication 설정 실습 (Master, Slave)

Master

  • 데이터를 저장, 수정, 삭제하고, 해당 내역을 로그에 기록한다.

Slave

  • 데이터 조회만 가능한 서버. Master 에 있는 로그를 받아와서 뭐가 추가되고 수정됐는지 로그를 보고 데이터를 동기화한다.
  • Slave에서는 데이터를 수정, 삭제하면 안 된다.

Master 서버 설정 (10.10.10.124)

vi /etc/mysql/mariadb.conf.d/50-server.cnf

 

 

[mariadb] 아래에 내용 추가

[mariadb]
log-bin # log로 남겨라
server_id=1 # 양쪽이 다르기만 하면 됨 (Master 1, Slave 2)
log-basename=master1 # log 파일 이름
binlog-format=mixed # 로그를 남기는 형식 (섞어 쓰겠다)

 

 

설정 저장 후 mariadb 재시작

systemctl restart mariadb

 

 

 

로그파일 생성된 거 확인

mariadb -u root -p
show master status;

 

master1-bin.000001 이라는 이름으로 생성된 것이 보인다.

bin 뒤에 숫자와 Position 숫자는 내용이 추가될 때마다 바뀐다.

 

 

Slave 서버에서 사용할 사용자 계정 추가

CREATE USER 'slave_user'@'%' IDENTIFIED BY 'qwer1234';
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%';
FLUSH PRIVILEGES;

 


Slave 서버 설정 (10.10.10.30)

vi /etc/mysql/mariadb.conf.d/50-server.cnf

 

[mariadb] 밑에 server_id 설정 추가

=> 이 때, Master 서버의 server_id 와 달라야 한다.

[mariadb]
server_id=2

 

 

설정 후 mariadb 재시작

systemctl restart mariadb

 

 

 

Master 지정

=> 이 때, 내용이 추가될 때마다 로그파일 이름과 position 번호가 바뀌기 때문에

=> 현재 show master status 했을 때의 로그파일 이름과 position 번호로 입력해야 한다.

mariadb -u root -p
CHANGE MASTER TO
MASTER_HOST='[Master 서버 IP]',
MASTER_USER='slave_user',
MASTER_PASSWORD='qwer1234',
MASTER_PORT=3306,
MASTER_LOG_FILE='[마스터에서 show master status 했을 때 File 이름 = 로그파일 이름]',
MASTER_LOG_POS=[마스터에서 show master status 했을 때 position 번호],
MASTER_CONNECT_RETRY=10;
START SLAVE;

 


Slave 확인

SHOW SLAVE STATUS\G

 

Slave_IO_Running: Yes 여야 하고,
Slave_SQL_Running: Yes 여야 한다.

 


Master 에서 DB 생성

CREATE DATABASE test;

 


Slave 에서 DB 확인

SHOW DATABASES;

 

Master에서 만든 test가 잘 들어와있는 것을 확인할 수 있다.

 

 


DB 서버 미러 사이트 구성하기 (Active, Active)

서버1과 2가 있을 때,

Master(서버1) - Slave(서버2), Master(서버2) - Slave(서버1)
이렇게 양방향 Replication으로 설정하는 것을 미러 사이트라고 한다.

 

위에서 Master, Slave 를 지정했던 것처럼

Slave에서는 Master 설정을, Master에서는 Slave 설정을 지정해주면 된다.


Slave 중지

서버 2에서 일단 아까 Start 시켜놨던 Slave를 중지시키기

STOP SLAVE;

 


Slave -> Master로 설정 

서버 2를 Master 로 설정해준다.

vi /etc/mysql/mariadb.conf.d/50-server.cnf

 

[mariadb]
log-bin # log로 남겨라
server_id=2 # 양쪽이 다르기만 하면 됨
log-basename=master2 # log 파일 이름
binlog-format=mixed # 로그를 남기는 형식 (섞어 쓰겠다)

 

설정 후 mariadb 재시작

systemctl restart mariadb

 


Master 로그 파일 확인

서버 2에도 master 로그 파일이 보이는 것을 확인할 수 있다.

mariadb -u root -p
show master status;


사용자 권한 추가

서버 1에서 Slave로 사용할 사용자를 만들어준다.

CREATE USER 'slave_user'@'%' IDENTIFIED BY 'qwer1234';
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%';
FLUSH PRIVILEGES;

 


Master 설정

서버 1(아까 Master 설정했던 서버)에 설정을 해준다.

내 경우 10.10.10.124 컴퓨터 (서버 1)에 아래 설정 추가 (Master 서버 IP를 10.10.10.30으로 지정)

CHANGE MASTER TO
MASTER_HOST='[Master 서버 IP]',
MASTER_USER='slave_user',
MASTER_PASSWORD='qwer1234',
MASTER_PORT=3306,
MASTER_LOG_FILE='[마스터에서 show master status 했을 때 File 이름]',
MASTER_LOG_POS=[마스터에서 show master status 했을 때 position 번호],
MASTER_CONNECT_RETRY=10;
START SLAVE;

 

 

 

설정이 잘 되었나 확인

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

SHOW SLAVE STATUS\G

서버 1(10.10.10.124)의 SHOW SLAVE STATUS\G
서버 2(10.10.10.30)의 SHOW SLAVE STATUS\G

 

💡연결은 잘 되었는데 SQL_Running 이 No가 뜰 때

내 경우 서버 2에서 show slave status를 보았을 때 error가 났었음



정확한 건 모르겠지만,,,
슬레이브에서 먼저 사용자를 생성하고 마스터에서 생성한 경우 마스터에서 실행된 create user 명령이 슬레이브로 복제된다.
사용자가 이미 존재했기 때문에 명령문의 실행 시도가 실패한 것...

아래 명령어를 실행해주니 잘 되었다.
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;​

참고 :
https://serverfault.com/questions/872911/slave-sql-running-no-mysql-replication-stopped-working
 

Slave_SQL_Running: No: MySQL replication stopped working

Replication on my slave database (MySQL 5.7.12) stopped working suddenly. When I run SHOW SLAVE STATUS\G I see the following error: Last_Errno: 1396 Last_Error: Error 'Operation CREATE USER failed...

serverfault.com

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'CS > DB' 카테고리의 다른 글

[DB] DB 서버 핫 사이트 구성 실습 (Active - Standby)  (0) 2024.12.03
[DB] DB 서버 부하 분산 (HAProxy)  (0) 2024.12.03
[DB] JMeter 부하 테스트  (2) 2024.12.02
[DB] SQL 성능 개선  (1) 2024.12.02
[DB] SQL 코테 문제 풀어보기 (프로그래머스)  (3) 2024.11.29
  1. 재해 복구 (DR)
  2. 기존 데이터를 양쪽과 똑같이 설정 (백업, 복구)
  3. DB 서버 Replication 설정 실습 (Master, Slave)
  4. DB 서버 미러 사이트 구성하기 (Active, Active)
'CS/DB' 카테고리의 다른 글
  • [DB] DB 서버 핫 사이트 구성 실습 (Active - Standby)
  • [DB] DB 서버 부하 분산 (HAProxy)
  • [DB] JMeter 부하 테스트
  • [DB] SQL 성능 개선
셰욘
셰욘
셰욘
seiyeon
셰욘
전체
오늘
어제
  • 분류 전체보기 (176)
    • 알고리즘 (46)
      • 프로그래머스 (2)
      • 백준 (37)
      • 문제 유형 (7)
    • CS (41)
      • Linux (6)
      • DB (15)
      • 자료구조 (3)
      • OOP (2)
      • 아키텍처 (0)
    • BE (42)
      • Java (9)
      • Spring Boot (32)
    • FE (6)
      • Next.js (1)
      • JavaScript (5)
      • Vue.js (7)
      • Web (0)
    • 배포 (5)
    • 회고 (19)
      • BEYOND SW 캠프 (19)
    • 기타 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그 관리

공지사항

인기 글

태그

  • 백준
  • vue
  • 백트래킹
  • web
  • 프로그래머스
  • be
  • 실습
  • 오블완
  • bfs
  • 그리디
  • AWS
  • 트리
  • cs
  • js
  • 자료구조
  • 주간회고
  • db
  • 구현
  • 우선순위 큐
  • spring boot
  • Java
  • 알고리즘
  • 티스토리챌린지
  • fe
  • 네트워크
  • DP
  • 리눅스
  • Gateway
  • 회고
  • dfs

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.v4.2.1
셰욘
[DB] 재해 복구(DR) / DB 서버 Replication 설정 / 미러 사이트 구성 실습
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.