跳到主要内容

数据迁移指南

一个常见的场景是在强大的实例(例如带有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/的文件夹。

步骤3:传输备份文件夹

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

步骤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实例现在正在运行,并包含来自原始机器的所有数据。