はじめに
IBM Cloudantのバックアップ・ファイルをCouchDBでリストアします。
CouchDBの環境は、Podmanを使ってローカル(Mac)で構築します。
事前準備
- IBM Cloudantのバックアップ・ファイルを作成、保存
参考:IBM Cloudant バックアップの作成 - Podmanのインストールとセットアップ、VMの起動
参考:Podman Desktop のインストール(for Mac)
参考:Podmanを始めたい
作業手順
STEP 1. CouchDBの環境構築
STEP 2. データベースの作成とリストア
IBM CloudantとCouchDB
IBM Cloudant for IBM Cloudは、Apache CouchDBを基盤とするフルマネージドのクラウドDBサービスです。CloudantとCouchDBでは、共通のツール(CouchBackup)を使用してバックアップの作成とリストアができます。
参考:Apache CouchDB と IBM Cloudant の比較
STEP 1. CouchDBの環境構築
参考:Podmanを始めたい>コマンドを試してみる
PodmanのVMの初回起動と初期化、再起動まで完了しました。
参考:CouchDB Docker Official Image
STEP 1 はCouchDBをコンテナで起動します。
dockerhubを参照し、コマンド名 "docker" を "podman" に置き換えて実行していきます。
CouchDBのイメージを取得
podman pull couchdb
CouchDBのインスタンスを起動
podman run \
--detach \
--name my-couchdb \
-e COUCHDB_USER=admin \
-e COUCHDB_PASSWORD=password \
--publish 5984:5984 \
apache/couchdb:latest
--detach コンテナをデタッチモードで起動
--name my-couchdb コンテナ名
-e COUCHDB_USER=admin 管理者ユーザー(*必須)
-e COUCHDB_PASSWORD=password パスワード(*必須)
--publish 5984:5984 ポートを外部公開する
ステータス確認
podman ps
コマンドで作成中および実行中のコンテナを一覧表示します。
コンテナ"my-couchdb"が実行中になったことを確認できました。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b333a38f5783 docker.io/apache/couchdb:latest /opt/couchdb/bin/... 6 seconds ago Up 6 seconds 0.0.0.0:5984->5984/tcp, 4369/tcp, 5984/tcp, 9100/tcp my-couchdb
(参考)ブラウザからCouchDBのダッシュボードにアクセスできます。
http://localhost:5984/_utils
STEP 2. データベースの作成とリストア
参考:IBM Cloudant バックアップの作成
リストアのターゲットとなるデータベースを作成し、CouchBackupツールのコマンドでバックアップ・ファイルのリストアを実行します。
CouchDB動作確認
ローカルのCouchDBインスタンスへの接続を確認します。
curl localhost:5984
{"couchdb":"Welcome","version":"3.3.3","git_sha":"40afbcfc7","uuid":"5034b96da22199b1003e85590a541843","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}
(未インストールの場合)ローカルにCouchBackupをインストール
npm install -g @cloudant/couchbackup
Node.jsの導入が前提です。参考:Node.jsの導入方法
CouchBackup は IBM CloudantおよびCouchDBのデータベースをテキストファイルにバックアップし、リストアするためのツールです。
空のデータベースを新規作成
curl "http://admin:password@localhost:5984/cloudant_backup" -X PUT
{"ok":true}
データベース"cloudant_backup"が作成できたことを確認します。
curl "http://admin:password@localhost:5984/_all_dbs"
["cloudant_backup"]
リストアの実行には、ターゲットのDBが完全に空である必要があります。
一度書き込みを行ったDBは、ドキュメントを完全に削除してもリストアのターゲットとして使用することはできません。
リストアコマンドを実行
cat cloudant_backup.txt | couchrestore --db cloudant_backup --url http://admin:password@localhost:5984
couchbackup:restore:batch Restored batch ID: 0 Total document revisions restored: 443 Time: 0.163 +0ms
couchbackup:restore finished { total: 443 } +0ms
No such file or directory
の場合はバックアップ・ファイルの絶対パスを記述します。
コマンドにユーザー名とパスワードを含めないと認証エラーになる場合があります。
リストアの完了を確認
データベースの詳細を取得して、データが追加されたことを確認しました。
curl -X GET http://admin:password@localhost:5984/cloudant_backup
ブラウザでもドキュメントの追加を確認できました。 http://localhost:5984/_utils
まとめ
IBM Cloudantのバックアップ・ファイルをCouchDBでリストアすることができました。
使い終わった環境はコンテナを停止するか、VMごと削除しましょう。