跳到主要内容

数据迁移指南

常见场景是在强大的实例(例如带有GPU的实例)上处理大型数据集,然后将整个RAGFlow服务迁移到不同的生产环境(例如仅CPU服务器)。本指南解释了如何使用提供的迁移脚本安全地备份和恢复您的数据。

确定您的数据

默认情况下,RAGFlow 使用 Docker 卷来存储所有持久化数据,包括数据库、上传的文件以及搜索索引。您可以通过运行以下命令查看这些卷:

docker volume ls

输出将类似于以下内容:

DRIVER    VOLUME NAME
local docker_esdata01
local docker_minio_data
local docker_mysql_data
local docker_redis_data

这些卷包含您需要迁移的所有数据。

步骤 1:停止 RAGFlow 服务

在开始迁移之前,必须停止源机器上运行的全部 RAGFlow 服务。导航到项目根目录并执行以下命令:

docker-compose -f docker/docker-compose.yml down

**重要提示:**不要使用 -v 标志(例如 docker-compose down -v),因为它会删除所有数据卷。迁移脚本包含检查,如果服务正在运行,则会阻止您继续进行。

步骤 2:备份您的数据

我们提供了一个方便的脚本来将所有数据卷打包到一个单独的备份文件夹中。

为了快速参考该脚本的命令和选项,可以执行以下操作:

bash docker/migration.sh help

要创建备份,请在项目根目录下运行以下命令:

bash docker/migration.sh backup

这将在您的项目根目录中创建一个包含数据卷压缩档案的 backup/ 文件夹。

您也可以为备份文件夹指定自定义名称:

bash docker/migration.sh backup my_ragflow_backup

这样将创建名为 my_ragflow_backup/ 的文件夹而不是默认的 backup/ 文件夹。

步骤 3:传输备份文件夹

从源机器复制整个备份文件夹(例如 backup/ 或者 my_ragflow_backup/)到目标机器上的 RAGFlow 项目目录。您可以使用诸如 scp, rsync 或物理驱动器等工具进行传输。

步骤 4:恢复数据

在目标机器上,确保 RAGFlow 服务未运行。然后,使用迁移脚本从备份文件夹中还原您的数据。

如果备份文件夹名为 backup/ ,请执行:

bash docker/migration.sh restore

如果您指定了自定义名称,请在命令中指定它:

bash docker/migration.sh restore my_ragflow_backup

脚本将自动创建必要的 Docker 卷并解包数据。

**注意:**如果脚本检测到目标机器上已存在相同名称的 Docker 卷,它会警告您恢复操作将覆盖现有数据,并在继续之前要求确认。

步骤 5:启动 RAGFlow 服务

一旦还原过程完成,在新机上启动 RAGFlow 服务:

docker-compose -f docker/docker-compose.yml up -d

**注意:**如果您已经使用 docker-compose 构建了一个服务,您可能需要像本指南中所述备份目标机器上的数据,并执行如下操作:

# 在执行以下命令前,请先通过 `sh docker/migration.sh backup backup_dir_name` 进行备份。
# !!! 注意 `-v` 标志会删除原始的 Docker 卷
docker-compose -f docker/docker-compose.yml down -v
docker-compose -f docker/docker-compose.yml up -d

现在,您的 RAGFlow 实例已使用原机器上的所有数据在新机上运行。