데이터베이스센터가 하나만 있다면 어떨까?
쓰긴 편하겠지만 예전 카카오 화재의 경우처럼 재난상황시 모든 데이터를 사용할 수 없게 될 것이다.
그래서 우리는 재해복구시스템(DRS)를 갖추고 있어야한다.
방법들은 아래와 같다.
1) Mirror Site(미러 사이트)
주 센터와 동일한 수준의 데이터와 시스템을 원격지에 구축하고 Active 상태로 실시간 동시 서비스를 제공하는 방식
2) Hot Site(핫 사이트)
주 센터와 동일한 수준의 데이터와 시스템을 원격지에 구축하여 Stand-by 상태로 유지하며 재난 발생시 Active 상태로 전환하여 서비스 제공
3) Warm Site(웜 사이트)
데이터만 원격지에 보관하고 서비스를 위한 시스템은 확보하지 않거나 최소한으로만 구성하고 재난 발생시에 필요한 시스템을 구성하여 복구
4) Cold Site( 콜드 사이트)
최소한의 준비만 해두는 것
그럼 각 데이터베이스를 어떻게 동기화 시킬까?
바로 Replication을 사용해 변경사항이 발생하면 실시간 동기화를 함으로써 데이터무결성을 유지하는 것이다.
DB 서버 Replication 설정
아래 예제는 ubuntu 24버전, mariadb 15.1 환경해서 진행함
mariadb가 양쪽 서버에 깔려있는 상태를 전제
1. Master
1) master 설정
vi /etc/mysql/mariadb.conf.d/50-server.cnf
log-bin=mysql-bin
server_id=1 # server의 id 번호 설정 자유롭게 입력가능
systemctl restart mariadb // 서버 세팅을 바꿧으니 재시작
2) master 확인
mariadb -u root -p
show master status; // master의 정보 확인
3) master 서버에 slave용 사용자 추가 및 권한 설정
CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호';
GRANT REPLICATION SLAVE ON *.* TO '아이디'@'%';
FLUSH PRIVILEGES;
2. Slave
1) DB 서버 설정
vi /etc/mysql/mariadb.conf.d/50-server.cnf
server_id=2
systemctl restart mariadb
2) Master 지정
mariadb -u root -p
CHANGE MASTER TO
MASTER_HOST='[Master 서버 IP]',
MASTER_USER='아이디',
MASTER_PASSWORD='비밀번호',
MASTER_PORT=3306,
MASTER_LOG_FILE='[마스터에서 show master status 했을 때 File 이름]',
MASTER_LOG_POS=[마스터에서 show master status 했을 때 position 번호],
MASTER_CONNECT_RETRY=10;
START SLAVE;
3) Slave 확인
slave 서버
SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
master 서버
show processlist\G;
slave 서버에서 master 서버를 slave로 지정하는 것도 가능 -> 미러사이트, 양방향 동기화
'DB' 카테고리의 다른 글
[SQL] SQL QUERY 기본 문법 (1) | 2024.11.29 |
---|---|
[DB] SQL (1) | 2024.11.27 |
[DB] 데이터베이스(DB)란?? (0) | 2024.11.27 |
[DB] 가상환경에서 DB 초기설정 (0) | 2024.11.27 |