IBMCloudのCloudantをレプリケーションする方法
TL;DR
仕事で使ったIBMCloudで、Cloudantを定期的にデータ移行する処理を書いたときに、ハマった話。
バックアップ用テーブルやデータ保存タイミングなど、一定のタイミングでデータ移行をしたい場合に行う。
実施環境
Windows 10
node 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」テーブルにデータが入っていることを確認する。
こんなデータが入っていれば、レプリケーション処理は実施されています。
一覧のStateが「Complated」になっていれば、DBの複製は完了しています。
補足
このプログラムが書ければ、IBMCloud のfunctionsとtriggerを組み合わせれば、
定期実行も可能です。
(定期実行させる方法に関しては、いつか書きたい。。。)
終わりに
この手順は、userとpasswordの古い認証形式で、移行を行いました。
新しいIAM認証形式でのデータ移行について、後日調べてみたいと思っております。
Author And Source
この問題について(IBMCloudのCloudantをレプリケーションする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/namatya/items/58c009e44b07f792cb05著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .