在Kubernetes上安装Percona XtraDB集群

官方文档地址:https://www.percona.com/doc/kubernetes-operator-for-pxc/kubernetes.html

一、简介

Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下:

1).同步复制,事务要么在所有节点提交或不提交。

2).多主复制,可以在任意节点进行写操作。

3).在从服务器上并行应用事件,真正意义上的并行复制。

4).节点自动配置。

5).数据一致性,不再是异步复制。

二、兼容性

Percona XtraDB Cluster完全兼容MySQL和Percona Server,表现在:

1).数据的兼容性

2).应用程序的兼容性:无需更改应用程序

1).集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上

2).每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。

3).每个节点都包含完整的数据副本

PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(使用了Galera library,一个通用的用于事务型应用的同步、多主复制插件)

三、优缺点

优点如下:

1).当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需 远程访问

2).无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作, 不受影响

3).良好的读负载扩展,任意节点都可以查询

缺点如下:

1).加入新节点,开销大。需要复制完整的数据

2).不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上

3).有多少个节点就有多少重复的数据

四、部署方式

示例在k8s集群中部署Percona XtraDB Cluster集群

  • clone项目
git clone -b v1.7.0 https://gitee.com/Aaron-23/percona-xtradb-cluster-operator.git
cd percona-xtradb-cluster-operator
  • 准备存储

当前环境具有三个k8s node节点,每个node节点/var/lib/data目录有100GB存储空间

所有存储均使用本地存储

创建storageclass

cd storage
kubectl create -f local-sc.yaml

创建pv

spec.local.path路径中的文件手动创建,修改values值为各节点ip

kubectl create -f pv-data-172.yaml
kubectl create -f pv-data-173.yaml
kubectl create -f pv-data-174.yaml
kubectl create -f pv-cron-172.yaml
kubectl create -f pv-cron-173.yaml
kubectl create -f pv-cron-174.yaml
  • 创建crd资源
 kubectl apply -f deploy/crd.yaml
  • 创建ns
 kubectl create namespace pxc
 kubectl config set-context $(kubectl config current-context) --namespace=pxc
  • 赋予rbac权限
kubectl apply -f deploy/rbac.yaml
  • 在Kubernetes中启动operator
kubectl apply -f deploy/operator.yaml
  • 使用secrets.管理Percona XtraDB集群相关秘钥

需要设置数据库密码的修改secrets中密码即可

 kubectl create -f deploy/secrets.yaml
  • 创建Percona XtraDB Cluster
kubectl apply -f deploy/cr.yaml

创建过程将花费一些时间。当po和副本数都达到“Running”状态时,该过程结束:

$ kubectl get pods
NAME                                              READY   STATUS    RESTARTS   AGE
cluster1-haproxy-0                                1/1     Running   0          5m
cluster1-haproxy-1                                1/1     Running   0          5m
cluster1-haproxy-2                                1/1     Running   0          5m
cluster1-pxc-0                                    1/1     Running   0          5m
cluster1-pxc-1                                    1/1     Running   0          4m
cluster1-pxc-2                                    1/1     Running   0          2m
percona-xtradb-cluster-operator-dc67778fd-qtspz   1/1     Running   0          6m
  • 检查与新创建集群的连接
 $ kubectl run -i --rm --tty percona-client --image=percona:8.0 --restart=Never -- bash -il
percona-client:/$ mysql -h cluster1-haproxy -uroot -proot_password
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 1976
Server version: 8.0.19-10 Percona XtraDB Cluster (GPL), Release rel10, Revision 727f180, WSREP version 26.4.3

Copyright (c) 2009-2020 Percona LLC and/or its affiliates
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
原文地址:https://www.cnblogs.com/Aaron-23/p/14436804.html