ssdb集群+keepalived搭建实战-5.备份还原

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.导入

将备份脚本导入数据库:

扫描二维码关注公众号,回复: 10741834 查看本文章
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)

完全恢复到备份状态

发布了136 篇原创文章 · 获赞 58 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/sunbocong/article/details/94435280