2014-09-15 3 views
3

우리는 인턴을 고용하여 유용한 데이터를 생성하기 위해 데이터를 가지고 놀고 싶습니다. 현재 우리는 데이터베이스 스냅 샷을 가져 와서 액세스 권한을 부여한 새로운 RDS 인스턴스를 만들었습니다. 그러나 그것은 프로덕션 데이터베이스의 변경으로 인해 거의 즉시 구식입니다.RDS 읽기 복제본 고려 사항

현실적인 데이터를 수정하거나 실수로 프로덕션 데이터베이스를 가져 오는 것에 대해 걱정하지 않고 액세스 할 수있는 실제 데이터베이스의 라이브 미러 (또는 가까운 라이브 미러)를 원합니다. SELECT (*) FROM ourbigtable과 같은 어리석은 쿼리를 실행하거나 매우 느린 조인).

읽기 복제본이이 용도로 적합할까요? 그것은 적어도 최신 상태로 유지 될 것 같지만 읽기 복제본이 다운되거나 데이터가 우연히 또는 다른 잠재적 인 책임으로 변경된 경우 어떤 일이 발생할 것인지 명확하지 않습니다.

유일한 것은 내가이 was this SO question 관련 찾을 수있는이 내게 조금 걱정 (강조 광산)이있다 : 당신은 많은 양의 데이터를 미리 계산하고 무엇이 그렇지 을 수정하려는 경우

을 읽기 복제본에서 당신은 당신이 데이터를 변경하지 있어 정말 조심해야 - 읽기 후 더 이상 일치하지 않는 경우 당신이 :

TL 문제에있어 을, DR하지 않는 한하지 마 너는 네가하고있는 일을 너 정말로 알고있어. 모든 파급 효과를 이해합니다.

그리고 퉁명스럽게, MySQL의 복제는 너무도 발생하도록되어 무엇을 당신은 또한 업데이트했습니다 슬레이브 마스터가 업데이트 된 데이터를 쓰려고 으로이 있다면 일이 무엇을 알고, 내 경험에 황당 할 수있다. ... 누가 알아. 우리는 인턴이 참조되지 않은 읽기 복제본에서 그것을 보자 경우

는 프로덕션 데이터베이스에 어떤 위험이 있습니까?

답변

9

우리는 몇 년 동안 우리의 프로덕션 데이터베이스의 읽기 복제본을 중요한 문제없이 실행했습니다. 쿼리를 실행할 수있는 기능을 필요로하는 판매, 마케팅 등 모든 사람들에게 복제본에 대한 액세스 권한이 제공됩니다. 그것은 꽤 잘 작동하고 대부분 안정적입니다. 프로덕션 데이터베이스는 잠겨있어 응용 프로그램 만 연결할 수 있으며 읽기 복제본은 사무실의 SSL을 통해서만 액세스 할 수 있습니다. 보안 설정은 마스터 데이터베이스에 모든 사용자 계정을 작성한 다음 읽기 복제본에 복제되기 때문에 매우 중요합니다.

저는 하드웨어 복제 관련 문제로 인해 읽기 복제본이 나쁜 상태에 빠지는 것을 보았습니다. read-replicas에 대한 좋은 점은 비록 당신이 원할 때마다 간단하게 하나를 종료하고 새로운 것을 생성 할 수 있다는 것입니다. 새 복제본이 이전 복제본과 완전히 동일한 인스턴스 이름을 가진 한 DNS 등은 변경되지 않으므로 간단히 사용할 수 없게되므로 최종 사용자에게는 모든 것이 투명해야합니다. 한두 번 우리는 막힌 읽기 복제본을 재부팅하기 만하면 결국에는 따라 잡을 수있었습니다.

마스터 데이터베이스에서 보낸 명령을 처리하는 방법 이외의 방법으로는 읽기 복제본의 데이터를 업데이트 할 수 없습니다. RDS는 단순히 사용자가 가지고있는 권한에 관계없이 읽기 - 복제본에 삽입, 업데이트 등과 같은 것을 실행할 수 없도록합니다. 따라서 읽기 복제본에서 변경되는 데이터가 마스터와 동기화되지 않도록하는 것에 대해 걱정할 필요가 없습니다.

일부 사람이 장기 실행 쿼리를 제출하면 복제본이 프로덕션 데이터베이스에서 조금 뒤떨어 질 수 있지만 일반적으로 쿼리가 완료된 후에는 복제본이 상당히 빨리 캐치됩니다. 모든 프로덕션 환경에서 복제를 주시하고 장기 실행 쿼리를 확인하기 위해 몇 개의 모니터를 설정했습니다. 복제를 주시하기 위해 Percona Toolkit for MySQL에서 pmp-check-mysql-replication-delay 명령을 사용합니다. Nagios를 통해 몇 분 간격으로 실행됩니다. 장기 실행 쿼리를 확인하는 cron을 통해 실행되는 사용자 지정 스크립트도 있습니다. 기본적으로 "SHOW FULL PROCESSLIST"명령의 출력을 구문 분석하고 실행중인 사용자의 사용자 이름과 쿼리가 오랫동안 실행 된 경우 전자 메일을 보냅니다. 우리가 필요하다고 결정하십시오.

이러한 검사를 통해 우리는 읽기 복제본에 거의 문제가 없었습니다.