Tokyo Tyrant - part 1. (備份/還原)

 Tokyo Tyrant 是一個為底層資料庫 (Tokyo Cabinet) 所提供的高並發網路接口。

目前在許多網路相關的場景都可以看到它被廣泛地應用。

本文將簡介 Tokyo Tyrant 備份與還原的功能。


Backup (備份)


figure 1.

接下來的例子示範了如何備份一個 ttserver,與如何從先前備份的資料庫來還原 ttserver,如圖一所示。

 - 首先,啟動一個 ttserver
ttserver /tmp/ex1.tch

 - 開啟另外一個終端,並寫入一些資料
tcrmgr put localhost "foo" "bar"

 - 檢查資料是否寫入成功
tcrmgr get localhost "foo"

 - 備份資料庫
tcrmgr copy localhost /tmp/backup.tch

 - 接著模擬 ttserver crash,在第一個終端按下ctrl-c

 - 模擬資料庫檔案毀壞

rm /tmp/ex1.tch

 - 從備份資料庫檔案還原 ttserver,只需要拷貝資料庫檔案並重啟 ttserver
cp /tmp/backup.tch /tmp/ex1.tch
ttserver /tmp/ex1.tch

 - 檢查資料是否已還原
tcrmgr get localhost "foo"


定期地執行備份動作可以避免資料遺失(每天一次或數分鐘一次,取決於寫入操作有多頻繁)。但是我們仍然會失去介於上次備份與下次備份之間的所有修改操作。Tokyo Tyrant 也提供了另外的方法來還原這些修改操作。

Restore (還原)


figure 2.

接下來的例子示範了如何從 update log 來還原對資料庫的修改動作,如圖二所示。

 - 建立一個資料夾以存放 update log
mkdir /tmp/ulog

 - 啟動一個 ttserver 並開啟 update log 功能
ttserver -ulog /tmp/ulog /tmp/ex2.tch

 - 開啟另外一個終端,並寫入一些資料
tcrmgr put localhost "foo2" "bar2"

 - 檢查資料是否寫入成功
tcrmgr get localhost "foo2"

 - 接著模擬 ttserver crash,在第一個終端按下ctrl-c

 - 模擬資料庫檔案毀壞
rm /tmp/ex2.tch

 - 除了從備份資料庫檔案還原,我們還可以藉由重新執行紀錄在 update log 中的修改操作來還原資料庫

 - 如果需要的話,可以先將 update log 備份到別處
mv /tmp/ulog /tmp/ulog-back

 - 重新啟動 ttserver
ttserver /tmp/ex2.tch

 - 從 update log 還原
tcrmgr restore localhost /tmp/ulog-back

 - 檢查資料是否已還原
tcrmgr get localhost "foo2"