2017-11-16 611 views
5

MySQL에서 redshift로 복제 서버를 만들려고합니다.이를 위해 MySQL binlog를 구문 분석하고 있습니다. 초기 복제의 경우, mysql 테이블의 덤프를 CSV 파일로 변환하고 S3에 업로드 한 다음 redshift copy 명령을 사용합니다. 이를 위해 성능이 효율적입니다.mysql에서 redshift 복제까지 느린 삽입 및 업데이트 명령

초기 복제 후, binlog를 읽을 때 연속 동기화를 위해 삽입 및 업데이트가 매우 느리게 실행되어야합니다.

성능 향상을 위해 수행 할 수있는 작업이 있습니까?

내가 생각할 수있는 가능한 솔루션은 여러 개의 네트워크 호출을 피하기 위해 트랜잭션에서 명령문을 랩핑 한 다음 트랜잭션을 한 번에 보내는 것입니다. 그러나 이는 적색 변속의 단일 업데이트 및 삽입 문이 매우 느리게 실행되는 문제를 해결하지 못합니다. 단일 업데이트 진술은 6 초가 걸립니다. 적색 변이의 한계를 아는 것 (그것은 원주 형 데이터베이스이고 단일 행 삽입은 느릴 것입니다) 이러한 한계를 극복하기 위해 할 수있는 일은 무엇입니까?


편집 1 : 에 관한 DMS : 그냥 우리의 MYSQL 지속적으로, 내가 MySQL의에서 170 개 + 테이블이 있기 때문에 데이터를 denormalise하지 않으 복제하는웨어 하우징 솔루션으로 적색 편이를 사용하고 싶습니다. 진행중인 복제 중에 DMS는 하루에 여러 번 오류를 많이 보이고 하루나 이틀 후에 완전히 오류를 일으키며 DMS 오류 로그를 해독하기가 매우 어렵습니다. 또한 테이블을 삭제하고 다시로드하면 redshift에서 기존 테이블을 삭제하고 새 테이블을 만든 다음 데이터를 삽입하여 내 경우에 중단 시간을 초래합니다. 내가 원하는 것은 이전 테이블 여기

+0

코드를 직접 작성 했습니까? binlog를 s3으로 스트리밍 한 다음 미니 배치 스크립트와 같은 것을 작성해야합니다. 또는 당신을 위해 모든 것을하는 aws DMS를 사용하십시오! –

+0

삽입/업데이트/삭제 문을 사용하면 안됩니다. 모든 상황에서 너무 느립니다! –

+0

이전에는 aws dms 만 사용했지만 성능은 만족스럽지 않았습니다. 오류가 발생할 때마다 테이블을 삭제하고 다시로드해야합니다. 또한이 –

답변

0

을 새 테이블을 만든 다음 새 것으로 이전을 전환하고 삭제하는 당신이) DMS는

1 일하러 가야 할 만들고 DMS 작업을 실행하는 데 필요한 무엇인가이었다 "마이그레이션 및 진행중인 복제"및 "대상 테이블 삭제"가 포함 된 경우

2)이 작업은 실패 할 수 있으므로 걱정하지 마십시오. dms 작업을 "중지"합니다. 적색 편이에

3) 테이블을 다음과 같이 변경

  • 변경 VARCHAR 모든 날짜와 타임 스탬프 (적색 편이 복사 DMS에 의해 을 사용하는 옵션은 '00 대처할 수 없기 때문에 : 00 : 00 00 : 00 '일자는 입니다.
  • dms의 버그로 인해 모든 bool이 varchar로 변경됩니다. DMS에

4) - 현재 전체 다시로드

- - 초기 사본 및 지속적인 바이너리 로그 "대상 테이블 준비 모드"

5 "잘라 내기"할 수있는 작업을 수정)은 DMS 작업을 다시 시작 복제가 작동해야합니다.

당신이

당신이 당신의 소스가 오로라 경우 정확히

http://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html

, 또한 당신이 binlog_checksum를 설정했는지 확인 여기에 지침을 따랐는지 확인하십시오 최신 복제 인스턴스 소프트웨어 버전에 있는지 확인 "none"(잘못된 문서)

+0

위에서 언급 한 모든 단계를 수행했지만 날짜 필드에 대해 varchar로 변경할 수 없습니다. 날짜를 쿼리하고 그룹화해야합니다. –

+0

무엇을해야합니까? 준비 영역, 그럼 난 "데이터웨어 하우스"영역에 복사 etl을 실행합니다. 이 사건과 같은 것을 사용하여 날짜를 varchar에서 복사합니다. datetime = '0000-00-00 00:00:00'그런 다음 null을 반환합니다. datetime :: timestamp end datetime, –