[MySQL] Replication 마스터 동기화 쉘스크립트



리플리케이션 하다가 도중에 슬래이브 서버를 재시작 해야 하는 경우 마스터의 로그 파일의 포지션을 맞추는게 은근 짜증이 납니다.


DB를 멈춰 놓고 작업하면 느긋하게 해도 되지만 마스터 DB는 동작을 멈추면 안되는 경우엔 사용자가 없는 새벽시간을 이용해 작업하기도 그렇죠~


그래서 쉘스크립트로 마스터의 정보를 읽어와서 바로 CHANGE MSATER TO SQL을 실행하도록 해보았습니다.


#!/bin/sh


M_DB_HOST="MASTER서버"

M_DB_USER="리플리케이션유저아이디"

M_DB_PASS="리플리케이션유저비밀번호"

S_DB_USER="SLAVE루트아이디"

S_DB_PASS="SLAVE비밀번호"


MASTER_STATUS=(`mysql -h$M_DB_HOST -u$M_DB_USER -p$M_DB_PASS -e "SHOW MASTER STATUS" | grep -v "File"`)


SQL1="STOP SLAVE;"

SQL2="SET GLOBAL replicate_do_db = '동기화데이터베이스1,동기화데이터베이스2';"

SQL3="\

CHANGE MASTER TO \

MASTER_HOST='$M_DB_HOST', \

MASTER_USER='$M_DB_USER', \

MASTER_PASSWORD='$M_DB_PASS', \

MASTER_PORT=3306, \

MASTER_LOG_FILE='${MASTER_STATUS[0]}', \

MASTER_LOG_POS=${MASTER_STATUS[1]}; \

"

SQL4="START SLAVE;"


mysql -u$S_DB_USER -p$S_DB_PASS -e "$SQL1"

mysql -u$S_DB_USER -p$S_DB_PASS -e "$SQL2"

mysql -u$S_DB_USER -p$S_DB_PASS -e "$SQL3"

mysql -u$S_DB_USER -p$S_DB_PASS -e "$SQL4"


색깔이 있는 부분은 자신의 환경에 맞게 고쳐야 합니다.


응용하시면 됩니다.



mysql-replication.sh.txt


스크립트파일도 첨부하였습니다.


기존 데이터 백업은 https://ivps.tistory.com/607 여기를 참고하세요~




REPLICATION 유저로 SHOW MASTER STATUS 시 권한을 따로 주어야 합니다.


GRANT REPLICATION CLIENT ON *.* TO '유저아이디'@'%' IDENTIFIED BY '비밀번호';


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,