作者:程润科 数据库研发工程师本文将演示在 Kubernetes 上部署 RadonDB MySQL Kubernetes 2.X(Operator)的步骤,快速实现 MySQL 高可用集群部署,以及部署集群的校验和卸载方式。
编辑:张莉梅 高级文档工程师
视频:钱芬 高级测试工程师
部署版本为 RadonDB MySQL Kubernetes 2.1.2。
部署准备
- Kubernetes 集群
- MySQL 客户端工具
radondb
。helm repo add radondb https://radondb.github.io/radondb-mysql-kubernetes/
校验仓库信息,可查看到名为
radondb/mysql-operator
的 chart。$ helm search repo
NAMECHART VERSIONAPP VERSIONDESCRIPTION
radondb/mysql-operator0.1.0v2.1.2Open Source,High Availability Cluster,based on MySQL
步骤 2: 部署 Operator 以下指定 release 名为
demo
, 创建一个名为 demo-mysql-operator
的 Deployment[1]。helm install demo radondb/mysql-operator
在这一步中,默认将同时创建集群所需的 CRD[2]。步骤 3: 部署 RadonDB MySQL 集群 执行以下指令,以默认参数为 CRD
mysqlclusters.mysql.radondb.com
创建一个实例,即创建 RadonDB MySQL 集群。kubectl apply -f https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/mysql_v1alpha1_mysqlcluster.yaml
自定义集群部署参数,可参考 配置参数[3]。部署校验 校验 RadonDB MySQL Operator 查看
demo
的 Deployment 和对应监控服务,回显如下信息则部署成功。$ kubectl get deployment,svc
NAMEREADYUP-TO-DATEAVAILABLEAGE
demo-mysql-operator1/1117h50mNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE
service/mysql-operator-metricsClusterIP10.96.142.228443/TCP8h
校验 RadonDB MySQL 集群 执行如下命令,将查看到如下 CRD。
$ kubectl get crd | grep mysql.radondb.com
backups.mysql.radondb.com2021-11-02T07:00:01Z
mysqlclusters.mysql.radondb.com2021-11-02T07:00:01Z
mysqlusers.mysql.radondb.com2021-11-02T07:00:01Z
以默认部署为例,执行如下命令将查看到名为
sample-mysql
的三节点 RadonDB MySQL 集群及用于访问节点的服务。$ kubectl get statefulset,svc
NAMEREADYAGE
sample-mysql3/37h33mNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE
service/sample-followerClusterIP10.96.131.843306/TCP7h37m
service/sample-leaderClusterIP10.96.111.2143306/TCP7h37m
service/sample-mysqlClusterIPNone3306/TCP7h37m
访问集群 在 Kubernetes 集群内,支持使用
service_name
或者 clusterIP
方式,访问 RadonDB MySQL。RadonDB MySQL 提供 Leader 和 Follower 两种服务,分别用于客户端访问主从节点。Leader 服务始终指向主节点(可读写),Follower 服务始终指向从节点(只读)。
文章图片
RadonDB MySQL 集群架构图以下为客户端与数据库在同一 Kubernetes 集群内,访问 RadonDB MySQL 的方式。
当客户端的与数据库部署在不同 Kubernetes 集群,请参考 Kubernetes 访问集群中的应用程序[4],配置端口转发、负载均衡等连接方式。ClusterIP 方式 RadonDB MySQL 的高可用读写 IP 指向 Leader 服务的
clusterIP
,高可用只读 IP 指向 Follower 服务的 clusterIP
。mysql -h -P -u -p
以下示例用户名为
radondb_usr
, Leader 服务的 clusterIP 为 10.10.128.136
,连接示例如下:mysql -h 10.10.128.136 -P 3306 -u radondb_usr -p
service_name 方式 Kubernetes 集群的 Pod 之间支持通过
service_name
方式访问 RadonDB MySQL。service_name
方式不适用于从 Kubernetes 集群的物理机访问数据库 Pod。
连接 Leader 服务(RadonDB MySQL 主节点)
mysql -h . -u -p
用户名为
radondb_usr
,release 名为 sample
,RadonDB MySQL 命名空间为 default
,连接示例如下:mysql -h sample-leader.default -u radondb_usr -p
连接 Follower 服务(RadonDB MySQL 从节点)
mysql -h . -u -p
用户名为
radondb_usr
,release 名为 sample
,RadonDB MySQL 命名空间为
default
,连接示例如下:mysql -h sample-follower.default -u radondb_usr -p
卸载 卸载 Operator 卸载当前命名空间下 release 名为
demo
的 RadonDB MySQL Operator。helm delete demo
卸载集群 【容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和集群】卸载 release 名为
sample
RadonDB MySQL 集群。kubectl delete mysqlclusters.mysql.radondb.com sample
卸载自定义资源
kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlclusters.mysql.radondb.com
kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlusers.mysql.radondb.com
kubectl delete customresourcedefinitions.apiextensions.k8s.io backups.mysql.radondb.com
引用参考
- Deployment:https://kubernetes.io/zh/docs...
- CRD:https://kubernetes.io/zh/docs...
- 配置参数:https://github.com/radondb/ra...
- Kubernetes 访问集群中的应用程序:https://kubernetes.io/zh/docs...
推荐阅读
- java|看《韩顺平Java》视频的笔记
- java|java 登录注册小程序
- 使用Python爬虫爬取小红书完全过程
- 面试系列|阿里面试官偷偷给我的软件测试工程师面试题,拿offer率老高了
- 数据库|【分享】—如何学习软件测试
- 数据库|在(快来pick你最喜爱的团队!)
- 数据库|比SQL还好用,又一门国产数据库语言诞生了
- 数据库|硬刚一周,3W字总结,一年的经验告诉你如何准备校招!
- MySQL|醒醒,这么详细地MySQL升级版增删改查还不看看()