k8s使用operator部署Mysql InnoDB Cluster
rw-r--r-- 1 root root 7697月 17 14:31 sample-cluster.yaml #带pvc的模版,需要自己添加SC的名称同上yaml。-rw-r--r-- 1 root root 7737月 17 14:31 sample-cluster-podspec-node-selector.yaml。-rw-r--r-- 1 root root 8797月 17 14:3
一、解释Mysql InnoDB Cluster
MySQL InnoDB Cluster是MySQL数据库的高可用性和弹性扩展解决方案之一。它是MySQL官方推出的一项功能,旨在简化部署和管理分布式数据库环境。
InnoDB Cluster基于MySQL Group Replication和MySQL Shell技术构建。MySQL Group Replication是MySQL 5.7版本引入的一项复制功能,它提供了多主复制和自动故障转移的能力。MySQL Shell是一个交互式的命令行工具,可以用于管理和操作MySQL服务器。
InnoDB Cluster使用MySQL Group Replication实现了高可用性,它允许将多个MySQL服务器组成一个集群,其中每个服务器都可以作为主服务器来处理写入操作,并且可以自动进行故障检测和故障转移。如果一个主服务器发生故障,集群中的其他服务器会自动选择一个新的主服务器,以确保数据库的持续可用性。
此外,InnoDB Cluster还提供了自动的数据同步和复制,以确保集群中的所有服务器都具有相同的数据副本。它还提供了管理工具和命令行界面,使管理员可以轻松地创建、配置和监控数据库集群。
总结而言,MySQL InnoDB Cluster提供了一个简单而强大的解决方案,用于构建高可用性、弹性扩展的MySQL数据库集群,提供数据的持久性和可用性,以满足企业对可靠数据库系统的需求。
二、项目地址
项目地址:
https://github.com/mysql/mysql-operator
三、部署过程
一、安装crds 扩展资源对象
$> kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-crds.yaml
二、安装operator控制器
$> kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-operator.yaml
三、部署Mysql InnoDB Cluster
1、创建一个mysql的root secret。
$> kubectl create secret generic mypwds \
--from-literal=rootUser=root \
--from-literal=rootHost=% \
--from-literal=rootPassword="sakila"
2、创建一个自定义资源对象-即定义的集群对象-下面是不带pvc的示例
apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
name: mycluster
spec:
secretName: mypwds
tlsUseSelfSigned: true
instances: 3
router:
instances: 1
3、创建一个自定义资源对象-即定义的集群对象-下面是带pvc的示例
apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
name: idc-with-custom-config
namespace: mysql-operator
spec:
secretName: mypwds
instances: 2
router:
instances: 1
tlsUseSelfSigned: true
datadirVolumeClaimTemplate:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi
storageClassName: rook-ceph-block
四、项目文件内容
以上内容均项目clone到本地,在项目中的deploy、samples中可以找到。
[root@oula-k8s-01 deploy]#
/xt-cloud/mysql-operator/deploy
-rw-r--r-- 1 root root 36796 7月 17 14:31 deploy-crds.yaml
-rw-r--r-- 1 root root 5749 7月 17 15:47 deploy-operator.yaml
-rwxr-xr-x 1 root root 3385 7月 17 14:31 patch_deployment.py
[root@oula-k8s-01 samples]# pwd
/xt-cloud/mysql-operator/samples
[root@oula-k8s-01 samples]# ls -l
总用量 24
-rw-r--r-- 1 root root 821 7月 17 14:31 sample-cluster-mycnf.yaml
-rw-r--r-- 1 root root 773 7月 17 14:31 sample-cluster-podspec-node-selector.yaml
-rw-r--r-- 1 root root 879 7月 17 14:31 sample-cluster-podspec-resources.yaml
-rw-r--r-- 1 root root 814 7月 18 11:08 sample-cluster-pvc.yaml
-rw-r--r-- 1 root root 769 7月 17 14:31 sample-cluster.yaml #带pvc的模版,需要自己添加SC的名称同上yaml
-rw-r--r-- 1 root root 743 7月 17 14:31 sample-secret.yaml #不带pvc
五、部署
kubectl apply -f sample-cluster-pvc.yaml 即可。
六、验证
1、先查看申明的pvc是否bind了pv
2、再看创建的pod
全部Runing则代表集群创建完成。
3、进行登录测试
$> kubectl run --rm -it myshell --image=container-registry.oracle.com/mysql/community-operator -- mysqlsh #这是拉去一个pod来进行管理mysql
If you don't see a command prompt, try pressing enter. #上面pod创建完后,输入回车。
MySQL JS> \connect root@mycluster #代表使用root用户链接数据库,这个mycluster是你创建的mysql的svc的名称,kubectl get svc -n mysql-operator 可以看到,同时在这个容器的env也可以看到。
Creating a session to 'root@mycluster'
Please provide the password for 'root@mycluster': ******
MySQL mycluster JS> #到这里就代表容器已经完成验证。
更多推荐
所有评论(0)