Vitess适配OBS心得
项目分析
Vitess是一个用于部署、扩展和管理大型MySQL实例集群的数据库解决方案。Vitess集MySQL数据库的很多重要特性和NoSQL数据库的可扩展性于一体。它的架构设计使得您可以像在物理机上一样在公共云或私有云架构中有效运行。它结合并扩展了许多重要的MySQL功能,同时兼具NoSQL数据库的可扩展性。
Vitess能解决以下问题:
- 支持您对MySQL数据库进行分片来扩展MySQL数据库,应用程序无需做太多更改。
- 从物理机迁移到私有云或公共云。
- 部署和管理大量的MySQL实例。
该任务的目标就是让Vitess支持华为云OBS服务,Vitess能够备份数据到华为云OBS上,拓展OBS服务的影响力。方便Vitess的用户能够顺利对接OBS服务。
适配过程
备份引擎
引擎是用于生成备份的技术。目前 Vitess 有以下插件:
- 内置:关闭实例并复制所有数据库文件(默认)
- XtraBackup:使用 Percona 的XtraBackup进行在线备份
默认备份实现是builtin,但是官方建议使用xtrabackup引擎,xtabackup允许无阻塞备份。
因此这里将backup_engine_implementation参数设置为xtrabackup
连接OBS
由于Vitess的备份功能提供了S3兼容的API,而OBS 提供了强大的 S3 API 兼容性,使得我们能够通过 S3 API 无缝集成到现有的 Vitess的备份功能中,而无需额外开发代码进行适配。
Vitess使用s3 api与对象存储通信,因此只需确保华为云 OBS 的 S3 接口配置正确即可。
部署Vitess
Vitess为部署在kubernetes提供了Vitess-Operator,能够支持在k8s上自动管理Vitess集群。
Vitess Operator 可自动执行如下任务:
- 部署任意数量的 Vitess 集群、单元、键空间、分片和平板电脑,以水平或垂直扩展读写能力;
- 为 Vitess 重新分片部署重叠分片,允许零停机时间调整分片大小;
- 通过 Kubernetes 注释触发手动计划故障转移;
- 在单个 Kubernetes 集群中的多个可用区域复制数据,以支持读/写流量的立即故障转移,以从可用区域丢失中恢复;
- 自动推出 Vitess 级用户凭证的更新。
要配置OBS需要在配置文件中添加backup模块:
backup:
engine: xtrabackup
locations:
- s3:
bucket: vitess
endpoint: https://obs.cn-south-1.myhuaweicloud.com
region: cn-south-1
authSecret:
name: vitess-s3-secret
key: credentials.json
authSecret 为华为云凭证,在credentials.json中需要使用 aws 凭据文件格式,例如
[default]
aws_access_key_id=<YourAK>
aws_secret_access_key=<YourSK>
验证截图
验证思路
OBS兼容S3协议,Vitess支持S3兼容协议,通过S3 API对接华为云OBS。通过vtctlclient客户端对Vitess服务端发送请求进行验证。
验证步骤:
- 在CCE中通过Vitess-Operator部署
- 添加数据
- 备份数据
- 查询OBS桶
- 从备份中恢复
在CCE中通过Vitess-Operator部署
添加数据
备份数据
执行备份命令:vtctlclient --logtostderr --server localhost:15999 BackupShard commerce/-
查看最新的备份列表
查询OBS桶
从备份中恢复
执行恢复命令:vtctlclient --logtostderr RestoreFromBackup zone1-2469782763
- 点赞
- 收藏
- 关注作者
评论(0)