IBMCloud Cloudant를 복제하는 방법

TL;DR



직장에서 사용한 IBMCloud에서 Cloudant를 정기적으로 데이터 마이그레이션하는 처리를 작성했을 때 빠진 이야기.
백업 테이블이나 데이터 보존 타이밍 등 일정한 타이밍으로 데이터 마이그레이션을 하고 싶은 경우에 행한다.

구현 환경



Windows 10
노드 12

전제



IBMCloud 계정이 있어야 합니다.

절차



1. Cloudant에 "_replicator"테이블을 만듭니다.
나는 여기에서 마이그레이션 소스, 마이그레이션 소스 DB가 있는데, 계속 「database not exists」라고 에러가 출력되어, 빠져 있었습니다.

2. 마이그레이션 대상 db를 만듭니다.
이후 이후의 테이블을 작성한다.


이 절차를 사용하면 동일한 cloudant 서비스 내에서도 다른 Cludant 서비스로 데이터를 마이그레이션 할 수 있습니다.
(다른 계정에 DB 복제를 한 적이 없기 때문에 누군가 시험을...)

3. 이하의 request를 던진다.
const request = require('request');
...

const body = {
url:`https://XXXXXX.bluemix.cloudantnosqldb.appdomain.cloud/_replicator`,
  json:{
    source:`https://XXXXXX.bluemix.cloudantnosqldb.appdomain.cloud/from_db`,
    target:`https://XXXXXX.bluemix.cloudantnosqldb.appdomain.cloud/to_db`,
    create_target:true
  }
}

request.post(body,() => {
  resolve("success");
})

4. "_replicator"테이블에 데이터가 들어 있는지 확인합니다.
이러한 데이터가 들어 있으면 복제 처리가 실시되고 있습니다.

목록의 상태가 "Complated"로 설정되어 있으면 DB 복제가 완료된 것입니다.


보충



이 프로그램을 작성하면 IBMCloud functions와 trigger를 결합하면,
정기 실행도 가능합니다.
(정기 실행시키는 방법에 관해서는, 언젠가 쓰고 싶다...)

끝에



이 절차는 user 및 password의 이전 인증 형식으로 마이그레이션을 수행했습니다.
새로운 IAM 인증 형식으로 데이터 마이그레이션에 대해 나중에 조사하고 싶습니다.

좋은 웹페이지 즐겨찾기