DMS를 사용한 RDS to OpenSearch CDC 복제 진행하기 (2) - OpenSearch 도메인 생성 및 DMS를 통한 CDC 복제
작성 일자 : 2024년 03월 22일
본 포스팅이 다루는 내용
- OpenSearch용 VPC 보안 그룹 생성하기
- OpenSearch 도메인 생성하기
- DMS용 VPC 보안 그룹 생성하기
- DMS의 복제 인스턴스 생성하기
- RDS로부터의 Source 엔드포인트 생성하기
- DMS와 Opensearch 간 연결을 위한 IAM 역할 및 정책 생성하기
- OpenSearch로의 Target 엔드포인트 생성하기
- VPC 외부에서 OpenSearch Dashboards에 접속하기
- Database migration tasks 생성하기
- CDC 복제 테스트
1. OpenSearch용 VPC 보안 그룹 생성하기
OpenSearch 도메인을 생성하기 이전에, 해당 도메인 내에서 사용할 VPC 보안 그룹을 생성해보도록 하겠습니다.
1. AWS의 EC2 Dashboard에서 Security Groups를 클릭합니다.
2. Create security group을 클릭합니다.
3. 아래와 같이 Security Group을 설정합니다.
- Basic details
- Security group name :
YourProjectName-opensearch-security
- Description :
Security Group for OpenSearch
- VPC :
Default VPC
- Security group name :
- Inbound rules : 기본 값
- Outbound rules : 기본 값
4. Create security group을 클릭합니다.
2. OpenSearch 도메인 생성하기
OpenSearch 도메인은 지정된 설정, 인스턴스 유형, 인스턴스 수 및 스토리지 리소스를 갖고 있는 클러스터입니다. 아래의 과정을 통해 OpenSearch 도메인을 생성해보도록 하겠습니다.
1. AWS의 Amazon OpenSearch Service Dashboard에서 Create domain 버튼을 클릭합니다.
2. 아래와 같이 도메인을 설정합니다.
- Name :
YourProjectName-opensearch
- Domain creation method :
Standard create
- Templates
Dev/test
- Deployment option(s)
- Deployment option(s) :
Domain without standby
- Availability Zone(s) :
1-AZ
- Deployment option(s) :
- Engine options
- Version :
2.11 (latest)
(현재 최신 버전) - Enable compatibility mode :
빈 칸
(호환성 모드는 Elasticsearch OSS 클라이언트에게 OpenSeach의 버전을 7.10으로 보고하도록 설정함으로써 Logstash와 같은 클라이언트를 OpenSearch에 연결할 수 있게 해줍니다.)
- Version :
- Data nodes
- Instance type :
t3.small.search
- Number of nodes :
1
- Storage type :
EBS
- EBS volume type :
General Purpose (SSD) - gp3)
- EBS storage size per node :
20
- Advanced volume type options : 기본 값
- Instance type :
- Warm and cold data storage : 기본 값
- Dedicated master nodes :
빈 칸
- Snapshot configuration : 기본 값
- Custom endpoint :
빈 칸
- Network
- Network :
VPC access
- IP address type :
IPv4 only
- VPC :
Default VPC
- Subnets : 첫 번째 서브넷 선택
- Security groups (중요!) :
YourProjectName-opensearch-security
(위에서 생성한 보안 그룹을 선택합니다.)
- Network :
- Fine-grained access control (중요!)
- SAML authentication for OpenSearch Dashboards/Kibana : 기본 값
- Amazon Cognito authentication :
빈 칸
- Access policy
- Domain access policy :
Configure domain level access policy
- JSON 형식으로 아래와 같이 설정합니다.
- Domain access policy :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"es:*"
],
"Resource": "arn:aws:es:ap-northeast-2:891377225608:domain/YourProjectName-opensearch/*"
}
]
}
위의 Resource 부분에서 region
그리고 account-id
와 domain-name
을 맞게 수정해주어야 합니다.
"Resource": "arn:aws:es:{region}:{account-id}:domain/{domain-name}/*"
- Encryption
- Require HTTPS for all traffic to the domain :
체크
- Node-to-node encryption :
체크
- Enable encryption of data at rest :
체크
- Choose an AWS KMS key :
User AWS owned key
- Require HTTPS for all traffic to the domain :
- Off-peak window : 기본 값
- Auto-Tune : 기본 값
- Automatic software updates :
빈 칸
- Advanced cluster settings : 기본 값
3. Create 버튼을 클릭하여 OpenSearch 도메인을 생성합니다. (도메인 생성에는 약 20분 정도 소요됩니다.)
3. DMS용 VPC 보안 그룹 생성하기
1번 과정에서 OpenSearch용 VPC 보안 그룹을 생성했듯이, 이번에는 DMS용 VPC 보안 그룹을 생성해보도록 하겠습니다. 아래와 같이 설정한 후 보안 그룹을 생성합니다.
- Basic details
- Security group name :
YourProjectName-dms-security
- Description :
Security Group for DMS
- VPC :
Default VPC
- Security group name :
- Inbound rules : 기본 값
- Outbound rules : 기본 값
4. DMS의 복제 인스턴스 생성하기
DMS(Database Migration Service)는 관계형 데이터베이스, 데이터 웨어하우스, NoSQL 데이터베이스 및 기타 유형의 데이터 저장소를 마이그레이션할 수 있는 클라우드 서비스입니다. 마이그레이션은 서버리스 방식 또는 복제 인스턴스를 사용하는 방식으로 진행할 수 있습니다. 저희는 복제 인스턴스를 사용하여 마이그레이션을 진행해보도록 하겠습니다.
1. AWS의 DMS 서비스 좌측 사이드 바에서 Replication instances를 클릭합니다.
2. Create replication instance 버튼을 클릭합니다.
3. 아래와 같이 DMS 복제 인스턴스를 설정합니다.
- Settings
- Name :
YourProjectName-dms
- Name :
- Instance configuration
- Instance class :
dms.t2.micro
(Include previous-generation instance classes 토글 활성화 후 선택합니다.) - Engine version :
3.5.2
(현재 최신 버전) - High availability :
Dev or test workload (Single-AZ)
- Instance class :
- Storage
- Allocated storage (GiB) :
50
(T2 및 T3 인스턴스 유형에는 50GB의 GP2 네트워크 연결 스토리지가 포함됩니다.)
- Allocated storage (GiB) :
- Connectivity and security
- Network type :
IPv4
- Virtual private cloud (VPC) for IPv4 :
Default VPC
- Replication subnet group :
default-vpc-xxxxxx
- Public accessible :
빈 칸
- Availability zone :
No preference
- VPC security groups :
YourProjectName-dms-security
(위에서 생성한 보안 그룹을 선택합니다.) - AWS KMS key :
aws/dms
- Network type :
- Maintenance : 기본 값
- Create replication instance 버튼을 클릭하여 DMS 복제 인스턴스를 생성합니다. (복제 인스턴스 생성에도 약 20분 정도 소요됩니다.)
- Create replication instance 버튼 클릭 시, 아래와 같은 경고창이 뜰 경우, 무시하고 다시 한 번 Create replication instance 버튼을 클릭하면 정상적으로 복제 인스턴스가 생성됩니다.
The IAM Role arn:aws:iam::<account_id>:role/dms-vpc-role is not configured properly
5. RDS로부터의 Source 엔드포인트 생성하기
RDS의 VPC 보안 그룹에서 DMS VPC 보안 그룹으로부터의 인바운드 트래픽 허용하기
RDS로부터의 Source 엔드포인트를 생성하기 이전에, DMS의 복제 인스턴스가 RDS 인스턴스에 접근할 수 있도록 보안 그룹 설정을 해주어야 합니다. 아래의 과정을 따라 RDS의 VPC 보안 그룹을 설정합니다.
1. AWS의 EC2 Dashboard에서 Security groups를 클릭합니다.
2. Security group name이 YourProjectName-dms-security
인 Security group ID를 복사합니다. (DMS 복제 인스턴스의 VPC 보안 그룹)
3. Security group name이 YourProjectName-rds-security
인 보안 그룹을 클릭합니다. (RDS 인스턴스의 VPC 보안 그룹)
4. Inbound rules 탭에서 Edit inbound rules 버튼을 클릭합니다.
5. Add rule 버튼을 클릭하여 아래와 같이 인바운드 규칙을 추가하고, Save rules 버튼을 클릭합니다.
- Type :
MySQL/Aurora
- Protocol :
TCP
- Port range :
3306
- Source :
Custom
(위에서 복사해놓았던 DMS 복제 인스턴스의 Security group ID를 입력합니다.) - Description :
YourProjectName-dms-security
Source 엔드포인트 생성하기
엔드포인트는 데이터 저장소에 대한 연결, 데이터 저장소 유형 및 위치 정보를 제공합니다. DMS는 이 정보를 사용하여 데이터 저장소에 연결하고 Source 엔드포인트에서 Target 엔드포인트로 데이터를 마이그레이션합니다. 아래의 과정을 통해서 RDS로부터의 Source 엔드포인트를 생성해보겠습니다.
1. AWS의 DMS 서비스 좌측 사이드 바에서 Endpoints를 클릭합니다.
2. Create endpoint 버튼을 클릭합니다.
3. 아래와 같이 Source 엔드포인트를 설정합니다.
- Endpoint type :
Source endpoint
- Select RDS DB instance :
체크
- RDS Instance :
YourProjectName-rds
- Select RDS DB instance :
- Endpoint configuration
- Endpoint identifier :
YourProjectName-rds-source
- Source engine :
MySQL
- Access to endpoint database :
Provide access information manually
- Servicer name : 기본 값 (RDS 인스턴스의 엔드포인트)
- Port : 3306
- User name : {RDS의 Master username}
- Password : {RDS의 Master password}
- Secure Socket Layer (SSL) mode :
none
- Endpoint settings :
Wizard
- Use endpoint connection attributes :
빈 칸
- Endpoint identifier :
- KMS key :
(Default) aws/dms
- Test endpoint connection (optional) : VPC와 Replication instance를 설정한 이후, 아래의 Run test 버튼을 클릭하여 연결을 테스트합니다.
4. Create endpoint 버튼을 클릭하여 Source 엔드포인트를 생성합니다.
6. DMS와 Opensearch 간 연결을 위한 IAM 역할 및 정책 생성하기
OpenSearch의 데이터베이스를 DMS의 Targert 엔드포인트로 설정하기 이전에, DMS가 Target 엔드포인트에서 OpenSearch 인덱스에 엑세스할 수 있도록 허용해야 합니다. 이를 위해 아래의 과정을 따라 IAM 역할 및 정책을 생성해보겠습니다.
정책(Policy) 생성하기
1. AWS의 IAM 서비스 좌측 사이드 바에서 Policies를 클릭합니다.
2. Create policy 버튼을 클릭합니다.
3. JSON 형식으로 아래와 같이 설정합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"es:ESHttpDelete",
"es:ESHttpGet",
"es:ESHttpHead",
"es:ESHttpPost",
"es:ESHttpPut"
],
"Resource": "arn:aws:es:ap-northeast-2:891377225608:domain/gerrymandering-opensearch/*"
}
]
}
- Resource 부분에서
region
그리고account-id
와domain-name
을 맞게 수정해주어야 합니다.
"Resource": "arn:aws:es:{region}:{account-id}:domain/{domain-name}/*"
4. Next 버튼을 누르고 아래와 같이 설정합니다.
- Policy name :
dms-opensearch-policy
- Description :
DMS to OpenSearch Policy
5. Create policy 버튼을 클릭하여 정책을 생성합니다.
역할(Role) 생성하기
1. AWS의 IAM 서비스 좌측 사이드 바에서 Roles를 클릭합니다.
2. Create role 버튼을 클릭합니다.
3. 아래와 같이 설정하고 Next 버튼을 클릭합니다.
- Trusted entity type :
AWS service
- Use case
- Service or use case :
DMS
- Use case :
DMS
- Service or use case :
4. Permission policies에서 위에서 생성한 dms-opensearch-policy
를 검색하고 체크합니다.
- Permissions policies :
dms-opensearch-policy
- Set permissions boundary :
Create role without a permission boundary
5. Next 버튼을 클릭한 이후, Role name과 Description을 입력합니다.
- Role name :
dms-opensearch-role
- Description :
DMS to OpenSearch Role
6. Create role 버튼을 클릭하여 역할을 생성합니다.
7. (중요!) 생성된 역할을 클릭하고 Summary 탭에서 ARN을 복사합니다. 이 ARN은 DMS의 Target 엔드포인트 생성 시에 사용되므로, 빈 메모장에 기록해두는 것이 좋습니다.
7. OpenSearch로의 Target 엔드포인트 생성하기
다시 DMS로 돌아와서, 이번에는 OpenSearch로의 Target 엔드포인트를 생성해보겠습니다. 바로 위에서 생성한 IAM 역할의 ARN을 기록해놓은 것처럼, 추가로 OpenSearch 도메인의 엔드포인트도 Target 엔드포인트 생성 시에 필요하므로 같이 기록해두겠습니다.
OpenSearch 엔드포인트 확인하기
1. AWS의 Amazon OpenSearch Service 서비스에서 Domains를 클릭합니다.
2. 위에서 생성한 YourProjectName-opensearch
도메인을 클릭합니다.
3. 아래와 같이 Domain endpoint (VPC) 부분을 복사해서 IAM 역할 ARN과 함께 기록해둡니다.
OpenSearch의 VPC 보안 그룹에서 DMS VPC 보안 그룹으로부터의 인바운드 트래픽 허용하기
RDS와 마찬가지로 OpenSearch도 DMS의 복제 인스턴스가 OpenSearch에 접근할 수 있도록 보안 그룹 설정을 해주어야 합니다. 아래의 과정을 따라 OpenSearch의 VPC 보안 그룹을 설정합니다.
1. AWS의 EC2 Dashboard에서 Security groups를 클릭합니다.
2. Security group name이 YourProjectName-dms-security
인 Security group ID를 복사합니다. (DMS 복제 인스턴스의 VPC 보안 그룹)
3. Security group name이 YourProjectName-opensearch-security
인 보안 그룹을 클릭합니다. (OpenSearch의 VPC 보안 그룹)
4. Inbound rules 탭에서 Edit inbound rules 버튼을 클릭합니다.
5. Add rule 버튼을 클릭하여 아래와 같이 인바운드 규칙을 추가하고, Save rules 버튼을 클릭합니다.
- Type :
All traffic
- Protocol :
All
- Port range :
All
- Source :
Custom
(위에서 복사해놓았던 DMS 복제 인스턴스의 Security group ID를 입력합니다.) - Description :
YourProjectName-dms-security
Target 엔드포인트 생성하기
1. AWS의 DMS 서비스 좌측 사이드 바에서 Endpoints를 클릭합니다.
2. Create endpoint 버튼을 클릭합니다.
3. 아래와 같이 Target 엔드포인트를 설정합니다.
- Endpoint type :
Target endpoint
- Select RDS DB instance :
빈 칸
- Select RDS DB instance :
- Endpoint configuration
- Endpoint identifier :
YourProjectName-opensearch-target
- Target engine :
Amazon OpenSearch Service (successor to Amazon Elasticsearch Service)
- Amazon Resource Name (ARN) for service access role (중요!) : 위에서 복사해놓은 IAM 역할의 ARN을 붙여넣습니다.
- Endpoint URI : 위에서 복사해놓은 OpenSearch 도메인의 엔드포인트를 붙여넣습니다.
- Endpoint settings :
Wizard
- Add new setting (중요!)
- Setting :
UseNewMappingType
- Value :
true
- Setting :
- Endpoint identifier :
Add new setting에 UseNewMappingType
을 true
로 설정해놓지 않으면 DMS to OpenSearch의 마이그레이션 작업에서 아래와 같은 오류를 만날 수 있습니다.
2024-03-18T08:29:41 [TARGET_LOAD ]I: Elasticsearch:FAILED SourceTable:songs TargetIndex:songs Operation:INSERT_ENTRY RecordPKKey:1 RecordPKID:6B86B273FF34FCE19D6B804EFF5A3F5747ADA4EAA22F1D49C01E52DDB7875B4BES HttpCode:400 ESErrorResponse: {
"error": "no handler found for uri [/songs/doc/6B86B273FF34FCE19D6B804EFF5A3F5747ADA4EAA22F1D49C01E52DDB7875B4B] and method [PUT]"
} (elasticsearch_utils.c:668)
마이그레이션 작업에서 uri의 경로가 위와 같은 /songs/doc/6B86...
가 아닌 /songs/_doc/6B86...
로 설정되어야 하는데, UseNewMappingType
을 true
로 설정해놓음으로써 문서 유형을 _doc
으로 설정할 수 있습니다.
Reference : AWS - ElasticsearchSettings, AWS re:Post - DMS MySQL errors when replicating to OpenSearch
- Test endpoint connection (optional) : VPC와 Replication instance를 설정한 이후, 아래의 Run test 버튼을 클릭하여 연결을 테스트합니다.
4. Create endpoint 버튼을 클릭하여 Source 엔드포인트를 생성합니다.
8. VPC 외부에서 OpenSearch Dashboards에 접속하기
본격적인 Database migration tasks를 생성하고 실행해보기 전에, RDS 인스턴스의 데이터가 OpenSearch로 잘 마이그레이션되었는지 확인하기 위해 OpenSearch Dashboards에 접속해보겠습니다. VPC 외부에서 OpenSearch Dashboards에 접속하기 위해서는 아래와 같은 방법을 이용할 수 있습니다.
- 동일한 VPC 환경 내 Amazon EC2 Windows 인스턴스를 사용해서 브라우저를 통해 접속
- 동일한 VPC 환경 내 Amazon EC2 Linux 인스턴스를 사용
- SSH 터널링을 통해 접속
- NGINX 프록시를 통한 접속
본 시리즈에서는 EC2 Linux 인스턴스를 사용한 SSH 터널링을 통해 OpenSearch Dashboards에 접속해보겠습니다.
EC2의 VPC 보안 그룹에서 HTTP/HTTPS 인바운드 트래픽 허용하기
우선적으로, EC2의 VPC 보안 그룹에서 HTTP/HTTPS 인바운드 트래픽을 허용해야 합니다. 아래와 같이 인바운드 규칙을 추가합니다.
1. AWS의 EC2 Dashboard에서 Security groups를 클릭합니다.
2. Security group name이 YourProjectName-ec2-security
인 보안 그룹을 클릭합니다. (EC2 인스턴스의 VPC 보안 그룹)
3. Inbound rules 탭에서 Edit inbound rules 버튼을 클릭합니다.
4. Add rule 버튼을 클릭하여 아래와 같이 인바운드 규칙 두 개를 추가합니다.
- Type :
HTTP
- Protocol :
TCP
- Port range :
80
- Source :
Custom
(EC2 인스턴스의 Security group ID를 선택합니다.) - Description :
YourProjectName-ec2-security
- Type :
HTTPS
- Protocol :
TCP
- Port range :
443
- Source :
Custom
(EC2 인스턴스의 Security group ID를 선택합니다.) - Description :
YourProjectName-ec2-security
5. Save rules 버튼을 클릭하여 인바운드 규칙을 저장합니다. 혹시라도 SSH Inbound rule이 없다면, SSH Inbound rule도 자신의 IP로 추가해줍니다.
OpenSearch의 VPC 보안 그룹에서 EC2 VPC 보안 그룹으로부터의 인바운드 트래픽 허용하기
다음으로, OpenSearch의 VPC 보안 그룹에서 EC2 VPC 보안 그룹으로부터의 인바운드 트래픽을 허용해야 합니다. 아래와 같이 인바운드 규칙을 추가합니다.
1. AWS의 EC2 Dashboard에서 Security groups를 클릭합니다.
2. Security group name이 YourProjectName-ec2-security
인 Security group ID를 복사합니다. (EC2 인스턴스의 VPC 보안 그룹)
3. Security group name이 YourProjectName-opensearch-security
인 보안 그룹을 클릭합니다. (OpenSearch 도메인의 VPC 보안 그룹)
4. Inbound rules 탭에서 Edit inbound rules 버튼을 클릭합니다.
5. Add rule 버튼을 클릭하여 아래와 같이 인바운드 규칙을 추가합니다.
- Type :
All traffic
- Protocol :
All
- Port range :
All
- Source :
Custom
(위에서 복사해놓았던 EC2 인스턴스의 Security group ID를 입력합니다.) - Description :
YourProjectName-ec2-security
6. Save rules 버튼을 클릭하여 인바운드 규칙을 저장합니다.
EC2 인스턴스에서 SSH 터널링을 통해 OpenSearch Dashboards에 접속하기
이제, EC2 인스턴스에서 SSH 터널링을 통해 OpenSearch Dashboards에 접속해보겠습니다.
1. 이전 포스팅에서 EC2 인스턴스에 접속한 과정과 마찬가지로, EC2 인스턴스의 상세 정보 페이지에서 Connect 버튼을 클릭하여 SSH 접속 명령어를 복사합니다.
2. 저희는 복사한 명령어를 아래와 같은 형식으로 수정하여 OpenSearch Dashboards에 접속할 것입니다.
ssh -i <EC2 private key pem 파일> ec2-user@<public ip주소> -N -L 9200:<OpenSearch 도메인 엔드포인트 URL중 vpc~.com>:443
3. OpenSearch 도메인의 엔드포인트 URL을 도메인 상세 정보 페이지에서 확인합니다.
4. 엔드포인트에서 앞 부분 https://
를 제외한 부분을 복사하여 아래의 명령어와 같은 형식을 만듭니다.
ssh -i "gerrymandering-keypair.pem" ec2-user@ec2-xx-xxx-xxx-xx.ap-northeast-2.compute.amazonaws.com -N -L 9200:vpc-gerrymandering-opensearch-abcdefghijklmnop0123456789.ap-northeast-2.es.amazonaws.com:443
5. 터미널 창에 명령어를 입력하고 실행합니다. 명령어가 실행 중인 터미널을 열어놓은 상태로 로컬 PC내의 브라우저에서 https://localhost:9200/_dashboards
로 접속하면 OpenSearch Dashboards에 접속할 수 있습니다.
Reference : AWS - re:Post - VPC 외부에서 OpenSearch Dashboards에 엑세스하는 방법
9. Database migration tasks 생성하기
다시 DMS로 돌아와서 마이그레이션 작업을 위한 Database migration tasks를 생성해보겠습니다. 아래와 같이 Database migration tasks를 생성합니다.
1. AWS의 DMS 서비스 좌측 사이드 바에서 Database migration tasks를 클릭합니다.
2. Create task 버튼을 클릭합니다.
3. 아래와 같이 Database migration tasks를 설정합니다.
- Task configuration
- Task identifier :
ongoing-replication-test
- Replication instance :
YourProjectName-dms - vpc-xxxxxx
- Source database endpoint :
YourProjectName-rds-source
- Target database endpoint :
YourProjectName-opensearch-target
- Migration type :
Migrate existing data and replicate ongoing changes
- Task identifier :
- Task settings
- Editing mode :
Wizard
- Custom CDC stop mode for source transactions :
Disable custom CDC stop mode
- Create recovery table on target DB :
빈 칸
- Target table preparation mode :
Drop tables on target
(이미 존재하는 테이블을 삭제하고 마이그레이션을 진행합니다. Info를 눌러서 다른 모드를 확인할 수 있습니다.) - Stop task after full load completes :
Don't stop
- Data Validation :
Turn off
- Task logs (중요!) :
체크
(Turn on CloudWatch logs를 체크합니다. 해당 부분을 체크하지 않을 경우 마이그레이션 작업이 진행되는 동안 로그를 확인할 수 없어 매우 불편합니다.) - Log context 및 Log component severity : 기본 값
- Advanced task settings : 기본 값
- Editing mode :
- Table mappings
- Editing mode :
Wizard
- Selection rules에서 Add new slelection rule를 클릭하고 아래와 같이 설정합니다.
- Schema :
Enter a schema
- Source name :
test
(RDS에서 생성한 데이터베이스 명) - Source table name :
songs
(RDS에서 생성한 테이블 명) - Action :
Include
- Schema :
- Editing mode :
- Premigration assessment
- Turn on premigration assessment :
빈 칸
- Turn on premigration assessment :
- Migration task startup configuration
- Start migration task :
Automatically on create
- Start migration task :
4. Create task 버튼을 클릭하여 Database migration tasks를 생성합니다.
5. 생성된 Database migration tasks의 Status가 Creating
에서 Starting
, 그리고 Running
으로 변경될 때까지 기다립니다.
6. Running
이후에 Status가 Load complete, replication ongoing
으로 변경되면 마이그레이션 작업이 성공적으로 진행되고 있는 것입니다.
7. OpenSearch Dashboards에 접속해서 마이그레이션된 데이터를 확인해보겠습니다. OpenSearch Dashboards에서 좌측 사이드바 Query Workbench를 클릭합니다.
8. Query Workbench 좌측의 인덱스 목록에서 저희가 마이그레이션한 songs
테이블이 인덱스로 생성되었는지 확인하고, SELECT * FROM songs
쿼리를 실행하여 데이터를 확인합니다.
9. 마이그레이션이 정상적으로 진행되지 않았다면, AWS의 CloudWatch
> Log groups
> dms-tasks-YourProjectName-dms
> dms-task-XXXXXX
Log events를 확인하여 에러 로그를 분석할 수 있습니다.
10. CDC 복제 테스트
마지막으로 DMS를 이용하여 CDC(Change Data Capture)를 통해 RDS의 데이터 변경 사항을 실시간으로 OpenSearch로 복제하는 테스트를 진행해보겠습니다. EC2 인스턴스의 MySQL 클라이언트에 접속해서 아래의 명령어를 순차적으로 입력합니다. (이전 포스팅 - MySQL 클라이언트 접속)
1. 데이터베이스 확인
SHOW DATABASES;
2. test
데이터베이스 선택
USE test;
3. songs
테이블 확인
SHOW TABLES;
4. songs
테이블의 데이터 확인
SELECT * FROM songs;
5. 위와 같이 10개의 데이터가 존재하는 것을 확인할 수 있습니다. 이제 songs
테이블에 새로운 데이터를 추가해보겠습니다.
INSERT INTO songs (title, artist, genre, duration, description) VALUES ('This is a NewSong', 'New Artist', 'New Genre', 100, '''This is a NewSong'' is the 11th new song added to the songs table');
6. OpenSearch Dashboards에서 CDC 복제가 정상적으로 진행되었는지 확인해보겠습니다. OpenSearch Dashboards에서 좌측 사이드바 Query Workbench에서 SELECT * FROM songs
쿼리를 실행합니다.
- 위와 같이
songs
인덱스에 새로운 도큐먼트가 추가되어 총 11개의 도큐먼트가 존재하는 것을 확인할 수 있으며,This is a NewSong
이라는 새로운 곡도 추가된 것을 확인할 수 있습니다.
다음 글: DMS를 사용한 RDS to OpenSearch CDC 복제 진행하기 (3) - API Gateway와 Lambda를 통해 OpenSearch API 호출하기