分布式图数据库 Nebula Graph 中的集群快照实践

  • 时间:
  • 浏览:0
  • 来源:幸运飞艇_幸运飞艇官方

在创建过程中不可能 会创建失败,当前版本不支持创建失败的垃圾回收的自动功能,后续将计划在 metaServer 中开发 cluster checker 的功能,将通过异步多多线程 检查集群清况 ,并自动回收 snapshot 创建失败的垃圾文件。

Create snapshot  由 client api  或 console  触发, graph server  对 create snapshot  的 AST 进行解析,如果 通过 meta client  将创建请求发送到 meta server 。 meta server  接到请求后,首先会获取所有的 active host ,并创建 adminClient  所需的 request 。通过 adminClient  将创建请求发送到每个 StorageEngine ,StorageEngine 收到 create 请求后,会遍历指定 space 的全版 StorageEngine,并创建 checkpoint ,如果 对 StorageEngine 中的全版 partition  的 wal 做 hardlink。在创建 checkpoint 和 wal hardlink 时,不可能 不可能 提前向所有 leader partition 发送了 write blocking 请求,很多很多此时数据库是只读清况 的。

当前版本不支持对指定的 space 做 snapshot,当执行 CREATE SNAPSHOT 后,将对集群中的所有 space 创建快照。

CREATE SNAPSHOT 语法:

以下为另1个 小示例:

不可能 snapshot 的名称是由系统的 timestamp 自动生成,很多很多不不担心 snapshot 的重名间题。不可能 创建了不不要的 snapshot,需要通过 drop snapshot 命令删除已创建的 snapshot。

最后,附上 Nebula Graph GitHub 地址:https://github.com/vesoft-inc/nebula 不可能 你在使用 Nebula Graph 过程中遇到任何间题,欢迎 GitHub 联系人们都 不可能 加入微信交流群,请联系微信号:NebulaGraphbot 

从上 SNAPSHOT_2019_12_04_10_54_36  可见 snapshot 名同 timestamp 有关。

DROP SNAPSHOT 即删除指定名称的 snapshot,需要通过 SHOW SNAPSHOTS 命令获取 snapshot 的名称,DROP SNAPSHOT 既需要删除有效的 snapshot,也需要删除创建失败的 snapshot。

当前版本不可能 snapshot 创建失败,需要通过 DROP SNAPSHOT 命令清除无效的 snapshot。

图数据库 Nebula Graph 在生产环境中将拥有庞大的数据量和高频率的业务补救,在实际的运行中将不可补救的指在人为的、硬件或业务补救错误的间题,或多或少严重错误将导致 集群无法正常运行或集群中的数据失效。当集群指在无法启动或数据失效的清况 时,重新搭建集群并重新插进数据都将是另1个 繁琐并耗时的工程。针对此间题,Nebula Graph 提供了集群 snapshot 的创建功能。

SHOW SNAPSHOTS 可查看集群中所有的 snapshot,需要通过 SHOW SNAPSHOTS 命令查看其清况 (VALID 或 INVALID)、名称、和创建 snapshot 时所有 storage Server 的 ip 地址。

语法:

Snapshot 功能需要预先提供集群在某个时间点 snapshot 的创建功能,以备指在灾难性间题时用历史 snapshot 便捷地将集群恢复到另1个 可用清况 。

CREATE SNAPSHOT  即对整个集群创建当前时间点的快照,snapshot 名称由 meta server 的 timestamp 组成

以下为笔者创建 3 个 snapshot 的例子:

笔者删除了 5.1 成功创建的 snapshot SNAPSHOT_2019_12_04_10_54_36 ,并用SHOW SNAPSHOTS 命令查看现有的 snapshot。

语法:

本文主要会用到以下术语:

人们都 用 5.3 提及的 SHOW SNAPSHOTS 命令看下现在有的快照