매일 cron 작업을 실행하는 서버를 유지 관리하여 개인용 Ruby on Rails 응용 프로그램에서 액세스 할 수있는 데이터 소스를 집계하고 보고서를 생성합니다.라이브 원격 MySQL 데이터베이스의 로컬 읽기 전용 복사본을 유지 관리하는 효율적인 방법은 무엇입니까?
Google 데이터 소스 중 하나는 파트너 데이터베이스 중 일부를 부분적으로 덤프하는 것입니다. 파트너는 활성 응용 프로그램을 실행하고 MySQL DB에는 수백 개의 테이블이 있습니다. 그들은 우리에게 응용 프로그램 DB에 대한 읽기 권한이없는 상대적으로 낮은 권한의 슬레이브에게 읽기 전용 액세스 권한을 부여했습니다.
슬레이브 DB에서 레이턴시 문제와 성능 병목 현상으로 인해 DB의 제한된 로컬 복사본을 유지 관리하고 있습니다. 보고서에는 약 20 개의 테이블 만 필요하므로 테이블을 덤프합니다. 또한 데이터를 매일 세분화해야하기 때문에 실시간 동기화가 필요하지 않습니다.
몇 달 동안 필자는 필요한 테이블의 덤프를 로컬 production_tmp
데이터베이스로 스트리밍하는 야간 cron을 구현했습니다. 그런 다음 모든 테이블을 가져 오면 production
을 놓고 production_tmp
을 production
으로 바 꾸었습니다. DB가 25GB 이상으로 커질 때까지이 작업이 진행되어 디스크 공간 제한에 부딪히기 시작했습니다.
지금은 중복 단계를 제거하고 로컬 서버의 production
으로 덤프를 스트리밍하고 있습니다. 이것은 나에게 조금 어색한 느낌이며, 나는 더 안전한 접근법을 구현하고 싶다. 또한 현재 전체 덤프 /로드를 수행하는 데 2 시간 이상 걸립니다. 그리 오래 걸리지 않는 방법을 구현하고 싶습니다. 데이터베이스는 계속 성장할 것이므로 미래의 무언가를 구현하고 싶습니다.
의견을 보내 주시면 감사하겠습니다.
당신이 MySQL을의'뜨거운 backup' 기능을 사용하여 시도 유무 :
@SusannahPotts가 MySQL Enterprise Edition에서이를 수행하는 유일한 방법입니까? –
나는 그렇게 믿는다 ... MySQL은 유료 버전의 기능에 대해 매우 엄격하다. 나는 MySQL 라이센스가 상업적 사용을 허용하지 않기 때문에 당신이 EE 버전을 사용하고 있다고 생각했다. 적어도 내가 읽은 라이센스의 비트부터. –