猿创征文 | 国产数据库之在k8s环境下部署RadonDB MySQL集群
一、RadonDB MySQL介绍
1.RadonDB MySQL简介
1.QingCloud RadonDB 是基于 MySQL 研发的新一代分布式关系型数据库,可无限水平扩展,支持分布式事务,具备金融级数据强一致性,满足企业级核心数据库对大容量、高并发、高可靠及高可用的极致要求。
2.RadonDB MySQL 是一款基于 MySQL 的开源、高可用的云原生集群解决方案。
2.RadonDB MySQL的应用场景
RadonDB MySQL采用一主多从高可用架构,并具备安全、自动备份、监控告警、自动扩容等全套管理功能。目前已经在生产环境中大规模的使用,用户包含银行、保险、传统大企业等。
- 数据一致性较高的金融场景
数据强一致性保证,满足金融级可靠性要求。
- 网站运维
包含全套备份、恢复和监控等运维方案,满足网站类的业务需求。
3.RadonDB MySQL核心功能
- MySQL 高可用
1.无中心化自动选主
2.主从秒级切换
3.集群切换的数据强一致性
- 集群管理
- 监控告警
- 备份
- 集群日志管理
- 账户管理
4.RadonDB MySQL架构图
二、检查本地k8s环境
1.检查k8s节点状态
[root@k8s-master ~]# kubectl get nodes -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-master Ready control-plane,master 97d v1.23.1 192.168.3.201 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 containerd://1.6.6
k8s-node01 Ready <none> 97d v1.23.1 192.168.3.202 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 containerd://1.6.6
k8s-node02 Ready <none> 97d v1.23.1 192.168.3.203 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 containerd://1.6.6
2.检查helm版本
[root@k8s-master ~]# helm version
version.BuildInfo{
Version:"v3.9.0", GitCommit:"7ceeda6c585217a19a1131663d8cd1f7d641b2a7", GitTreeState:"clean", GoVersion:"go1.17.5"}
三、添加helm仓库
1.添加helm仓库源
[root@k8s-master ~]# helm repo add radondb https://radondb.github.io/radondb-mysql-kubernetes/
"radondb" has been added to your repositories
2.查看helm仓库列表
[root@k8s-master ~]# helm repo list
NAME URL
bitnami https://charts.bitnami.com/bitnami
radondb https://radondb.github.io/radondb-mysql-kubernetes/
3.搜索radondb/mysql-operator的chart包
[root@k8s-master ~]# helm search repo radondb/mysql-operator
NAME CHART VERSION APP VERSION DESCRIPTION
radondb/mysql-operator 2.2.1 v2.2.1 Open Source,High Availability Cluster,based o...
四、部署 Operator
1.下载的chart包
[root@k8s-master radondb]# helm pull radondb/mysql-operator
[root@k8s-master radondb]# ls
mysql-operator-2.2.1.tgz
2.部署Operator
[root@k8s-master radondb]# helm install demo radondb/mysql-operator
NAME: demo
LAST DEPLOYED: Sat Oct 8 16:48:37 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
You can create a new mysqlcluster by issuing:
cat <<EOF | kubectl apply -f-
apiVersion: mysql.radondb.com/v1alpha1
kind: MysqlCluster
metadata:
name: sample
spec:
replicas: 3
EOF
3.查看相关pod资源
[root@k8s-master radondb]# kubectl get pods
NAME READY STATUS RESTARTS AGE
app-agent-spmrv 2/2 Running 27 (38m ago) 10d
app-agent-zdjst 2/2 Running 42 (39m ago) 10d
demo-mysql-operator-969575-d8n9z 1/2 Running 0 105s
mysql001-8db95c95-g2nps 1/1 Running 3 (38m ago) 3d15h
nfs-client-provisioner-779b7f4dfd-448qg 1/1 Running 4 (30h ago) 3d15h
quick-start-5ctw-dn-0-single-0 2/3 Running 9 (39m ago) 3d5h
quick-start-5ctw-gms-single-0 2/3 Running 9 (38m ago) 3d5h
webserver01 1/1 Running 2 (39m ago) 2d
五、部署 RadonDB MySQL 集群
1.编辑部署yaml文件
apiVersion: mysql.radondb.com/v1alpha1
kind: MysqlCluster
metadata:
name: sample
spec:
replicas: 3
mysqlVersion: "5.7"
# the backupSecretName specify the secret file name which store S3 information,