美文网首页
跨账号US3存储迁移

跨账号US3存储迁移

作者: 行者深蓝 | 来源:发表于2021-05-17 17:37 被阅读0次

    US3_client主机

    系统centos 7, 参考配置 8核16G内存 系统盘 100GB ,需要安装如下软件包用于运行迁移脚本:

    yum install python3 git -y
    yum install python3-pip -y
    pip3 install pyyaml 
    pip3 install mysql-connector
    pip3 install ufile-sdk-python 如果pip安装失败
    git clone https://github.com/ucloud/ufile-sdk-python.git
    cd ufile-sdk-python
    python3 setup.py install
    

    迁移步骤

    切换配置

    1. 将原有bucket类型更改为公开,选中对象存储域名,最右侧,修改空间类型->公开空间
    2. 新建bucket,配置镜像回源,指向原有bucket域名
    3. 客户侧业务应用选择窗口期切换配置,指向新bucket域名

    同步文件

    1. Ucloud控制新建TIDB
    2. 获取迁移脚本https://github.com/panhaitao/Playbooks/blob/main/scripts/us3_save_index_to_tidb.py,新建配置 /data/us3_bucket_name.yaml
    src_pubkey: 'ucloud_pubkey'           #原ucloud账户API 公钥
    src_prikey: 'ucloud_prikey'           #原ucloud账户API 私钥
    src_bucket: namexxx                   #原bucket名字
    dest_pubkey: 'ucloud_pubkey'          #目标ucloud账户API 公钥
    dest_prikey: 'ucloud_prikey'          #目标ucloud账户API 私钥
    dest_bucket: namexxx                  #目标bucket名字
    domain: .ufile.cn-north-02.ucloud.cn #bucket对应内网域名
    db:
      name: mytest                       #database名称
      table: pht_test                    #table名称
      user: root                         #TiDB实例登陆用户名
      password: xxxx                     #TiDB实例密码
      host: 10.9.115.187                 #TiDB实例IP
      port: 6033                         #TiDB端口
    

    执行脚本,遍历对象存储,将key写入DB,执行命令: us3_save_index_to_tidb.py --config /data/us3_bucket_name.yaml

    1. 上一步操作完成后,进入DB,执行SQL语句,select * from tablename ORDER BY id DESC limit 1000; 查询到 bucket 内文件最大条目数,修改 /data/us3_bucket_name.yaml 新增加两个字段
    db: 
      tb_size: 400000                    #bucket 内文件最大条目数     
      tb_step: 200                       #任务并发数,每批次处理文件数量   
    
    1. 获取迁移脚本,https://github.com/panhaitao/Playbooks/blob/main/scripts/us3_head_files_with_concurrency_run.py 执行命令: us3_head_files_with_concurrency_run.py --config /data/us3_bucket_name.yaml 可以重复执行, 每次执行只处理未完成任务,实测是执行6-7次完成全部数据迁移,可以在DB中执行SQL select * from tablename where cached=0 根据返回结果来判断是否迁移完成

    迁移限制

    1. 回源带宽上限 20M
    2. US3稳定写入性能 1000个/s

    测试数据

    1. 200线程并发执行head 和get请求测试结果 , 最大每小时可完成20万条记录的迁移
    2. 400线程并发执行head 和get请求测试结果, 最大每小时可完成30万条记录的迁移
    3. 1亿条数据迁移估算时间 按照一小时可以同步20万条~30万计算,遍历触发一亿条数据完成同步需要预估耗时 330小时(13天) ~500小时(20天),

    40W记录迁移,200线程并发实测耗时 (bucket大小 37.43GB,文件数量40万,单文件大小85k)

    1. 第一阶段,读取bucet写入UDB 数据库, 耗时27分钟,
      执行脚本:us3_head_files_with_concurrency_run.py --config /data/us3_config.yml
    2. 第二阶段,
      执行脚本:us3_head_files_with_concurrency_run.py --config /data/us3_config.yml
      第一次:耗时57分钟,成功触发 254060条目的文件回源,剩余145938条
      第二次:耗时30分钟 剩余43558
      第三次: 耗时15m 剩余 6273
      第四次: 耗时7m 剩余 769
      第五次: 耗时2m 剩余 98
      第六次: 耗时 24s 剩余 9
      第七次 耗时 6s 剩余 0

    相关文章

      网友评论

          本文标题:跨账号US3存储迁移

          本文链接:https://www.haomeiwen.com/subject/nsnjjltx.html