본문 바로가기

IT/MySql

Mysql 데이터 원격 복제(replication)

master 서버의 mysql 데이터를 slave 서버로 원격 복제하고 싶은 경우가 있는데, 이때 활용할 수 있음.

다만, 오랜기간 실험한 것이 아니라 다소 불안정할 수 있는 점 양해 바랍니다^^

 

서버환경:

CentOS7, mysql 5.7

 

[Master 서버 설정]

1. 설정

# vi /etc/my.cnf 에 아래 내용 추가

log-bin=mysql-bin

server-id=1  <-- 1~32 숫자 슬레이브와 중복되지 않게)

max_binlog_size=1G  <-- 여기서부터 옵션
expire_logs_days=7
binlog_do_db='데이터베이스'  <-- 데이터베이스 단위로, 없으면 전체 복제

2. 유저 만들기
mysql > GRANT REPLICATION SLAVE ON *.* TO '유저아이디'@'%' IDENTIFIED BY '패스워드';
mysql > flush privileges;

3. 재시작
# systemctl restart mysqld

 

[Slave 서버 설정]

1. 설정
# vi /etc/my.cnf 에 추가
server-id=2
replicate-do-db='데이터베이스'

2. 복제하고 싶은 데이터베이스를 Slave로 복사 
# mysqldump -u -p DB | mysql -h -u -p DB
mysql > FLUSH TABLES WITH READ LOCK;  <-- 덤프시 쓰기 금지

3. 마스터 변경
mysql 로그인
mysql > change master to master_host ='123.123.123.123', master_port =3306, master_user ='유저아이디', master_password ='패스워드', master_log_file ='mysql-bin.000002', master_log_pos =154;

mysql > start slave;

 

4. 슬레이브 상태확인

mysql > show slave status\G;

 

5. 마스터 상태확인

master_log_file 보기

mysql > show master status; 

 

master position 보기

mysql > show master status;

 

 

*** 슬레이브에서 쓰기 요청하지 말것
*** 주기적으로 상태를 체크할 것

'IT > MySql' 카테고리의 다른 글

Mysql 5.7 root 패스워드  (413) 2022.08.31
Mysql 테이블내 중목데이터 삭제  (0) 2022.08.31
Mysql utf8 collation 문제  (0) 2022.08.29
MySql 2개 테이블 JOIN 업데이트 / 삭제  (384) 2022.08.29
MySql Fulltext 검색  (0) 2022.08.29