2016. 10. 31. 12:44 Linux Server/mysql
[mysql] 리플리케이션
[mysql 리플리케이션 이란?]
MySQL Replication 설정을 해놓으면, 마스터 서버에 갱신되는 모든 자료를 슬레이브 서버에 저장하게 된다.
실시간 백업으로 사용할수 있지만 마스터 서버에서 자료를 삭제했다면 슬레이브 서버에서도 자료가 삭제되므로,
하드디스크 문제같은 물리적인 문제에 대한 대처방안으로 생각하는것이 좋다.
또한 마스터서버에선 쓰기, 슬레이브 서버에선 읽기만 할경우 DB의 부하 분산에 도움이 된다.
[mysql 리플리케이션 설정방법]
[Master 서버에서 설정]
# vi /etc/my.cnf -> 해당 파일을 열어 server-id =1 부분과 log-bin=mysql-bin 확인 및 설정완료후 mysql 재시작
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin -> (바이너리 로그 기준으로 슬레이브 서버에 리플리케이션하기때문에 반드시 생성이 되도록 설정이 되어있어야 합니다.)
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1 -> 보통 1이 기본값이며, 슬레이브서버와 다르게 설정하면 된다.
binlog_do_db = db명 -> 리플리케이션 할 DB명을 적어준다. (생략할경우 전체 DB를 리플리케이션함)
# mysql -u root -p -> mysql 에 접속하여 슬레이브에서 접속할 사용자를 추가하거나 root 로 설정
Mysql > show master status; -> 해당명령어 입력시 아래 내용이 나오며 mysql-bin 과 Position 번호 확인
+-----------------------+-----------+-------------------+-----------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------------+-----------+-------------------+-----------------------+
| mysql-bin.000040 | 106 | | |
+-----------------------+-----------+-------------------+-----------------------+
1 row in set (0.00 sec)
# mysqldump -u root -p -A > mysql.dump -> 리플리케이션 설정을 위해 마스터 서버의 데이터를 백업받아 슬레이브 서버에서 복구해야합니다.
# rsync -avzPog /usr/local/src/mysql.dump root@115.68.200.69:/usr/local/src/ -> 백업이후 슬레이브서버로 해당 백업파일을 보냅니다.
[Slave 서버에서 설정]
# vi /etc/my.cnf -> 마스터 서버와 마찬가지로 해당파일을 수정해줍니다.
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin -> (바이너리 로그 기준으로 슬레이브 서버에 리플리케이션하기때문에 반드시 생성이 되도록 설정이 되어있어야 합니다.)
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 2 -> 마스터서버와 다르게 설정하여 줍니다.
binlog_do_db = db명 -> 특정 DB만 리플리케이션 할경우 추가, 생략시 전체 DB 리플리케이션
relay-log = slave-relay-bin
log-slave-updates
slave-skip-errors = all -> 모든 에러를 무시하고 싱크를 맞춤 (해당옵션 안줄경우 에러발생시 리플리케이션 정상작동 안함)
read_only -> 이 옵션을 줘야 슬레이브 서버에서 읽기만 가능. 슬레이브 서버에 데이터가 들어가면 안됨
# mysql -u root -p -> mysql 에 접속하여 아래처럼 설정을 합니다.
Mysql > CHANGE MASTER TO MASTER_HOST='마스터 서버 IP', MASTER_USER='접속할 계정', MASTER_PASSWORD='패스워드', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000040', MASTER_LOG_POS=106;
Mysql > start slave;
Mysql > show master status\G -> 해당명령어로 상태확인
'Linux Server > mysql' 카테고리의 다른 글
[mysql] 버전별 컨피그 값 (0) | 2016.12.09 |
---|---|
[mysql] mysql5.5.29 버전 my.cnf 기본값 (0) | 2016.11.15 |
[mysql] bin 파일 복구 (0) | 2016.10.22 |
[mysql] mysql5.6.14 설치 (0) | 2016.09.17 |
[mysql] 데이터베이스 백업 및 복구 (2) | 2016.09.04 |