管理快照
Nebula Graph提供快照(snapshot)功能,用于保存集群当前时间点的数据状态,当出现数据丢失或误操作时,可以通过快照恢复数据。
前提条件
Nebula Graph的身份认证功能默认是关闭的,此时任何用户都能使用快照功能。
如果身份认证开启,仅God角色用户可以使用快照功能。关于角色说明,请参见内置角色权限。
注意事项
系统结构发生变化后,建议立刻创建快照,例如在
add host
、drop host
、create space
、drop space
、balance
等操作之后。不支持自动回收创建失败的快照垃圾文件,需要手动删除。
不支持指定快照保存路径,默认路径为
/usr/local/nebula/data
。
快照路径
Nebula Graph创建的快照以目录的形式存储,例如SNAPSHOT_2021_03_09_08_43_12
,后缀2021_03_09_08_43_12
根据创建时间(UTC)自动生成。
创建快照时,快照目录会自动在leader Meta服务器和所有Storage服务器的目录checkpoints
内创建。
为了快速定位快照所在路径,可以使用Linux命令find
。例如:
$ find |grep 'SNAPSHOT_2021_03_09_08_43_12'
./data/meta2/nebula/0/checkpoints/SNAPSHOT_2021_03_09_08_43_12
./data/meta2/nebula/0/checkpoints/SNAPSHOT_2021_03_09_08_43_12/data
./data/meta2/nebula/0/checkpoints/SNAPSHOT_2021_03_09_08_43_12/data/000081.sst
...
创建快照
命令CREATE SNAPSHOT
可以创建集群当前时间点的快照。只支持创建所有图空间的快照,不支持创建指定图空间的快照。
Note
如果快照创建失败,请删除快照重新创建。
nebula> CREATE SNAPSHOT;
查看快照
命令SHOW SNAPSHOTS
可以查看集群中的所有快照。
nebula> SHOW SNAPSHOTS;
+--------------------------------+---------+------------------+
| Name | Status | Hosts |
+--------------------------------+---------+------------------+
| "SNAPSHOT_2021_03_09_08_43_12" | "VALID" | "127.0.0.1:9779" |
| "SNAPSHOT_2021_03_09_09_10_52" | "VALID" | "127.0.0.1:9779" |
+--------------------------------+---------+------------------+
参数说明如下:
参数 | 说明 |
---|---|
Name | 快照名称,前缀为SNAPSHOT ,表示该文件为快照文件,后缀为快照创建的时间点(UTC时间)。 |
Status | 快照状态。VALID 表示快照有效,INVALID 表示快照无效。 |
Hosts | 创建快照时所有Storage服务器的IP地址和端口。 |
删除快照
命令DROP SNAPSHOT
可以删除指定的快照,语法为:
DROP SNAPSHOT <snapshot_name>;
示例如下:
nebula> DROP SNAPSHOT SNAPSHOT_2021_03_09_08_43_12;
nebula> SHOW SNAPSHOTS;
+--------------------------------+---------+------------------+
| Name | Status | Hosts |
+--------------------------------+---------+------------------+
| "SNAPSHOT_2021_03_09_09_10_52" | "VALID" | "127.0.0.1:9779" |
+--------------------------------+---------+------------------+
恢复快照
当前未提供恢复快照命令,需要手动拷贝快照文件到对应的文件夹内,也可以通过shell脚本进行操作。实现逻辑如下:
创建快照后,会在leader Meta服务器和所有Storage服务器的安装目录内生成
checkpoints
目录,保存创建的快照。以本文为例,当存在2个图空间时,创建的快照分别保存在/usr/local/nebula/data/meta/nebula/0/checkpoints
、/usr/local/nebula/data/storage/nebula/3/checkpoints
和/usr/local/nebula/data/storage/nebula/4/checkpoints
中。$ ls /usr/local/nebula/data/meta/nebula/0/checkpoints/
SNAPSHOT_2021_03_09_09_10_52
$ ls /usr/local/nebula/data/storage/nebula/3/checkpoints/
SNAPSHOT_2021_03_09_09_10_52
$ ls /usr/local/nebula/data/storage/nebula/4/checkpoints/
SNAPSHOT_2021_03_09_09_10_52
当数据丢失需要通过快照恢复时,用户可以找到合适的时间点快照,将内部的文件夹
data
和wal
分别拷贝到各自的上级目录(和checkpoints
平级),覆盖之前的data
和wal
,然后重启集群即可。Caution
需要同时覆盖所有Meta节点的data和wal目录,因为存在重启集群后发生Meta重新选举leader的情况,如果不覆盖所有Meta节点,新的leader使用的还是最新的Meta数据,导致恢复失败。
最后更新: November 3, 2021