如何将Memgraph数据持久化到本地硬盘?

Ton*_*ony 6 memgraphdb

我使用以下命令在 Windows 11 WSL 上运行Memgraph :

docker run -it -p 7687:7687 -p 3000:3000 -e MEMGRAPH="--bolt-port=7687" -v mg_lib:/mnt/c/temp/memgraph/lib -v mg_log:/mnt/c/temp/memgraph/log  -v mg_etc:/mnt/c/temp/memgraph/etc memgraph
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个节点,但我检查了这些文件夹仍然是空的。

如何将Memgraph数据持久化到本地硬盘?

小智 6

Memgraph 使用两种机制来确保数据持久性:

  • 预写日志 (WAL) 和
  • 定期快照。

在 Memgraph 的整个运行期间定期拍摄快照。当触发快照时,整个数据存储将写入磁盘。预写日志保存文件发生的所有数据库修改。当使用 Docker 运行 Memgraph 时,这两种机制都依赖于用户创建在启动 Memgraph 时存储这些数据的卷。

为每个卷指定两个字段。第一个是卷的名称,它在给定主机上是唯一的。在你的例子中,这将是 mg_lib、mg_log 和 mg_etc。第二个字段是文件或目录在容器中挂载的路径。对于 Memgraph 来说,那就是:

  • /var/lib/memgraph(这是保存耐久性相关文件的地方)
  • /var/log/memgraph(日志)
  • /etc/memgraph(配置设置)

给定这些路径,使用 Docker 运行 Memgraph 的命令是:

sudo docker run -it -p 7687:7687 -p 3000:3000 -v mg_lib:/var/lib/memgraph -v mg_log:/var/log/memgraph -v mg_etc:/etc/memgraph memgraph
Run Code Online (Sandbox Code Playgroud)

默认情况下,主机上的卷可以在以下位置找到:

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes
Run Code Online (Sandbox Code Playgroud)

我希望这个答案可以提供一些清晰的信息。