ssdb集群+keepalived搭建实战-5.备份还原
环境
操作系统:CentOS Linux release 7.6.1810 (Core)
ssdb:1.9.7
keepalived:keepalived-2.0.16
IP:
主: 10.11.100.87
从: 10.11.100.88
vip:10.11.100.89
备份还原
参考:备份 SSDB 数据(导出/导入)
ssdb官方提供了2种备份方案:export和ssdb-dump
export备份
export备份是使用自带的ssdb-cli工具连接到ssdb服务器,再执行备份工作,可按照key区间筛选需要导出的内容:
1.创造数据
[root@localhost ssdb]# ./ssdb-cli -h 10.11.100.87 -p 8888
ssdb (cli) - ssdb command line tool.
Copyright (c) 2012-2016 ssdb.io
'h' or 'help' for help, 'q' to quit.
ssdb-server 1.9.7
ssdb 10.11.100.87:8888> set a 1
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set b 2
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set c 3
ok
(0.002 sec)
ssdb 10.11.100.87:8888> q
bye.
2.执行备份
直接执行备份脚本
ssdb 10.11.100.87:8888> export backup.ssdb
100%
done.
查看生成的文件:
[root@localhost ssdb]# ls
api deps ssdb_cli ssdb.conf ssdb-server var_slave
backup.ssdb log.txt ssdb-cli ssdb-dump ssdb_slave.conf
_cpy_ ssdb-bench ssdb-cli.cpy ssdb-repair var
[root@localhost ssdb]# cat backup.ssdb
set a 1
set b 2
set c 3
原来export语句就是将数据通过set语句保存下来。
另外如果需要按key区间导出数据库需要使用 -i 选项:
ssdb 127.0.0.1:8888> export -i backup.ssdb
input KV range[start, end]:
start(inclusive, default none): a
end(inclusive, default none): z
input HASH range:
start(inclusive, default none):
end(inclusive, default none):
input ZSET range:
start(inclusive, default none):
end(inclusive, default none):
input QUEUE range:
start(inclusive, default none):
end(inclusive, default none):
命令 export -i backup.ssdb 将导出区间 [a, z] 内的 KV, 所有的 HASH, ZSET, QUEUE.
3.数据修改
做数据修改,删除a,添加d:
[root@localhost ssdb]# ./ssdb-cli -h 10.11.100.87 -p 8888
ssdb (cli) - ssdb command line tool.
Copyright (c) 2012-2016 ssdb.io
'h' or 'help' for help, 'q' to quit.
ssdb-server 1.9.7
ssdb 10.11.100.87:8888> get a
1
(0.001 sec)
ssdb 10.11.100.87:8888> del a
ok
(0.002 sec)
ssdb 10.11.100.87:8888> set d 4
ok
(0.001 sec)
4.导入
将备份脚本导入数据库:
ssdb 10.11.100.87:8888> import backup.ssdb
33%
66%
100%
done.
5.验证
验证状态:
ssdb 10.11.100.87:8888> get a
1
(0.001 sec)
ssdb 10.11.100.87:8888> get d
4
(0.001 sec)
之前删除的a已经恢复,但是备份后添加的d还存在。。。
说明这种export-import命令只会在备份时将数据转化为set语句,在恢复时相当于执行set语句,这样的话,备份后新增的数据不会被删除。
如果要完全恢复成备份时的状态,需要先将数据库完全清空。
ssdb-dump备份
ssdb数据库在安装完成后会自带ssdb-dump命令,存放在tools目录下,用法:
./tools/ssdb-dump ip port output_folder
选项:
- ip - ssdb 服务器监听的 IP 地址
- port - ssdb 服务器监听的端口号
- output_folder - 将要创建备份数据的本地目录
示例:
./tools/ssdb-dump 127.0.0.1 8888 ./output_folder
目录 output_folder 必须不存在, 因为 ssdb-dump 会创建这个目录. 导出之后, 这个目录里将有两个子目录, data 目录里包含着数据, 还有一个空的 meta 目录.
1.创造数据
同样生成初始数据:
[root@localhost ssdb]# ./ssdb-cli -h 10.11.100.87 -p 8888
ssdb (cli) - ssdb command line tool.
Copyright (c) 2012-2016 ssdb.io
'h' or 'help' for help, 'q' to quit.
ssdb-server 1.9.7
ssdb 10.11.100.87:8888> set a 1
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set b 2
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set c 3
ok
(0.001 sec)
2.执行备份
导出:
[root@localhost ssdb]# ./ssdb-dump 10.11.100.87 8888 ./backup.ssdb
ssdb-dump - SSDB backup command
Copyright (c) 2012-2015 ssdb.io
recv begin...
received 1 entry(s)
received 3 entry(s)
recv end
total dumped 3 entry(s)
Compactions
Level Files Size(MB) Time(sec) Read(MB) Write(MB)
--------------------------------------------------
compacting data...
Compactions
Level Files Size(MB) Time(sec) Read(MB) Write(MB)
--------------------------------------------------
2 1 0 0 0 0
backup has been made to folder: ./backup.ssdb
生成了一个backup.ssdb文件夹,data目录包含数据,meta目录为空目录
[root@localhost ssdb]# cd backup.ssdb/
[root@localhost backup.ssdb]# ls
data meta
[root@localhost backup.ssdb]# ls data/
000004.log 000005.ldb CURRENT LOCK LOG MANIFEST-000002
[root@localhost backup.ssdb]# ls meta/
3.数据修改
做数据修改,删除a,新增d:
ssdb 10.11.100.87:8888> del a
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set d 4
ok
(0.001 sec)
4.导入
替换work_dir,并重启服务:
[root@localhost ssdb]# ./ssdb-server ssdb.conf -s stop
ssdb-server 1.9.7
Copyright (c) 2012-2015 ssdb.io
[root@localhost ssdb]# mv var var.bak
[root@localhost ssdb]# mv backup.ssdb var
[root@localhost ssdb]# ./ssdb-server -d ssdb.conf
ssdb-server 1.9.7
Copyright (c) 2012-2015 ssdb.io
5.验证
ssdb 10.11.100.87:8888> get a
1
(0.002 sec)
ssdb 10.11.100.87:8888> get d
not_found
(0.002 sec)
完全恢复到备份状态