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
迁移步骤
切换配置
- 将原有bucket类型更改为公开,选中对象存储域名,最右侧,修改空间类型->公开空间
- 新建bucket,配置镜像回源,指向原有bucket域名
- 客户侧业务应用选择窗口期切换配置,指向新bucket域名
同步文件
- Ucloud控制新建TIDB
- 获取迁移脚本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
- 上一步操作完成后,进入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 #任务并发数,每批次处理文件数量
- 获取迁移脚本,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 根据返回结果来判断是否迁移完成
迁移限制
- 回源带宽上限 20M
- US3稳定写入性能 1000个/s
测试数据
- 200线程并发执行head 和get请求测试结果 , 最大每小时可完成20万条记录的迁移
- 400线程并发执行head 和get请求测试结果, 最大每小时可完成30万条记录的迁移
- 1亿条数据迁移估算时间 按照一小时可以同步20万条~30万计算,遍历触发一亿条数据完成同步需要预估耗时 330小时(13天) ~500小时(20天),
40W记录迁移,200线程并发实测耗时 (bucket大小 37.43GB,文件数量40万,单文件大小85k)
- 第一阶段,读取bucet写入UDB 数据库, 耗时27分钟,
执行脚本:us3_head_files_with_concurrency_run.py --config /data/us3_config.yml - 第二阶段,
执行脚本: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
网友评论