kyototycoon ホットバックアップ テスト

バックアップ用のシェルスクリプトの準備

/ktbin/dbbackupを以下の内容で作成、実行権限を与える

#! /bin/sh
srcfile="$1"
destfile="$1.$2"
cp -f "$srcfile" "$destfile"

ktserver起動

/ktbinにpathを通してktserverを起動 -cmd オプションでパスが通るらしい

ktserver -cmd /ktbin -pid ktserver.pid test.kch &

ホットバックアップ&リカバリテスト

テストデータをいれてホットバックアップしてみる

ktremotemgr set key1 value1
ktremotemgr sync -cmd dbbackup

実行するとtest.kctと同じディレクトリにtest.kch.01314275386043000000というファイルが生成された
復旧できるか確認するために現状のtest.kctに新規にデータを追加した後バックアップしたファイルで上げ直してロールバックするか確認

ktremotemgr set key2 value2   
kill -TERM `cat ktserver.pid`
mv test.kch.01314275386043000000 test2.kct ※ 拡張子でDBの構造が決まるのでリネームしとかないと上げ直せない
ktserver -cmd /ktbin -pid ktserver.pid test2.kch &
ktremotemgr get key1 -> value1
ktremotemgr get key2 -> ktremotemgr: DB::get failed: :1978: 3: logical inconsistency: DB: 7: no record: no record

ということで復旧できてそう。