CLOUD/Server

[DB 이중화] Active(쓰기) - Active(읽기)

alsruds 2023. 3. 2. 17:14

[ 준비 ]

※ CentOS 8 서버 2대 준비

● 네트워크 설정

 

방화벽 해제

setenforce 0
systemctl stop firwalld

 

MySQL 설치

yum install mysql-server
systemctl restart mysqld

 

MySQL root 패스워드 설정

mysql_secure_installation

 

[ Master ]

/etc/my.cnf.d/mysql-server.cnf  파일 설정 : 마지막 줄에 추가

server-id = 1
log-bin = mysql-bin

》 파일 변경 후 재시작 : systemctl restart mysqld

 

Replication 할 때 사용할 계정 생성

CREATE USER '[계정id]'@'%' IDENTIFIED BY '[비밀번호]';
GRANT REPLICATION SLAVE ON *.* TO '[계정id]'@'%';

》 MySQL 접속 :  mysql  -u  root  -p 

확인 : SELECT  *  FROM  mysql.user  WHERE  user='[계정id]'\G

          → Repl_slave_priv 속성이 Y로 되어있는지 확인

 

● 데이터 백업

백업할 db 생성!

#백업 파일 생성
mysqldump -u root -p --all-databases > [백업파일이름].db
#슬레이브 서버에 백업 파일 전송
scp ./[백업파일이름].db [slave ip]:/root/[백업파일이름].db

 

[ Slave ]

/etc/my.cnf.d/mysql-server.cnf  파일 설정 : 마지막 줄에 추가

server-id = 2

》 설정 후 재시작 :  systemctl  restart  mysqld

 

● 데이터 복구

mysql -u root -p < [백업파일이름].db

 

마스터 지정

change master to
	master_host='[마스터 IP]',
	master_user='[계정 id]',
	master_password='[비밀번호]',
	master_log_file='mysql-bin.[마스터의 로그 번호]',
	master_log_pos=[마스터의 포지션 번호];

마스터의 로그 번호 & 포지션 번호 : 마스터 서버에서 show master status; 로 알 수 있음

 

동기화 시작

start slave;

 

  slave 상태 확인

show slave status\G

동기화 성공!

 

☞ 확인하기 ☜

Master 서버에서 DB 테이블을 바꿔보면서 Slave 서버에서 변경사항이 적용되는지 확인하기

확인~

'CLOUD > Server' 카테고리의 다른 글

[Nginx/Gunicorn] 웹페이지 배포하기  (0) 2023.03.03
[DB 이중화] Active(읽기,쓰기) - Active(읽기,쓰기)  (0) 2023.03.02
[DB] SQL  (0) 2023.03.02
[DB] 정규화  (0) 2023.03.02
[DB] 사상 (Mapping)  (0) 2023.03.02