TiDB适配华为云&OBS心得
前一阵,在网上闲逛时,偶然发现华为云发布一些列的对接华为云的任务(https://developer.huaweicloud.cn/programs/opensource/contributing/)。在任务中,我找了一个比较简单的任务入手。那就是TiDB适配OBS开源开发任务。
1 任务流程
1.1 任务的目的
本任务的主要目的是让TiDB支持华为云OBS服务,TiDB的备份数据存储到华为云OBS上,拓展OBS服务的影响力。方便TiDB的用户使用华为云服务时能够顺利对接OBS服务。
1.2 报名流程
- 在喜欢的任务上进行报名,填写自己的申请,留下自己的邮箱,之后华为官方会发送任务计划书到邮箱内。
- 开通开发者空间,进行实名认证,加入沃土云创计划个人方向。
- 进入激励管理》开源共创,进入任务,此时在需求分析节点,提交之前发送到邮箱内的任务计划书。
- 提交任务计划书之后,审批后进入开发阶段,阅读任务计划书,了解需要开发的内容。
- 此时需要申领服务器,主要是Gaussdb,华为云CCE(类似k8s),CodeArts(ci/cd)。
- 开发完整之后,在CCE上进行验证,在CodeArts上进行部署。
- 测试完成后,可以申请任务验收。将自己的代码分支博文等信息打包成zip文件进行上传。
- 后面就是等发钱啦。
1.3 开发代码
- 华为云提供了官方demo(https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoGo/overview),首先在自己的账号下fork仓库,并在master上建立新分支。
- 根据demo中的规范,添加一个object微服务。
1.4 上云第一步-购买OBS
- 在华为云官网,点击产品,选择对象存储服务,点击购买
- 选择以下选项,进行提交
区域:广州(选离自己最近的城市)
资源包类型:标准存储多AZ包
规格:按照自己需要的大小(我选的是40G)
1.5 上云第二步-购买CCE
在华为云官网,点击产品,输入cce,选择cce,点击购买。
- 执行以下步骤,进行提交
页面顶部控制栏,选择地区,也就是上云第一步购买Gaussdb的地区
集群类型:cce turbo
计费模式:按需付费
集群名称:(随便写)
集群版本:v1.29
集群规模:50
集群 master 实例数:单实例
虚拟私有云:默认(购买Gaussdb使用的虚拟私有云,必须保持一致,否则访问数据库不通)
容器子网(Pod CIDR):默认(购买Gaussdb使用的虚拟子网,必须保持一致,否则访问数据库不通)
其他默认,点击提交。进入插件选择页面。
保持默认插件,点击插件配置,点击确认配置,点击提交。
1.6 新建节点
在左侧找到节点池,新建节点。注意这里使用的cpu,内存等都需要更大一点,否则cce的集群会启动失败
1.7 配置CodeArts
根据华为云提供的文档(https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/blob/main/zh_CN/docs/cicd-pipeline.md),配置CodeArts。
注意点:
在选择通用git时,没有扩展点,需要新建扩展点(添加代码的git路径和分支)
demo项目没有Dockerfile,需要自己编写Dockerfile,我的如下,基本可以复用
FROM golang:alpine AS builder
LABEL stage=gobuilder
ENV CGO_ENABLED 0
ENV GOPROXY https://goproxy.cn,direct
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk update --no-cache && apk add --no-cache tzdata
WORKDIR /build
ADD go.mod .
ADD go.sum .
RUN go mod download
COPY . .
RUN go build -ldflags="-s -w" -o /app/object object/object.go
#FROM scratch
FROM golang:alpine
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
ENV TZ Asia/Shanghai
WORKDIR /app
COPY --from=builder /build/object/etc /app/etc
COPY --from=builder /app/object /app/object
CMD ["./object"]
2 验收材料
1. 开源软件fork地址:不涉及
2. 开源软件修改记录(可以有多个修改记录):
不涉及
3. 推送上游社区PR(包括代码、文档、可以有多个):
不涉及
4. 验证DEMO地址:https://gitcode.com/moseszane168/opensource-demo-tidb-for-obs-241119/overview
5. 验证DEMO修改记录(可以有多个修改记录,只包含和本任务验证强相关的提交记录,比如添加依赖、增加配置文件、演示开源软件功能使用的代码等):
3 资源清单
3.1 CCE
产品名称 |
集群类型 |
集群版本 |
集群规模 |
云容器引擎CCE |
Turbo集群 |
V1.29 |
50 |
3.2 ECS
产品名称 |
CPU架构 |
实例类型 |
公共镜像 |
镜像版本 |
弹性云服务器 |
鲲鹏计算 |
鲲鹏通用计算增强型 |
Huawei Cloud EulerOS |
Huawei Cloud EulerOS 2.0标准版 64位 ARM版(10GiB) |
3.3 OBS
产品名称 |
资源包类型 |
桶类别 |
对象存储服务OBS |
存储包 |
标准存储多AZ包 |
4 测试结果
4.1 验证思路
使用https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/issues/26
中方案一:通过 S3 兼容 API 验证方案是指利用 OBS 提供的 S3 兼容 API 进行交互。
部署好TiDB,通过下面命令将TiDB的test数据库的user表备份到OBS:
tiup br backup table --pd "110.41.133.192:2379" --db test --table user --storage "s3://minio-4dc9/tidb_backup_test_user_20241119?endpoint=http://obs.cn-south-1.myhuaweicloud.com&access-key=RK8FRQWPH9NRNLGPKOCZ&secret-access-key=yoMSl6qHIiogyYThtsUSgdgy3pfOInJ9wwkUUyYk" --ratelimit 128 --log-file backuptable.log
从OBS恢复test数据库的user表到TiDB可用下面命令:
tiup br restore full --pd "110.41.133.192:2379" --with-sys-table --storage "s3://minio-4dc9/tidb_backup_test_user_20241119?endpoint=http://obs.cn-south-1.myhuaweicloud.com&access-key=RK8FRQWPH9NRNLGPKOCZ&secret-access-key=yoMSl6qHIiogyYThtsUSgdgy3pfOInJ9wwkUUyYk" --ratelimit 128 --log-file restorefull.log
调用OBS的SDK获取备份的数据。
4.2 查询备份结果接口
- 点赞
- 收藏
- 关注作者
评论(0)