0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IBMCloudのCloudantをレプリケーションする方法

Last updated at Posted at 2020-07-05

TL;DR

仕事で使ったIBMCloudで、Cloudantを定期的にデータ移行する処理を書いたときに、ハマった話。
バックアップ用テーブルやデータ保存タイミングなど、一定のタイミングでデータ移行をしたい場合に行う。

実施環境

Windows 10
node 12

前提

IBMCloudのアカウントを持っていること。

手順

1. Cloudantに「_replicator」テーブルを作成する。
 私はここで移行元、移行元DBがあるのに、ずっと「database not exists」とエラーが出力されて、ハマっていました。

2. 移行先のdbを作成する。
 以降先のテーブルを作成する。
create_db.png

 この手順なら、同一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」テーブルにデータが入っていることを確認する。
こんなデータが入っていれば、レプリケーション処理は実施されています。

一覧のStateが「Complated」になっていれば、DBの複製は完了しています。
replicate_complete.png

補足

このプログラムが書ければ、IBMCloud のfunctionsとtriggerを組み合わせれば、
定期実行も可能です。
(定期実行させる方法に関しては、いつか書きたい。。。)

終わりに

この手順は、userとpasswordの古い認証形式で、移行を行いました。
新しいIAM認証形式でのデータ移行について、後日調べてみたいと思っております。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?