对象存储

  • 对象存储 > 实用工具 > 数据迁移工具 Kodoimport

    数据迁移工具 Kodoimport

    最近更新时间: 2024-06-25 16:14:19

    1. 简介

    kodoimport 为七牛云的数据迁移工具,和 kodoimport-cli 搭配使用,支持以下源的迁移:

    • 本地源
    • HTTP 源
    • 七牛源
    • S3 源
    • OSS 源

    迁移工具支持以下功能:

    • 支持单机模式和分布式模式。单机模式部署简单使用方便,但是单机模式迁移能力有限,如果有大规模数据迁移需求分布式模式更为合适
    • 支持流量控制
    • 支持迁移特定前缀的文件
    • 支持为迁移目标设置特定前缀
    • 支持并行数据下载和上传
    • 支持数据校验
    • 支持增量迁移
    • 支持同时配置多个迁移 Job

    kodoimport 启动后会创建迁移服务、文档服务等,等待创建迁移的 Job 进行相关的迁移工作;

    1.1 下载

    支持平台 下载链接
    Windows x64 下载
    Macos amd64 下载
    Macos arm64 下载
    Linux amd64 下载
    Linux arm64 下载

    1.2 文档

    kodoimport 内置了文档,你可以直接在本机上启动 kodoimport 并根据面板 Docs URL 中提示的链接在浏览器中使用文档,也可以在迁移设备上启动
    kodoimport 然后通过本机浏览器进行访问(本机网络必须能访问到设备,如果本机和迁移设备不在一个网络,可通过 vpn、docker 端口映射、k8s
    外网访问等方式解决);

    默认情况下:文档仅允许本机访问,你可以通过修改 kodoimport 的启动选项 --web-address 以允许其他电脑访问。
    eg:

    kodoimport --web-address "0.0.0.0:7900"
    
    kodoimport 启动后面板如下:
    
    =========================================================                        
                  Welcome to kodoimport !
      If you are using kodoimport running docker or kubernetes, 
    adjust the IP below to the host IP.
    
    	Version        : Unknown
    	Scheduler  Addr: 127.0.0.1:8001
    	Docs        URL: http://127.0.0.1:7900/docs
    	Stat        URL: http://127.0.0.1:7900/stat
    	Kodoimport Path: /Users/test/.kodoimport/kodoimport
    	Workspace      : /Users/test/.kodoimport
    
    	Basic Auth:
    		   UserName: 
    		   Password: 
    =========================================================
    

    1.3 kodoimport-cli

    kodoimport-cli 为 kodoimport 迁移服务的交互工具,包含获取服务状态信息以及 Job 的创建、暂停、删除、重试等功能,具体可参考文档服务中相关文档。

    1.4 角色

    1.4.1 Job

    Job 为一组相同源到相同七牛存储的任务集合。比如:七牛 BucketA 到七牛 BucketB 的迁移,每个文件的迁移为一个迁移任务。

    1.4.2 Scheduler

    Scheduler 为迁移的调度器,负责将 Job 中的任务下发给 Worker 进行执行。所有的 Job 信息均存储在 Scheduler
    端,并会被持久化到本地工作目录中。

    工作目录 可在 kodoimport 启动时配置,目录中存放着日志、Job 相关信息等,默认为:${当前用户家目录}/.kodoimport

    工作目录 结构如下:

    ├── log    // 日志
    │   ├── access  // kodoimport-cli 请求日志
    │   │   ├── log2024031214.txt
    │   │   └── 2024031410.txt
    │   └── system  // kodoimport Scheduler 和 Worker 运行日志
    │       ├── 2024031214.txt
    │       └── 2024031410.log
    └── server
        ├── qiniu-bash      // JobID 为 qiniu-bash 的 Job 的工作目录
        │   ├── 00000-round  // 第 0 轮迁移的状态信息保存目录
        │   │   ├── 700-result.txt  // 执行结果,700 为状态码具体错误信息见内部 Task 信息;
        │   │   └── cache           // 状态信息
        │   │       └── info_cache.db
        │   │           ├── 000001.log
        │   │           ├── CURRENT
        │   │           ├── LOCK
        │   │           ├── LOG
        │   │           └── MANIFEST-000000
        │   └── cache
        └── qiniu-bash.conf // JobID 为 qiniu-bash 的 Job 的配置文件
    

    1.4.3 Worker

    任务执行体,会从 Scheduler 获取任务并执行,同一台设备上进配置一个 Worker 即可。如果此台设备上也需要配置 Scheduler,可使用将
    Mode 设置为 0,同时构建 Scheduler 和 Worker,其他设备的 Worker 也可接入此 Scheduler 中。

    工作目录 可在 kodoimport 启动时配置,目录中存放着日志等信息,默认为:${当前用户家目录}/.kodoimport

    1.4.4 Executor

    任务执行的最小单元,Worker 上有多少个并发就会有多少个 Executor,一般不用关心此概念。

    注意事项

    空间要求:

    项目 大小 备注
    内存 Schdueler: 2G
    Worker: Executor 数(默认:20) * 分片上传的块大小(默认:4M)
    查看分片上传的块大小:kodoimport-cli job.config dst.uploadPartSizeMB
    硬盘 1千万文件:4Gi ~ 10Gi。 迁移后的结果信息会被存储,成功被迁移的文件存储信息较少,失败的存储信息较多;可以按待文件数量进行评估

    2. 安装

    2.1 二进制程序

    在下面网站中下载相应版本:kodoimport

    2.2 Docker

    # 获取 Docker 镜像
    docker pull kodoproduct/kodoimport:latest
    

    2.3 Kubernetes

    参考 kodoimport Kubernetes 配置文件:kodoimport.yaml,并根据注释结合自己根据实际情况进行调整。

    # 部署
    kubectl apply -f kodoimport.yaml
    

    3. 启动

    3.1 二进制程序启动

    3.1.1 单机模式

    # 解压后找到 kodoimport 二进制执行程序,执行以下命令:
    
    ./kodoimport
    

    3.1.2 多机模式

    # 解压后找到 kodoimport 二进制执行程序
    # Scheduler 的主机 IP 为:192.168.1.5
    # Worker    的主机 IP 为:192.168.1.6
    # 启动 Scheduler 
    kodoimport --mode 1  --scheduler-address "0.0.0.0:8001"
    
    # 启动 Worker
    kodoimport --mode 2  --scheduler-address "192.168.1.5:8001"
    

    3.2 Docker 启动

    3.2.1 单机模式

    # 单机模式
    # /Users/test/.kodoimport 为挂载的 kodoimport 工作目录,kodoimport 运行的状态信息会保存此处
    docker run -it -p 7900:7900 \ 
                   --mount type=bind,source=/Users/test/.kodoimport,target=/root/.kodoimport \
                   kodoproduct/kodoimport:latest
    

    3.2.2 多机模式

    # Scheduler 的宿主机 IP 为:192.168.1.5
    # Worker    的宿主机 IP 为:192.168.1.6
    # 启动 Scheduler
    # /Users/test/.kodoimport 为挂载的 kodoimport 工作目录,kodoimport 运行的状态信息会保存此处
    docker run -it -p 7902:7902 -p 8001:8001 \
                                --mount type=bind,source=/Users/test/.kodoimport,target=/root/.kodoimport \
                                kodoproduct/kodoimport:latest \
                                --mode 1  \
                                --scheduler-address "0.0.0.0:8001" \
                                --web-address "0.0.0.0:7902" 
    
    # 启动 Worker
    docker run -it -p 7902:7902 kodoproduct/kodoimport:latest \
                                --mode 2  \
                                --scheduler-address "192.168.1.5:8001" \
                                --web-address "0.0.0.0:7902:192.168.1.6"
    

    3.3 kodoimport 启动参数

    参数 类型 作用 默认值
    –mode int 运行模式
    0:同时部署启动 Scheduler 和 Worker
    1:仅启动 Scheduler
    其他:仅启动 Worker。
    0
    –workspace string kodoimport 的工作目录,存储 kodoimport 的日志等信息;
    当 kodoimport 中启动了 Scheduer 还会包含 Job 的信息。
    ${当前用户家目录}/.kodoimport
    –web-address string Web 监听的地址,样式: 监听Host:监听端口:路由Host。
    kodoimport 运行状态和文档,以及 kodoimport-cli 和 kodoimport 的交互也依赖此端口。
    一般只设置监听地址即可(监听Host:监听端口),在 docker 的多机模式中,由于 Scheduler 需要转发请求到 Worker,此时需要配置 Worker 的路由Host(Docker 宿主机地址)。
    仅支持 IPv4。
    0.0.0.0:7900
    –scheduler-address string Scheduler 和 Worker 远程调用的地址。
    当启动了 Scheduler 时,为 Scheduler 监听地址;
    当进启动 Worker 时,为 Schdulder 访问地址。
    仅支持 IPv4。
    127.0.0.1:8001
    –worker-name string Worker 的别名。
    –log-level string 日志等级;可配值有:debug、info、warning 和 error;
    当 Worker 启动时未指定此参数,Worker 会使用 Scheduler 配置的值。
    info
    –executor-count int Worker 的并发执行数量;
    当 Worker 启动时未指定此参数,Worker 会使用 Scheduler 配置的值。
    20
    –username string Web 请求中使用的 Basic Auth 验证的用户名
    只有 Username 和 Password 同时指定才会生效。
    –password string Web 请求中使用的 Basic Auth 验证的密码
    只有 Username 和 Password 同时指定才会生效。

    注:
    特殊状态码说明:

    • 230:文件迁移成功,但由于无法获取文件 Hash 而无法确保文件一致性的文件。

    4. 创建数据迁移 Job

    使用 kodoimport-cli 创建迁移 Job,详细使用说明请参考 kodoimport 内置文档中的示例

    kodoimport-cli job create -h
    
    以上内容是否对您有帮助?
  • Qvm free helper
    Close