2017-03-02 9 views
1

두 개의 서로 다른 rds 인스턴스에서 동일한 mysql db 사이에서 수백만 개의 행을 이동해야합니다. 내가 생각한 접근 방식은 다음과 같습니다.AWS RDS 인스턴스간에 데이터 이동

- use data-pipeline to export data from the first instance to amazon-s3 
- use data-pipeline to import data from amazon-s3 to the second instance 

내 문제는 마지막 단계의 데이터를 삭제해야한다는 것입니다. 우리는 방대한 양의 데이터에 대해 이야기하고 있기 때문에 배치로 행을 삭제하는 저장 프로 시저를 만드는 것에 대해 생각했습니다. 그걸 실현할 방법이 있니? 아니면 다른 해결책이 있습니까?

다른 점은 전체 테이블이나 전체 데이터베이스가 아닌 특정 테이블에서 일부 행을 이동해야한다는 것입니다.

답변

0

하나의 테이블에서 모든 데이터를 삭제하려면 delete 문 대신 TRUNCATE TABLE을 사용하십시오. 그것은 당신에게 많은 시간을 절약 할 것입니다.

2

AWS DMS 서비스은 방대한 양의 데이터를 이동하는 가장 쉬운 방법입니다. 아래 단계를 따르십시오.

첫째, 당신은 모두이 인스턴스를 RDS 매개 변수 그룹에서 일부 설정을 변경해야합니다.

'log_bin' = 'ON' 'binlog_format' = 'ROW' 'binlog_checksum' = 'NONE' 'log_bin_use_v1_row_events' = 'ON' 
  1. 첫 번째 RDS 인스턴스에서 데이터베이스의 스키마 덤프를 가져 가라.

  2. 두 번째 RDS에서 복원하십시오.

  3. 이제 DMS 구성을 시작하십시오.

  4. 먼저 엔드 포인트를 설정하십시오.

  5. 그런 다음 소스 (첫 번째 RDS)에서 대상 (두 번째 RDS)으로 데이터를 가져 오는 작업을 만듭니다. 마이그레이션 유형에

  6. , 당신은 당신이 지속적인 변화을 선택 다음 실시간 데이터를 동기화하려는 경우 데이터가 마이그레이션 기존 데이터를 선택하거나 기존로드합니다.

  7. 작업 설정에서 T 아겟 테이블 준비 모드 = Do 을 선택하십시오.

  8. 확인 은 어떤 오류의 경우 디버깅하는 데 도움이됩니다 확인란을 로깅 활성화합니다.

  9. 일단 작업이 시작되면 대시 보드에서 프로세스를 볼 수 있습니다.

+0

문제는 전체 테이블이나 전체 데이터베이스가 아닌 특정 테이블에서 일부 행을 이동해야한다는 것입니다. –

0

데이터 파이프 라인은 반복 프로세스에 더 적합합니다. 일회성 작업을 원한다면 많은 번거 로움처럼 보입니다. 알맞은 네트워크 처리량으로 인스턴스를 시작하는 것이 더 쉬운데, 데이터를 보관할만큼 큰 EBS 볼륨을 연결하고 mysqldump과 같은 명령 줄 도구를 사용하여 데이터를 이동하십시오.

클린업에 관한 한, 임시 테이블 (또는 원하지 않는 행 이외의 모든 것)에 보관할 행을 복사 한 쿼리를 작성한 다음 이름 바꾸기를 사용하여 임시 테이블. 그런 다음 원래 표를 놓으십시오.