GCP의 Database Migration Service를 사용해 AWS RDS - MySQL을 GCP의 Cloud SQL - MySQL로 마이그레이션 해볼 것이다.
VPN 구성은 여기선 HA가 아닌 기본 구성으로 진행할 것이고 AWS는 하나의 VPN interface마다 2개의 터널을 제공한다.
(일반 구성 -> 2개, HA 구성 -> 4개의 interface가 생성됨.)
Database Migration API 활성화
AWS에서 Customer Gateway를 통해 GCP로 연결할 엣지 IP를 하나 할당
Customer Gateway 생성
AWS Customer Gateway에 GCP에서 할당해놓은 고정 IP를 넣어준다.
Virtual Private Gateway 생성
VPG를 생성하고 VPC에 연결해준다.
Site-to-Site VPN 연결
타 플랫폼 간 VPN 설정을 해야하므로 Site-to-Site VPN으로 연결
AWS VPC 네트워크 대역과 GCP VPC 네트워크 대역을 넣어준다.
아직 GCP쪽 설정을 해주지 않았으므로 down되어 있는 상태일 것이다.
VPN 구성을 다운로드하여 Pre-shared Key를 얻는다.
GCP의 VPN 연결시 필요하므로 아래와 같이 나와있는 Key를 기록해두자.
보안 그룹과 라우팅 테이블에서 GCP VPC 대역을 허용, VPG 라우팅 및 라우팅 전파를 활성화 해준다.
AWS Customer Gateway용 고정 IP와 연결
터널 생성
GCP VPC에서 AWS VPC CIDR 대한 방화벽을 열어주면 터널이 올라온 것을 확인할 수 있다.
이제 DB를 생성하고 마이그레이션 해보자.
기본적으로 DB 서브넷 그룹이 default 서브넷 그룹으로 설정되어 있을건데 내가 만든 VPC 대역으로 서브넷 그룹을 만들어주고 해당 서브넷 그룹에 RDS 생성
(테스트용이므로 Free-Tier로 MySQL RDS 생성)
연결 프로필 생성
생성된 RDS 인스턴스의 엔드포인트와 user,pw 입력
마이그레이션 작업 생성
Service Networking API를 활성화해줘야 아래의 단계에서 에러가 나지 않는다.
하지만 마지막 단계에서 테스트를 하면 되지 않을 것이다.
위의 단계에서 마이그레이션 방법으로 VPC 피어링을 선택해서 피어링이 맺어졌을 것이다.
여기서 정의된 대상 IP 범위는 Cloud SQL이 갖게 될 IP 범위이다.
AWS 보안 그룹에 위의 IP 대역을 열어주고 VPN static route에 GCP VPC대역과 Cloud SQL IP 대역 추가
피어링에서 Custom Route 가져오기 내보내기 모두 체크
하지만 그래도 마이그레이션 테스트가 되지 않을 것이다.
에러는 아래와 같았다.
Unsupported BinLog format ERROR 트러블 슈팅 참고
DB 파라미터 그룹에 binlog_format이 mixed로 되어 있는 걸 row로 바꿔야 한다는 것이었다.
이 과정에서 다시 아래와 같은 애러가 날 것이다.
Cannot modify a default parameter group ERROR 트러블 슈팅 참고
이유는 RDS default 파라미터 그룹은 변경 불가.
때문에 파라미터 그룹을 직접 새로 만들어준 후 binlog_format을 수정하고 DB 인스턴스 재부팅을 해줬다.
테스트 성공
AWS RDS에서 마이그레이션 되어 Cloud SQL - MySQL DB가 생성된것을 확인할 수 있다.
Cloud SQL 연결에서 VM ip를 허락해주고 접속
[DMS를 사용한 Amazon RDS 마이그레이션 참고]
https://medium.com/google-cloud/migrating-aws-rds-to-cloud-sql-using-gcp-dms-3614fda55d9e