리플리케이션 : 여러 db를 권한에 따라 수직적으로 연결한다. Master는 쓰기 작업만 하고, Slave는 읽기 작업만 처리한다.
Master와 Slave간 데이터 무결성 검사(검색한 데이터가 원하는 데이터인지 검사)를 하지 않는 비동기 방식으로 노드들 간의 데이터를 동기화한다.
- 장점 : select 성능을 높일 수 있고, 지연 시간이 없다.
- 단점 : 노드들 간 데이터 동기화가 보장되지 않아 일관성 있는 데이터를 얻지 못할 수 있다. Master 노드가 다운되면 복구
및 대처가 까다롭다.
클러스터링 : 여러 개의 DB를 수평적인 구조로 구축하는 방식이다. failover 시스템을 구축하기 위해 사용된다.
노드들 간 데이터를 동기화한다. db들 간 무결성 검사를 하는 동기 방식으로 데이터를 동기화 한다.
항상 가용 가능하게 하는 Active-Active 방식과 일부 클러스터는 대기 상태로 구성하는 Active-Stanby로 나뉜다.
- 장점 : 항상 일관성 있는 데이터를 얻을 수 있다. 노드 하나가 다운되더라도 시스템을 장애 없이 운영할 수 있다.
- 단점 : 노드들 간 데이터 동기화 시간이 필요해 replication에 비해 쓰기 성능이 떨어진다. 장애가 전파된 경우
처리가 까다롭고, 데이터 동기화에 의해 스케일링에 한계가 있다.
failover : 장애 대비 기능. 장애가 발생시 예비 시스템으로 자동 전환하는 기능이다. 추가적인 자원을 필요로 한다.
이처럼 같은 시스템을 2개 준비하는 걸 이중화라고 한다.
가용성 : 서비스를 정상적으로 사용 가능한 정도를 말한다.
binlog : 서버 내 발생되는 모든 변경내역이 기록되는 파일
PIT : 시점복구
안 쓰면 활성화할 필요가 없다. IO부담을 가중시키기 때문.
MySQL 5.6 이상부터는 mysqlbinlog를 사용해 원격저장할 수 있다.
GTID란? 데이터베이스로 커밋되는 각 트랜잭션과 함께 생성되고 트랜잭션에 연결되는 고유한 식별자이다.
GITD를 사용하면 각각의 트랜젝션들은 고유한 전역식별자를 가진다. 완전한 트랜잭션 기반이다.
row-based replication의 성능이 더 좋다. binlog, SHOW SLAVE STATUS 구문에서 확인 가능하다.
https://mangkyu.tistory.com/97
https://systemv.tistory.com/52
https://oriyong.tistory.com/80
https://minsugamin.tistory.com/entry/MySQL-57-GTID