Tokyo Tyrant备份和恢复

Tokyo Tyrant备份和恢复



备份


1. 全量热备份


备份命令为:

tcrmgr copy -port 1978 localhost dpath.tch.xxxxx

(其中xxxxx为备份时间)

 

根据业务需求及数据库运行状态决定备份的频度,全量热备时数据库库会写锁定,读不受影响。全量备份需记录备份时间点以提供replication恢复时所用,时间记录点精确的微秒,可记录到备份文件名中,如backup.tch.1259474040630024。

 

示例备份脚本:

[ -n "$1" ] || { echo "input port number"; exit; }
[ -n "$2" ] || { echo "input backup dir"; exit; }
backup_date=`date +%s%N`
backup_date=`expr $backup_date / 1000`
tcrmgr copy -port ${1} localhost ${2}/backup_${1}.tch.${backup_date}
echo "back up finish! ${2}/backup_${1}.tch.${backup_date}"

 

2. 增量备份ulog


ttserver产生的ulog在"$basedir/ulog"目录,设置了ulimsiz后会按文件尺寸进行切割并按数据升序命名,可以根据备份的频度,按ulog文件最后修改时间,备份到ulog最大命名数字的前一个文件,同时也需记录备份时间,可将时间记录在打包备份的文件名中,如backup_ulog.1259474040630024.tar.gz, 和全量备份一样,精确到微秒。

 

注意:全量备份速度和服务器情况有关,基本接近直接copy速度。

 

恢复


1. 使用replication恢复


根据备份方案中数据库全量备份方法得到的备份库,如backup.tch.xxxxxx,

echo xxxxxx > "$basedir/rts" 写入备份时间点,即恢复时间点。

cp backup.tch.xxxxx database_name.tch


启动:

./ttservctl start

恢复的库会根据时间点去master库同步数据。

 

2. 使用日志增量恢复


先使用前一个全量备份的数据库文件作为基数据库,下线要整理的ttserver。

清空原来的日志,然后解压,再cp 备份的ulog文件 $basedir/ulog/,

echo xxxxxx > "$basedir/rts" 写入备份时间点(压缩文件名中包含),即恢复时间点。

单独启动ttserver : ttserver database_name.tch

从日志恢复:tcrmgr restore -port port -rcc localhost ulog

ctrl+c停掉ttserver,然后使用 ./ttservctl start 启动,master结构重新建立。


注意:日志增量恢复环节应避免受其他ttserver的服务器影响,如可以使用一个不使用的端口进行恢复,这样数据也不会影响到其他服务器,恢复后再用原来的启动脚本启动,形成原来的dual master结构。

 

备注

 

基于dual master的结构具有较高的可靠性,dual master其实就是实时的热备方案,所以在备份频度和广度上是否可以适当宽松一些?建议每天备份全量即可,增量的日志一直留在服务器上,但是日志的分割尺寸要根据业务和恢复的粒度来确定。

你可能感兴趣的:(备份,tokyo,Tyrant)