# DB 이중화
Active - standby // (192.168.55.3) - (192.168.55.4)
쓰기 - 읽기
1. 쓰기 전용, 읽기 전용 역할 분담
- Replication
2. 부하 분산
- 로드 밸런싱을 이용
3. DR(재난 복구, Disaster Recovery)
3-1. 미러 : Active - Active : 2개의 DB가 100% 동일하게 구성되어 모두 실행중인 상태
3-2. 핫 : Active - standby : 스탠바이를 가동 후 즉시 이용가능한 구성
3-3. 웜 : Active - standby : 스탠바이를 가동 후 이용가능하게 하기 위해서 약간의 준비가 필요한 구성
3-4. 콜드 : Active - standby : 스탠바이 측을 정지 시켜 두는 구성
-------------------------------------------------------------------------------------------------
# 쓰기 전용, 읽기 전용 역할 분담 - Replication
1.Vmware CentOS를 이용한 2개의 DB 세팅 및 네트워크 설정
1-1) Master DB Server + Slave DB Server
1-2) ip Setting : 192.168.55.3 / 192.168.55.4
2. 방화벽 설정 (2개 환경 모두)
systemctl stop firewalld
3. MySQL 설치 및 실행 (2개 환경 모두)
1)설치 : yum install mysql-server
2)실행 : systemctl restart mysqld
-------------------------------------------------------------------------------------------------
# Setting - Master
4. MySQL 초기 설정
1) mysql_secure_installation
2) No - 패스워드 입력 - 패스워드 입력 - y - y - y - y
5. Master 설정
1) /etc/my.cnf.d/mysql-server.cnf 파일 수정
6. [mysqld] 밑에 다음 내용을 추가
server-id = 1
log-bin = mysql-bin
7. 서버 재 구동
systemctl restart mysqld
8. Master 상태 확인
mysql -u root -p
show master status;
9. Replication할 때 사용할 계정 생성 및 권한 부여
9-1) 계정 생성 및 권한 부여
# Master DB에 접속 가능한 계정 생성 및 해당 계정에 권한 부여 // WorkBench 접속을 위한 계정
CREATE user '[계정명]'@'%' IDENTIFIED BY '[root 계정의 비밀번호]';
GRANT ALL PRIVILEGES ON DB이름.* TO '[생성한 계정명]'@'%';
FLUSH PRIVILEGES;
# Master DB에 접속 가능한 Slave 측 계정 생성 및 해당 계정을 Slave로 설정 // Slave가 Master에 접근할 계정 생성
CREATE USER '[SlaveDB가 접근할 계정 이름]'@'[Slave DB의 IP주소]' IDENTIFIED BY '[root 계정의 비밀번호]';
GRANT REPLICATION SLAVE ON *.* TO '[생성한 계정명]'@'[Slave DB의 IP주소]'
9-2) Repl_slave_priv 속성이 Y로 되어있는지 확인
SELECT *
From mysql.user
WHERE user='[생성한 계정명]'\G
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
# Setting - Slave
10. Slave 설정
10-1) /etc/my.cnf.d/mysql-server.cnf 파일 수정
[mysqld] 밑에 다음 내용을 추가
server-id = 2
10-2) 서버 재 구동
systemctl restart mysqld
11. Master 지정
11-1) 서버 접속
mysql -u root -p
11-2) Master - Slave 연결
change master to
master_host='[마스터 컴퓨터의 IP 주소]',
master_user='[마스터에서 만든 slave용 계정 이름]',
master_password='[마스터에서 만든 slave용 계정의 PW]',
master_log_file='mysql-bin.[마스터의 로그 번호]',
master_log_pos=[마스터의 포지션 번호];
12. 동기화 시작
start slave;
13. Slave 상태 확인
show slave status; 또는 show slave status\G;
-> Slave_IO_Running: Yes
-> Slave_SQL_Running: Yes
-> Slave_SQL_Running_State 등 확인
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
# 동기화 안될 때
(1) Slave
stop slave;
(2) Master
마스터 상태 확인
(3) Slave
change master to 명령어로 설정
start slave;
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
# 동작 확인
(1) Master , Slave에서 DB 확인
show databases;
(2) Master 에서 DB 생성
CREATE DATABASE [DB이름];
(3) Master , Slave에서 DB 확인
show databases;
이 때 양쪽에 DB가 생성되어 있어야 한다.
'DB(MySQL)' 카테고리의 다른 글
[DB/MySQL]DB 백업 파일 생성 및 백업 실행 (0) | 2023.12.02 |
---|---|
[DB/MySQL] HAProxy + Keepalived / 고가용성(High-Availability) (2) (0) | 2023.11.10 |
[DB/MySQL] Active - Active 간 HAProxy 활용을 통한 로드밸런싱 구현 (0) | 2023.11.10 |
[DB/MySQL] Replication / 서버 이중화 / 역할 분담 (2) (1) | 2023.11.09 |
[DB/MySQL] HAProxy + Keepalived / 고가용성(High-Availability) (0) | 2023.11.09 |