- 호환성을 위해 replication 사용하는 mysql 동일하게 맞추기
- 버전이 다른 경우 반드시 slave 서버가 상위버전이어야 한다.
- replication 가동시에 master 서버 , slave 서버 손으로 가동
- mysql root 계정으로 사용하는 것은 보안상 좋지 않기 때문에 복제계정 생성이 좋다.
일반적인 레플리케이션 구성 : 레플리케이션 되는 대상을 전체 데이터베이스로 잡아 슬레이브 DB 구성
읽기 전용으로 구성하는 것이 좋디 .
3개의 스레드 작동
DB => 바이너리 로그 덤프 스레드
슬레이브 DB 가 마스터 DB 로부터 정상적으로 데이터를 전송받기 위해서는 레플리케이션 환경을 구성하기 위해 마스터 db my.cnf 파일에 시스템 변수를 반드시 설정해야 한다. 만약 설정돼 있지 않으면 레플리케이션이 제대로 동작하지 않는다.
: log-bin 과 server-id 는 꼭 설정해야 한다.
-> 설정 후에 Mysql 다시 시작하기
- 마스터 DB 와 슬레이브 DB 간의 데이터 일관성을 유지하기 위해 설정하는 시스템 변수
바이너리 로그 파일 존재한다.
binlog_format
-> statement , row(가장안전 , 용량 크다) , mixed 의 세 가지 포멧으로 설정 가능
상용기 mixed 로 설정되어 있다.
- sync_binlog
- innodb_flush_log_at_trx_commit : innoDB 엔진의 트랜잭션을 이용해 레플리케이션을 구성할 때 데이터 일관성을 유지하기 위해서는 innodb_flush_log_at_trx_commit=1 로 설정한다.
---- 슬레이브 db
마스터 db 의 설정을 완료하고 나면 새로 구성할 슬레이브 DB 의 설정 진행한다.
- server-id : 마스터 DB에 하나 이상의 슬레이브 DB를 사용할 경우 다른 슬레이브 DB와도 서로 다른 server-id 값을 설정해야 한다.
- read only 로도 사용 가능
현재 우리
마스터 DB로 사용할 DB에 이미 데이터가 저장돼 있는 상태에서 레플리케이션할 새로운 슬레이브 DB 구성하기
** 반드시 : 마스터 DB 의 데이터백업이 선행돼야 한다.
특정 시점까지(point in time) 의 마스터 DB 데이터를 슬레이브 DB로 레플리케이션 하려면 마스터 DB의 전체 데이터 백업이 필요.
-> 이 전체 백업 파일을 슬레이브 DB에서 복구방식으로 데이터를 복원한다.
복원이 완료되면 마스터 db 에서 전체 데이터 백업이 완료된 시점의 바이너리 로그 파일과 포지션 정보를 이용해 마스터 DB 와 슬레이브 DB 를 연결한다.
** 마스터 DB 에 MyISAM 스토리지 엔진 테이블 존재
MyISAM 스토리지 엔진은 트랜잭션 지원않는다.
마스터 DB 에 MyISAM 테이블 데이터가 변경되지 않도록 락을 걸거나 DB 에 접속 돼 있는 세션 연결을 모두 끊어서 데이터가 변경되는 것을 막은 뒤 백업 시작하기 운영중인 마스터 DB 에 실시간으로 슬레이브 DB를 추가할 수 없다.
데이터 백업
시점 백업을 수행하는 방법에는 두가지가 있다.
1.mysqldump 유틸리티를 이용해 백업 실행 시 --single-transaction 옵션 추가해서 사용
2. 온라인 백업 도구인 Xtrabackup 을 이용한다.
백업 파일 복원
레플리케이션 연결
슬레이브 DB 에 백업 파일을 복원한 후 , 확인된 마스터 DB 의 바이너리 로그파일과 포지션 정보를 이용해 레플리케이션 정보를 등록한다.
- 슬레이브 상태 확인하기 :
show slave status; -> 우리는 현재 설정이 안되어 있는것으로 보인다.
show processlist 검색 :
-> replication 이 실행되고있다면,
: Master has sent all binlog to slave; waiting for binlog to be updated
댓글
댓글 쓰기