카카오, ADT 활용해 MySQL 샤드 데이터 재분배하는 방법 공개
·2016.07.01 00:00
핵심 내용
Binlog과 Table Crawler를 병행해 실시간 데이터 충돌 없이 샤드를 확장·축소하는 전략을 제시하며, 전수 조사를 통한 데이터 검증 방안을 공유한다.
1 / 5
자세히 보기
카카오는 자체 개발한 데이터 전송 도구 ADT(Async Data Transfer)를 활용해 MySQL 마스터 DB의 데이터를 여러 샤드로 재분배하는 예제를 공개했습니다. 기존 Range나 Modulus 기반 샤딩의 한계와 클라우드 환경에서의 Scale-in/out 필요성을 해결하기 위해, Binlog 변경 사항과 기존 데이터를 동시에 처리하는 두 가지 핸들러(BinlogHandler, TableCrawlHandler)를 구현했습니다. 데이터 충돌을 방지하기 위해 Binlog 처리 시 REPLACE 문을, 크롤링 시 INSERT IGNORE 문을 사용하며, 순차 처리나 동시 처리 시 락(Lock) 사용 및 삭제 이벤트 히스토리 관리 등 다양한 실행 전략을 제안합니다. 또한 데이터 무결성을 위해 전수 조사를 원칙으로 하며, 서비스 중단 여부에 따른 두 가지 검증 방안을 소개했습니다. 단, 데이터 검증 부분은 카카오 내부적으로 아직 이론 검증 단계임을 명시했습니다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.