서버사이 동기화하기 - rsync, mariadb replication

by DDART posted Jul 07, 2020
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

※  커맨드 라인에서 ssh, sftp 접속

 

ssh -p port user@host
sftp -P port user@host

 

※ ssh 접속시 비밀번호 안묻게 하기

 

1. ~/.ssh 디렉토리 내에 키가 생성되어 있지 않다면 아래 명령으로 키생성

 

ssh-keygen -t rsa -b 2048

 

2. 접속할 서버로 공개키 복사

 

ssh-copy-id -i ~/.ssh/id_rsa.pub -p port user@host

 

※ 자료 동기화

 

rsync -avzh -e "ssh -p port" user@host:/home/user/www ./

 

스크립트형태로 작성해 크론탭에서 넣어두면 자동동기화.

 

 

※ MariaDB Replication (동기화)

 

 

 

1. 마스터서버 설정

 

/etc/mysql/mariadb.conf.d/50-server.cnf 의 [mariadb] 영역에 아래내용 추가

[mysqld]
# 슬레이브로부터의 외부접속을 가능하게 하려면 로컬바인드부분을 주석처리해야한다.
#bind-address =127.0.0.1

[mariadb]
log-bin
server_id=1
log-basename=master1
#특정DB만 replicate 하고 싶을 경우
binlog-do-db=동기화할DB이름
expire_logs_days  = 10
max_binlog_size   = 100M

 

 

 

서비스 재시작

service mariadb restart

 

DB를 건드리는 아파치서버 죽여놓고

 

FLUSH TABLES WITH READ LOCK

 

으로 DB 락을 건다.

 

그런후 mysqldump 로 replication할 DB를 백업한후 슬레이브서버쪽으로 sql 파일을 옮긴후 db를 동기화한다.

마스터 서버 :

mysqldump -uroot -p패스워드 --all-databases > all.sql

 

슬레이브서버 :

mysql -uroot -p패스워드 < all.sql

 

 

DB에 root 유저로 접속해 아래 명령

CREATE USER 'replication_user'@'%' IDENTIFIED BY '패스워드';

GRANT REPLICATION SLAVE ON *.* TO replication_user;
-- SSL 사용 강제할 경우 
-- GRANT REPLICATION SLAVE ON *.* TO replication_user require ssl;
SHOW MASTER STATUS;

 

했을때 나오는 File과 position을 기록해두고

 

UNLOCK TABLES;

 

 

show master status 명령을 줫을때 나오는 file명과 position 을 아래 2번 슬레이브 설정때 사용함

 

2. 슬레이브서버 설정

 

/etc/mysql/mariadb.conf.d/50-server.cnf 의 [mariadb] 영역에 아래내용 추가

server-id=11
report-host=호스트이름


서비스 재시작

service mariadb restart

 

DB에 root 유저로 접속해 아래 명령

CHANGE MASTER TO
    -> MASTER_HOST='마스터주소',
    -> MASTER_USER='replication_user',
    -> MASTER_PASSWORD='패스워드',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='SHOW MASTER STATUS의 File값',
    -> MASTER_LOG_POS='SHOW MASTER STATUS의 Position값',
    -> MASTER_CONNECT_RETRY=10;

CHANGE MASTER TO MASTER_USE_GTID = slave_pos;
START SLAVE;

 

관리 명령들

 

마스터

show master status;
show slave hosts;
show binary logs;
purge binary logs to 'master.bin.010';
purge binary logs to '2020-07-20 10:00:00';

# 로그 모두 초기화
reset master;

 

슬레이브

stop slave;
# relay 로그초기화
reset slave;
change master to  ....;
start slave;
show slave status \G;