跳转到主内容
版本:开发版

数据迁移指南

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

识别您的数据

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

docker volume ls

输出将类似于这样:

DRIVER    VOLUME NAME
local docker_esdata01
local docker_minio_data
local docker_mysql_data
local docker_redis_data

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

第一步:停止 RAGFlow 服务

在开始迁移之前,您必须在**源机器**上停止所有正在运行的 RAGFlow 服务。请导航到项目的根目录并运行:

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

重要提示:不要使用 -v 标志(例如,docker-compose down -v),因为这会删除您所有的数据卷。迁移脚本包含一项检查,如果服务处于活动状态,它将阻止您运行脚本。

第二步:备份您的数据

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

要快速查看脚本的命令和选项,您可以运行:

bash docker/migration.sh help

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

bash docker/migration.sh backup

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

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

bash docker/migration.sh backup my_ragflow_backup

这将创建一个名为 my_ragflow_backup/ 的文件夹。

第三步:传输备份文件夹

将整个备份文件夹(例如,backup/my_ragflow_backup/)从您的源机器复制到**目标机器**上的 RAGFlow 项目目录中。您可以使用像 scprsync 这样的工具,或者使用物理硬盘进行传输。

第四步:恢复您的数据

在**目标机器**上,确保 RAGFlow 服务没有在运行。然后,使用迁移脚本从备份文件夹恢复您的数据。

如果您的备份文件夹名为 backup/,请运行:

bash docker/migration.sh restore

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

bash docker/migration.sh restore my_ragflow_backup

该脚本将自动创建所需的 Docker 数据卷并解压数据。

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

第五步:启动 RAGFlow 服务

恢复过程完成后,您可以在新机器上启动 RAGFlow 服务:

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

注意: 如果您之前已经通过 docker-compose 构建了服务,您可能需要像本指南一样备份目标机器的数据,然后运行:

# Please backup by `sh docker/migration.sh backup backup_dir_name` before you do the following line.
# !!! this line -v flag will delete the original docker volume
docker-compose -f docker/docker-compose.yml down -v
docker-compose -f docker/docker-compose.yml up -d

您的 RAGFlow 实例现在正带着您原始机器上的所有数据运行。