[ 준비 ]
※ 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로 되어있는지 확인
● 데이터 백업
#백업 파일 생성
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 |