kyototycoon ホットバックアップ + ulog 適用テスト

ulogを有効にして起動して値を入れる

kyoto tycoonはMySQLみたいにデータの更新ログをulogというファイルに吐き出すらしいので、ホットバックアップした最新のファイルで起動 + ulogの適用で最新状態までデータを戻す事ができる模様。ということでulogを出力するようにしてホットバックアップしてulogを適用してみる。

ktserver -pid ktserver.pid -ulog ulog -sid 1 -cmd /ktbin test.kct & ※ -ulog dir でulog出力先のディレクトリ指定
ktremotemgr set key1 value1
ktremotemgr sync -cmd dbbackup
ktremotemgr set key2 value2
kill -TERM `cat ktserver.pid`

test.kct.01314340134863000000というファイルができた。test.kct.01314340134863000000にはkey2の値は存在していないはずなのでulog適用後key2にvalue2が入ってればOK

バックアップしたファイルで起動してulogを適用する

バックアップファイルで起動して状態を確認

rm test.kct
cp test.kct.01314340134863000000 test.kct
ktserver -pid ktserver.pid -ulog ulog -sid 1 -cmd /ktbin test.kct &
ktremotemgr get key1 -> value1
ktremotemgr get key2 -> DB::get failed: :1978: 3: logical inconsistency: DB: 7: no record: no record

ulogを適用して状態を確認

kill -TERM `cat ktserver.pid` ※ プロセスを上げた状態ではulogは適用できないっぽい
kttimedmgr recover -ts 01314340134863000000 test.kct ulog ※ -tsの値はバックアップしたファイルについてる数字
ktserver -pid ktserver.pid -ulog ulog -sid 1 -cmd /ktbin test.kct &
ktremotemgr get key1 -> value1
ktremotemgr get key2 -> value2

いけてるみたい。