前面我們說了
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會在備份過程中一直保持同步阻塞和不修改數據。所以可以保證備份出來的版本跟時間戳的一致性。