소개
개발 프로세스를 현대화하고 있나요? 고객에게 더 높은 품질과 더 빈번한 기능을 제공하기 위해 신속한 개발 접근 방식을 따르고 있나요? 이러한 프로세스의 일부로 두 데이터베이스를 모두 사용해야 하는 전환 기간 동안 여러 데이터베이스로 작업해야 하는 경우가 종종 있습니다. 데이터베이스 간에 데이터를 동기화할 수 있는 방법이 필요하며, 더 원활하게 동기화할수록 좋습니다. 다음과 함께 Couchbase 사용 글루싱크 가 그 목적에 부합합니다.
GlueSync를 사용하면 Couchbase를 통해 실시간으로 RDBMS(Microsoft SQL Server 및 Oracle)와 데이터를 복제할 수 있습니다.
이 글에서는 Docker를 사용하여 Couchbase, Microsoft SQL Server 및 GlueSync를 설정하고 구성하는 단계를 살펴보면서 둘 간의 데이터 동기화를 시연해 보겠습니다.
시작하기 전에
Docker
먼저, 이 튜토리얼에서는 Docker를 사용하며, Docker가 없는 경우 여기에서 자세한 정보를 찾을 수 있습니다. https://www.docker.com/. 아래 단계를 완료하려면 Docker를 설치해야 합니다.
글루싱크
다음으로 GlueSync에는 라이선스가 필요합니다. 이 튜토리얼을 완료하려면 GlueSync 팀의 라이선스가 필요합니다. 다음 주소로 이동하여 https://gluesync.com/plans/ 요금제에 대한 자세한 정보를 확인하고 https://gluesync.com/contact-sales/ 를 클릭하여 GlueSync 팀에 문의하세요.
상위 단계
카우치베이스 및 MSSQL 실행
카우치베이스
이 튜토리얼에서는 Couchbase 6.6.3을 사용하겠습니다. 다음 Docker 명령은 필요한 포트를 노출하여 Couchbase를 시작하고 실행합니다.
도커 실행 -d --이름 cb-663 -p 8091-8096:8091-8096 -p 11210-11211:11210-11211 couchbase:enterprise-6.6.3
MSSQL
MSSQL Docker 실행 명령의 경우 SA 비밀번호가 포함되어 있는 것을 확인하세요. 이를 업데이트하고 메모해 두면 나중에 사용할 수 있습니다.
docker run -d --name mssql -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=RandomMSSQLPass2!' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-CU10-ubuntu-20.04
컨테이너 확인
이제 두 개의 컨테이너, 즉 Couchbase와 MSSQL이 실행 중이어야 합니다. 이 컨테이너를 구성한 후 GlueSync 컨테이너를 시작하겠습니다.

GlueSync 및 MSSQL로 Couchbase 구성하기
Couchbase로 시작하여 기본 설치를 해보겠습니다.
새 클러스터 설정
위의 Docker 명령을 실행하면 Couchbase가 시작되고 포트가 노출되어 다음을 열 수 있습니다. 로 이동하여 카우치베이스 UI를 https://localhost:8091/ui/index.html.
다음을 선택합니다. 새 클러스터 설정 를 사용하여 하나의 노드로 클러스터를 설정합니다(프로덕션에는 권장하지 않지만 개발 및 튜토리얼을 수행하는 데는 효과적임).

새 클러스터 정보를 입력하고 다음: 약관 동의. 나중에 필요할 수 있으니 비밀번호를 메모해 두세요. 사용 중인 비밀번호 RandomCBPass2! 로 설정합니다.

이용약관에 동의하는 경우 해당 옵션을 선택한 후 다음을 클릭합니다. 기본값으로 마무리.
참고 GlueSync는 두 가지 Couchbase 기술인 동기화 게이트웨이와 이벤트 서비스를 사용하여 Couchbase와 함께 작동합니다. 이 튜토리얼에서는 Eventing 옵션을 사용합니다. 이벤트 기능은 기본값으로 마무리 를 선택합니다.
카우치베이스는 한 번의 설치로 모든 서비스를 활성화하거나 프로젝트의 필요에 따라 선택하여 사용자 지정할 수 있는 기능을 제공합니다. 이 튜토리얼에서는 편의를 위해 모든 서비스를 설치합니다. 자세히 알아보기 Couchbase 서비스 및 다차원 확장에 대한 정보.

대시보드로 리디렉션됩니다. 이 튜토리얼에서는 샘플 버킷의 데이터를 사용하겠습니다. 데이터를 설치하려면 샘플 버킷.
어떤 이유에서인지 표시되지 않는 경우 샘플 버킷 링크를 클릭한 후 대시보드의 설정 왼쪽 메뉴에서 UI의 오른쪽 상단을 보면 다음과 같은 메뉴 항목이 표시됩니다. 샘플 버킷를 클릭합니다.

맥주 샘플을 확인하고 샘플 데이터 로드.

로드될 때까지 몇 분 정도 기다린 다음 버킷 를 클릭합니다.
방금 로드한 맥주 샘플 버킷이 보일 것입니다.

문서를 확인해 보겠습니다. 문서를 보려면 문서 오른쪽 옆의 통계.
맥주 유형의 문서를 동기화하겠습니다. N1QL WHERE 상자에 필터(type="beer")를 입력하고 문서 검색 를 사용하여 문서를 가져올 수 있습니다. 이렇게 하면 문서를 보고 테스트하기가 조금 더 쉬워집니다.

카우치베이스 사용자 만들기
글루싱크 애플리케이션이 사용할 사용자를 만들겠습니다. 이는 튜토리얼용이며, 사용자를 관리할 때는 Couchbase 및 GlueSync 요구 사항과 함께 보안 관행을 따라야 합니다.
로 이동합니다. 보안 링크를 클릭한 다음 사용자 추가 를 클릭합니다.

아래와 같이 사용자 정보를 입력합니다. 사용자 이름은 cb-user 및 비밀번호 RandomCBPass2!이 정보는 나중에 사용할 수 있도록 보관하세요. 다음 사항을 확인하세요. 전체 관리자 을 클릭합니다. 입력이 완료되면 사용자 추가 버튼을 클릭합니다.

방금 만든 사용자가 표시될 것입니다.

GlueSync 메타데이터 버킷 추가하기
GlueSync는 Couchbase의 Eventing 서비스를 사용합니다. 이벤트에는 메타데이터 버킷이 필요하며 지금 생성하겠습니다. 자세한 정보 보기 를 클릭하고 메타데이터 버킷을 선택합니다.
다음으로 이동 버킷 왼쪽 메뉴에서 버킷 추가 를 클릭합니다.

메타데이터 이름을 입력하고 버킷 추가. 다른 옵션은 기본값을 사용하겠습니다.

이제 두 개의 버킷이 보일 것입니다.

MSSQL
위 단계에서 설치한 MSSQL을 구성하기 위해 SQL Server 관리 스튜디오를 사용하겠습니다. 관리 스튜디오를 설치해야 하는 경우 다음을 수행할 수 있습니다. 여기에서 찾기.
이전 단계에서 Docker 명령에 전달한 자격증명(이 경우 로그인)을 사용하여 로그인합니다: sa 및 비밀번호를 입력합니다: RandomMSSQLPass2!.

새 데이터베이스 만들기
Couchbase의 데이터를 로드할 새 데이터베이스를 만들겠습니다.

이 경우 저는 매우 창의적이기 때문에 cb를 클릭하고 확인을 선택합니다.

로그인 만들기
다음으로 MSSQL 로그인을 만듭니다. 로그인 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 로그인....

사용 중인 로그인 이름은 mssql-user 비밀번호는 RandomMSSQLUserPass2!.
기본 데이터베이스를 다음과 같이 설정합니다. cb를 사용하여 위에서 만든 데이터베이스를 만듭니다.
사용자를 만들 때는 보안 표준을 따라야 합니다. 이 도움말의 지침은 튜토리얼 목적으로만 제공되며 일부 옵션은 간단하게 설명하기 위해 선택했습니다.

다음으로 이동 사용자 매핑왼쪽 아래의 페이지 선택을 클릭하고 cb 아래 이 로그인에 매핑된 사용자 그리고 db_owner 아래 데이터베이스 역할 멤버십.

이제 설정이 완료되었으므로 해당 사용자로 로그인할 수 있는지 확인합니다. SA에서 로그아웃하고 새 사용자로 다시 로그인합니다.
테이블 만들기
Couchbase에서 동기화할 데이터에 대한 테이블을 만들어 보겠습니다. 테이블의 데이터베이스를 클릭한 다음 cb을 클릭한 다음 새 쿼리 창으로 이동합니다. 이 테이블의 테이블 필드는 Couchbase 맥주 샘플 문서의 속성과 일치합니다. 테이블을 생성하는 SQL은 아래와 같습니다.

테이블 생성 문을 실행합니다.
테이블 맥주 만들기
(
이름 varchar(200) not null 제약 조건 beer_pk 기본 키 비클러스터화,
abv numeric(5, 2) NOT NULL,
BREWERY_ID VARCHAR(MAX) NOT NULL,
범주 varchar(max),
설명 varchar(max) not null,
ibu int not null,
srm int not null,
스타일 varchar(max),
upc int not null,
UPDATE VARCHAR(MAX) NOT NULL
)
go
MSSQL에 대한 Couchbase용 GlueSync 구성 및 실행
GlueSync에는 두 가지 구성 요소가 있는데, 하나는 Couchbase에서 MSSQL로, 다른 하나는 MSSQL에서 Couchbase로 동기화하기 위한 구성 요소입니다. 이렇게 하면 Couchbase에서 MSSQL로 데이터를 동기화하도록 애플리케이션이 설정됩니다. 다른 방향으로 설정하는 것도 매우 유사한 설정입니다.
구성 폴더 만들기
GlueSync 구성 파일을 위한 폴더를 만듭니다. Docker 컨테이너를 시작할 때 이 파일을 공유할 것입니다.
mkdir c:\a\gluesync\config
Couchbase 및 MSSQL용 Docker 네트워크 IP 주소 가져오기
GlueSync를 구성하려면 Couchbase 및 MSSQL 컨테이너에 대한 Docker 네트워크 정보가 필요합니다.
컨테이너 ID를 가져옵니다.
C:\사용자\데이비드 엘리엇> docker 컨테이너 ls -a 컨테이너 ID 이미지 명령 생성된 상태 포트 이름 10b985792024 mcr.microsoft.com/mssql/server:2019-CU10-ubuntu-20.04 "/opt/mssql/bin/perm..." 34분 전 34분 상승 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp mssql d2df1bad1647 couchbase:enterprise-6.6.3 "/entrypoint.sh couc..." 40분 전 40분 상승 0.0.0.0:8091-8096->8091-8096/TCP, :::8091-8096->8091-8096/TCP, 11207/TCP, 0.0.0.0:11210-11211->11210-11211/TCP, :::11210-11211->11210-11211/TCP, 18091-18096/TCP cb-663
이제 Couchbase에서 Docker Inspect 명령을 사용하여 해당 ID를 사용하는 컨테이너의 IP 주소를 가져옵니다.
C:\사용자\데이비드 엘리엇> docker 검사 d2df1bad1647 | Select-String IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
MSSQL에서 Docker Inspect 명령을 실행합니다.
C:\사용자\데이비드 엘리엇> docker 검사 10b985792024 | Select-String IPAddress
"보조IP주소": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",
IP 주소는 다음과 같습니다:
- 카우치베이스 - 172.17.0.2
- mssql - 172.17.0.3
참고: 컨테이너를 중지했다가 다시 시작하면 IP 주소가 변경될 수 있으므로 구성이 여전히 올바른지 확인해야 합니다.
GlueSync 구성 파일 만들기
아래 정보를 특정 정보로 업데이트하고 위에서 만든 폴더의 config.json 파일(예: c:\a\gluesync\config\config.json)에 저장합니다.
{
"sourceHost": "172.17.0.2",
"sourcePort": "8091",
"sourceName": "beer-sample",
"sourceUsername": "cb-user",
"sourcePassword": "RandomCBPass2!",
"sourceEntities": {
"beer": {}
},
"sourceChangeRetention": 5,
"copySourceEntitiesAtStartup": true,
"targetHost": "172.17.0.3",
"targetPort": "1433",
"targetName": "cb",
"targetUsername": "mssql-user",
"targetPassword": "랜덤MSSQL유저패스2!",
"최대 항목 수 트랜잭션당": 100,
"최대 트랜잭션 횟수 반복당": 100,
"couchbase": {
"timeoutSeconds": 60,
"indexReplicaCount": 0,
"eventing": {
"baseUrl": "https://172.17.0.2",
"메타데이터버킷이름": "메타데이터"
}
}
}
GlueSync 자격 증명을 가져와서 Docker에서 GlueSync 이미지 가져오기
위의 시작하기 전에 섹션에서 Docker 레지스트리에 대한 GlueSync 라이선스 정보를 확인하고 제품을 다운로드하세요.
해당 정보를 확보했으면 아래 단계에 따라 GlueSync를 설치합니다.
자격 증명이 이미 저장되어 있을 수 있으므로 로그아웃하는 것이 좋습니다. 자격 증명 문제가 발생하는 경우 이 문제가 원인일 수 있습니다.
C:\사용자\데이비드 엘리엇> 도커 로그아웃 registry.gitlab.com registry.gitlab.com에 대한 로그인 자격 증명 제거하기
레지스트리에 로그인 - 일반적으로 사용하는 레지스트리와 다른 레지스트리일 수 있으므로 해당 값을 다시 확인합니다.
C:\사용자\데이비드 엘리엇> 도커 로그인 registry.gitlab.com 사용자 이름: xxxusernamexxx 비밀번호 로그인 성공
이미지를 당깁니다.
C:\사용자\데이비드 엘리엇> 도커 풀 registry.gitlab.com/molo17srl/products/gluesync/nosql-to-sql-kotlin/couchbase-to-mssql:latest 최신 molo17srl/products/gluesync/nosql-to-sql-kotlin/couchbase-to-mssql에서 끌어오기 Digest: sha256:55e476fa05853c9dc5dfc1263cd5d2a5d3e1ea98f69b4d15d8edb83b91dcb142 상태 registry.gitlab.com/molo17srl/products/gluesync/nosql-to-sql-kotlin/couchbase-to-mssql:최신에 대한 최신 이미지를 다운로드했습니다. registry.gitlab.com/molo17srl/products/gluesync/nosql-to-sql-kotlin/couchbase-to-mssql:최신 C:\사용자\데이비드 엘리엇>
다시 로그아웃하는 것이 좋습니다(로그아웃하지 않았을 때 다음에 명령을 실행할 때 오류가 발생한 적이 있습니다).
C:\사용자\데이비드 엘리엇> 도커 로그아웃 registry.gitlab.com registry.gitlab.com에 대한 로그인 자격 증명 제거하기
GlueSync 컨테이너/애플리케이션 시작하기
아래 Docker 명령에서 구성 파일의 경로를 컴퓨터의 경로와 일치하도록 업데이트합니다.
docker run -d --name gluesync-cb-to-mssql -v c:/a/gluesync/config:/opt/app/config registry.gitlab.com/molo17srl/products/gluesync/nosql-to-sql-kotlin/couchbase-to-mssql:1.2.3
Docker에서 실행 중인 컨테이너가 3개 있어야 합니다.

실행되지 않는다면 컨테이너 로그에서 메시지를 확인하세요. 실수로 구성 파일을 잘못된 폴더에 넣어서 GlueSync가 시작되지 않은 경우, 로그를 통해 무슨 일이 있었는지 알 수 있습니다.
마술 보기
MSSQL로 이동하여 테이블을 쿼리하면 우리가 만든 테이블에 Couchbase 버킷의 데이터가 표시됩니다. GlueSync가 시작되면 Couchbase에서 MSSQL로 데이터를 동기화했습니다.

데이터를 수정하고 데이터베이스 전체에서 동기화된 변경 사항을 확인할 수 있습니다. 맥주 샘플 문서로 이동하여 변경을 수행합니다. 여기서는 두 개의 문서를 업데이트했습니다. Couchbase UI 아래에서 Docker 출력 로그를 볼 수 있습니다. GlueSync가 두 가지 변경 사항을 감지했습니다.

MSSQL로 전환하면 MSSQL에서도 업데이트를 확인할 수 있습니다.

결론
특히 현대화 작업을 할 때 여러 데이터베이스로 작업해야 하는 경우가 많습니다. 단계적 릴리스가 있거나 오래된 관계형 데이터베이스의 기존 데이터를 Couchbase로 가져와야 할 수도 있습니다. 여기에는 사용자 지정 코드와 테스트가 포함되거나 프로세스를 보다 원활하게 만들어주는 GlueSync와 같은 제품을 고려할 수 있습니다.
결제 글루싱크 에서 제품 및 기능에 대한 자세한 정보를 확인하세요.