※ 커맨드 라인에서 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;