Operator仓库地址如下:percona-xtradb-cluster-operator
官网教程:percona-operator-for-mysql
PXC集群的备份和恢复参考:pxc-backup-restore
1.部署MySQL-PXC集群
创建CRD
kubectl apply -f deploy/crd.yaml
创建Namespace
kubectl create namespace pxc
kubectl config set-context $(kubectl config current-context) --namespace=pxc
授予RBAC权限
kubectl apply -f deploy/rbac.yaml
创建Operator
kubectl apply -f deploy/operator.yaml
其中会用到下面这个镜像,如果出现无法下载的情况,可以换仓库。
perconalab/percona-xtradb-cluster-operator:main
创建MySQL相关的密码的Secret资源清单:
kubectl create -f deploy/secrets.yaml
创建SSL相关的证书的Secret以及各种其他证书:
kubectl apply -f deploy/ssl-secrets.yaml
kubectl apply -f deploy/vault-secret.yaml
接着使用如下的命令去安装PXC集群:
kubectl apply -f deploy/cr.yaml
其中会用到如下的这些镜像,如果镜像不能从DockerHub下载的话,可以修改cr.yaml
当中的镜像仓库地址。
perconalab/percona-xtradb-cluster-operator:main-pxc8.0
perconalab/percona-xtradb-cluster-operator:main-haproxy
perconalab/percona-xtradb-cluster-operator:main-proxysql
perconalab/percona-xtradb-cluster-operator:main-logcollector
perconalab/pmm-client:dev-latest
perconalab/percona-xtradb-cluster-operator:main-pxc8.0-backup
其中会涉及到很多的StorageClass的配置,都需要替换成为自己的K8S集群所使用到的StorageClass。
PXC集群创建之后,接着可以通过如下的命令连接PXC集群:
# 指定haproxy的service和namespace进行访问
mysql -h {haproxy-service-name}.{pxc-namespace}.svc.cluster.local -u root -p
# example
mysql -h pxc-mysql-cluster-haproxy.pxc.svc.cluster.local -u root -p
2.MySQL-PXC集群的备份
参考官方文档:pxc/backups-storage
2.1 自动备份
自动备份的意思是,PXC集群可以基于CRON表达式去实现每天自动备份,只需要修改deploy/cr.yaml
文件即可实现。
2.2 手动备份
手动备份的意思是:可能某一次需要进行相关的操作,需要将操作之前的数据备份起来,此时就会需要使用到手动备份。
在backup.storages
中,配置S3的对象存储,如果是使用的minio或者阿里云这类非官方AWS S3的对象存储,但是兼容S3协议的对象存储,需要额外配置endpointUrl
。
backup:
storages:
s3:
type: s3
verifyTLS: false
s3:
bucket: mysql-pxc-backup
credentialsSecret: pxc-mysql-backup-s3
region: beijing-minio
endpointUrl: http://10.168.1.209:31000
S3配置当中的credentialsSecret
需要配置一个S3的AccessKey相关的配置信息的Secret,因此需要先执行下面的资源清单,再应用deploy/cr.yaml
资源清单让它生效。
配置参考如下:对于AWS_ACCESS_KEY_ID
需要配置accessKeyId,对于AWS_SECRET_ACCESS_KEY
需要配置accessKey的密码,需要注意的是Secret的namespace需要和PXC集群所在的Namespace对应的上。
apiVersion: v1
kind: Secret
metadata:
namespace: pxc
name: pxc-mysql-backup-s3
type: Opaque
stringData:
AWS_ACCESS_KEY_ID: ......
AWS_SECRET_ACCESS_KEY: ......
PXC集群创建备份,在deploy/backup/
目录下,有一个backup.yaml
的文件模板,可以借助这个模板去创建PXC集群。
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBClusterBackup
metadata:
# finalizers:
# - percona.com/delete-backup
namespace: pxc
name: pxc-backup-202501142137
spec:
pxcCluster: pxc-mysql-cluster
storageName: s3
# activeDeadlineSeconds: 3600
# containerOptions:
# env:
# - name: VERIFY_TLS
# value: "false"
# args:
# xtrabackup:
# - "--someflag=abc"
# xbcloud:
# - "--someflag=abc"
# xbstream:
# - "--someflag=abc"
其中pxcCluster需要和deploy/cr.yaml
当中的pxcCluster
配置保持一致,storageName需要和deploy/cr.yaml
的backup.storages
部分名字保持一致。
接着,使用kubectl apply -f deploy/backup/backup.yaml
命令根据资源清单去进行创建PXC集群的备份。