■■■ Develop ■■■/[ Database ]

[ My-_SQL ] Replication 이란?

시드라엘 2013. 7. 10. 11:08

Replication 이란?


 대규모로 운영중인 MySQL 데이터베이스의 문제는 server를 중단시키지 않고 전체 백업(clean backup)을 하는 것이다. 백업은 시스템을 느리게 만들며, 백업을 수행중인 테이블과 관련된 데이터가 변경될 수 있기 때문에 데이터 일관성을 해칠 수도 있다. server를 다운시키면 일관된 데이터를 얻을 수 있지만 이는 사용자에게 서비스 중단을 의미한다. 반드시 필요하고 어쩔 수 없는 경우라면 server를 다운시킬 수 있지만, 데이터를 백업하기 위해 매일 server를 중단하는 것은 받아들이기 어려운 일이다. 날마다 server를 중단하지 않고 안정적인 백업을 받는 방법은 MySQL에 Replication(replication)를 설정하는 것이다.
Replication이란 여러 대의 DBserver가 동일한 데이터를 지속적으로 가지고 있을 수 있는 기능이라 말 할 수 있다. 이 기능을 사용하면 실시간 백업과 DBserver 부하 분산도 가능하다. Replication을 이용하면 Master의 데이터와 동일한 데이터를 가진 여러 개의 Slave를 만들수 있다. 이 기능은 Mysql-3.23.15부터 지원되었다.
Mysql에서는 모든 데이터 변동 시 로그를 남기는 기능이 있다. Slaveserver는 Master의 binary 로그의 내용을 가지고 자기자신에 Update한다. 그러므로 모든 update query는 Master에서만 수행이 되어야만 하며 select와 같은 단순한 query는 slave에서 사용 가능하다.

 

------------------------------------------------------------------------------------------------------------------

 

내 의견

1. master에서만 INSERT, UPDATE, DELETE를 하는 이유는 마스터 -> 슬레이브로의 단방향 동기화를 위해서 이다. 역 방향으로 이 CRUD가 이루어지면 동기화는 지켜지기 어렵다. master에서 이뤄지는 SELECT는 실시간을 처리를 요하는 부분에만 사용하도록 하자.

2. INSERT, UPDATE, DELETE는 꼭 해당 DB에 접속해서 작업할 것!

3. Replication DB 사용시 유의사항

- UPDATE JOIN, DELETE JOIN시에 해당 TABLE이 존재하는지 확인

- 슬레이브에서 일부의 테이블만 지니고 있다면 그 DB에서 에러 발생 가능