Tokyo
Tyrant(TTServer)系列-備份恢復和增加從庫
TTServer在使用中它非常高效和可靠,那麼如果我們的服務運行一段時間後,需要增加一個從庫(ttserver)來分擔壓力或者用於負載均衡和HA,因爲是線上系統,那麼就不應該停機,那麼我們應該怎麼對數據進行備份和拷貝,然後啓動一個slave從庫呢?
1.如何備份和恢復
登錄到ttserver服務器,執行如下命令
]# tcrmgr copy -port 11211 localhost /data/backup.tch
localhost :ttserver主機名
/data/backup.tch 備份文件保存的路徑,請注意,這裏指ttserver所在機器的路徑。
同樣,也可以備份遠程機器,
]# tcrmgr copy -port 11211 remotehost /data/backup.tch
備份文件將保存在remotehost的/data/backup.tch
接下來恢復數據就比較簡單,直接替換掉原有ttserver的數據文件,啓動就可以了。
這種方式適用於定期的數據備份,在出現災難故障時可以恢復到某一個時間的數據。不適合用來增加從庫時需要的數據庫文件。
2.如何不停機增加從庫
從庫需要進行同步,那麼就需要有個文件的時間版本,防止數據衝突。
首先我們建立一個一個如下的腳本文件,存爲"backup.sh",並賦予執行權限(chmod 755 backup.sh)。比如存在:
/data/backup/路徑下。
srcpath="$1"
destpath="$1.$2"
rm -f "$destpath"
cp -f "$srcpath" "$destpath"
materthost:主庫主機名,請注意:backup.sh存放的路徑是在materthost機器上。
'@/data/backup/backup.sh' :如果tcrmgr copy命令中,參數以@開始,那麼後面的字符串作爲命令行執行。
執行完成後,我們進入ttserver的數據目錄,執行ls -lh會發現類似下面的文件名,
請確認產生casket.tch.xxxxx類似的文件名,xxxxx代表時間戳。
接下來在從庫salve上以我們備份的文件來運行ttserver,把時間錯寫入到一個時間戳文件ttserver.rts。
]$ cp casket.tch.xxxxx casket.tch
]$ echo xxxxx >ttserver.rts
]$ mkdir ulog
]$ ttserver -mhost masterhost -mport mport -port 11211 -ulog ulog -sid 2 -rts ttserver.rts casket.tch
運行後,ttserver將會以此時間戳進行同步。
masterhost :主庫主機名
mport : 主庫端口號
到此我們就完成了一個salve從庫ttserver的增加。
3.小結
推薦備份也使用2中用到的方式,上面帶上了時間戳,可以精確的知道數據的版本時間。
另外請注意:在使用此方法進行備份的時候,ttserver會在備份過程中一直保持同步阻塞和不修改數據。所以可以保證備份出來的版本跟時間戳的一致性。