kubernetes mysql pxc_K8S使用operator部署和管理Percona - PXC集群
概述
pxc为mysql的一种集群模型,我们结合operator和k8s 完成pxc的部署和扩容
硬盘使用local卷,如何管理local卷请翻阅 我的另一篇文章
https://www.jianshu.com/p/bfa204cef8c0
英文文档详情 https://percona.github.io/percona-xtradb-cluster-operator/configure/backups
下载git
git clone-brelease-0.3.0 https://github.com/percona/percona-xtradb-cluster-operator
cd percona-xtradb-cluster-operator
安装自定义资源CRD
kubectl apply-fdeploy/crd.yaml
创建pxc namespace
kubectl create namespace pxc
kubectl config set-context $(kubectl config current-context) -n pxc
创建k8s用户和权限
kubectl apply-fdeploy/rbac.yaml
部署operator
kubectl apply-fdeploy/operator.yaml
配置初始密码
生成加密字符串
echo -n 'plain-text-password' | base64
vi deploy/secrets.yaml
apiVersion: v1
kind: Secret
metadata:
name: my-cluster-secrets
type: Opaque
data:
root: 加密字符
xtrabackup: 加密字符
monitor: 加密字符
clustercheck: 加密字符
proxyuser: 加密字符
proxyadmin: 加密字符
pmmserver: 加密字符
部署
kubectl apply-fdeploy/secrets.yaml
部署集群
自定义pxc参数
vi deploy/cr.yaml
apiVersion: "pxc.percona.com/v1alpha1"
kind: "PerconaXtraDBCluster"
metadata:
#集群名称
name: "cluster1"
finalizers:
- delete-pxc-pods-in-order
# - delete-proxysql-pvc
# - delete-pxc-pvc
spec:
secretsName: my-cluster-secrets
pxc:
#集群节点数量
size: 3
image: perconalab/pxc-openshift:0.2.0
#资源信息
resources:
requests:
memory: 1G
cpu: 600m
limits:
memory: 1G
cpu: "1"
volumeSpec:
#存储卷信息
storageClass: local-storage
accessModes: [ "ReadWriteOnce" ]
#大小
size: 6Gi
affinity:
topologyKey: "kubernetes.io/hostname"
# advanced:
# nodeSelector:
# disktype: ssd
# tolerations:
# - key: "node.alpha.kubernetes.io/unreachable"
# operator: "Exists"
# effect: "NoExecute"
# tolerationSeconds: 6000
# priorityClassName: high-priority
# annotations:
# iam.amazonaws.com/role: role-arn
# imagePullSecrets:
# - name: private-registry-credentials
# labels:
# rack: rack-22
proxysql:
#是否部署proxy来完成读写分离
enabled: true
#proxysql几点数量
size: 1
image: perconalab/proxysql-openshift:0.2.0
resources:
requests:
memory: 1G
cpu: 600m
# limits:
# memory: 1G
# cpu: 700m
volumeSpec:
storageClass: ssd-local-storage
accessModes: [ "ReadWriteOnce" ]
size: 2Gi
# affinity:
# topologyKey: "failure-domain.beta.kubernetes.io/zone"
# # advanced:
# nodeSelector:
# disktype: ssd
# tolerations:
# - key: "node.alpha.kubernetes.io/unreachable"
# operator: "Exists"
# effect: "NoExecute"
# tolerationSeconds: 6000
pmm:
#是否开启pmm
enabled: false
image: perconalab/pmm-client:1.17.0
serverHost: monitoring-service
serverUser: pmm
backup:
image: perconalab/backupjob-openshift:0.2.0
# imagePullSecrets:
# - name: private-registry-credentials
schedule:
- name: "sat-night-backup"
#crontab计划
schedule: "0 0 * * 6"
#保存几份备份
keep: 3
volume:
storageClass: local-storage
size: 6Gi
kubectl apply -f deploy/cr.yaml
查看pxc集群
kubectl -n pxc get po --show-labels
查看service
kubectl -n pxc get svc
将nodePORT
kubectl -n pxc edit svc cluster1-pxc-proxysql
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2019-03-25T10:58:37Z"
labels:
app: pxc
cluster: cluster1
name: cluster1-pxc-proxysql
namespace: pxc
ownerReferences:
- apiVersion: pxc.percona.com/v1alpha1
controller: true
kind: PerconaXtraDBCluster
name: cluster1
uid: f0a9a0ba-4eec-11e9-ba71-005056ac2dbb
resourceVersion: "2771712"
selfLink: /api/v1/namespaces/pxc/services/cluster1-pxc-proxysql
uid: f0c3c844-4eec-11e9-9e18-005056ac20e9
spec:
clusterIP: 10.99.239.180
externalTrafficPolicy: Cluster
ports:
- name: mysql
nodePort: 31239
port: 3306
protocol: TCP
targetPort: 3306
- name: proxyadm
nodePort: 31531
port: 6032
protocol: TCP
targetPort: 6032
selector:
component: cluster1-pxc-proxysql
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
再次查看
连接mysql
mysql -h 10.16.16.119 -P 31239 -u root -p
连接proxyadmin
mysql -h 10.16.16.119 -P 31531 -u proxyadmin -p
扩容
将3节点扩容到5节点
需要注意必须为奇数节点,
而且po分布在不同的k8snode上 所以k8s node必须大于pxc节点,不然po会一直处于pend状态
kubectl -n pxc get pxc/cluster1 -o yaml | sed -e 's/size: 3/size: 5/' | kubectl -n pxc apply -f -
查看读写分离,新节点已经加入
缩减节点
kubectl -n pxc get pxc/cluster1 -o yaml | sed -e 's/size: 4/size: 3/' | kubectl -n pxc apply -f -
创建用户和同步用户到proxysql
mysql -u root -p -P 31239 -h node1
create database database1;
GRANT ALL PRIVILEGES ON database1.* TO 'user1'@'%' IDENTIFIED BY 'password1';
同步proxy
kubectl -n pxc exec -it cluster1-pxc-proxysql-0 -- proxysql-admin --config-file=/etc/proxysql-admin.cnf --syncusers
测试
备份和恢复
crontab 已经在创建集群的时候创建完毕
手动backup
cat <
apiVersion: "pxc.percona.com/v1alpha1"
kind: "PerconaXtraDBBackup"
metadata:
name: "backup20190326"
spec:
pxcCluster: "cluster1"
volume:
storageClass: local-storage
size: 6G
EOF
查看备份
kubectl get pxc-backup
查看pxc集群
kubectl get pxc
从备份恢复数据
查看备份
kubectl get pxc-backup
查看pxc集群
kubectl get pxc
将指定备份恢复到指定集群
./deploy/backup/restore-backup.sh
将备份copy到本地
./deploy/backup/copy-backup.sh path/to/dir
安装PMM监控
helm repo add percona https://percona-charts.storage.googleapis.com
helm repo update
查看pmmserver 参数
helm inspect percona/pmm-server
安装
helm install percona/pmm-server --name pcx-monitoring --namespace=pxc --set platform=kubernetes --set persistence.storageClass=local-storage --set credentials.username=pmm
如果下载有问题可以代理下载
https://percona-charts.storage.googleapis.com/pmm-server-1.17.1.tgz
然后放到本机
tar -xvf ~/pmm-server-1.17.1.tgz
更改:
vi ./pmm-server/templates/statefulset.yaml
115行加入
storageClassName: {{ .Values.persistence.storageClass }}
类似下图
helm install ./pmm-server --name pcx-monitoring --namespace=pxc --set platform=kubernetes --set persistence.storageClass=local-storage --set credentials.username=pmm --set "credentials.password=密码"
这里的密码必须和my-cluster-secrets中的pmmserver一致
如果忘记kubectl -n pxc get secret 查看
kubectl -n pxc edit secret 密码文件 修改
查看
开启客户端pmm
kubectl -n pxc get pxc
kubectl -n pxc get svc 获取pmmserver名称
kubectl -n pxc edit pxc cluster1
kubectl -n pxc get pxc
骑宠serverHost为kubectl -n pxc get svc 获取pmmserver的名称
serverUser为账号
kubernetes mysql pxc_K8S使用operator部署和管理Percona - PXC集群相关推荐
- 如何在Rancher 2.2 Preview2上部署和管理多K8s集群应用
Rancher 2.2 Preview2于近日全面发布,这一版本包含了许多K8S集群操作的强大特性.本文将详细介绍多集群应用这一特性,让您可以在短时间内更新集群,大大提升工作效率. 近日,全球领先的容 ...
- 如何在Rancher 2.2 Preview2上部署和管理多K8s集群应用 1
2019独角兽企业重金招聘Python工程师标准>>> Rancher 2.2 Preview2于近日全面发布,这一版本包含了许多K8S集群操作的强大特性.本文将详细介绍多集群应用这 ...
- MySQL Percona PXC集群实现MySQL主从复制强一致性
简介 不同于MySQL的主从复制只能在主节点写入数据的是,PXC可以在任何一个节点写入数据.基于MySQL Percona版本. 架构 部署安装PXC 需要注意的是:要先启动第一个节点(PXC初始化) ...
- MySQL 部署PXC集群
目录 MySQL 部署PXC集群 PXC集群概述 PXC介绍 PXC特点 相应端口 主机角色 配置主机名及映射关系 部署PXC 安装软件 配置服务 启动服务 测试配置 测试集群高可用 常见错误 MyS ...
- 原创 【ReactJs+springBoot项目——租房】第13章:MySQL主从复制+MyCat数据库中间件+HAProxy+PXC集群
分析目前系统架构中的数据库层存在的问题 分析MySQL数据库的集群方案 学习主从复制(读写分离)架构方案 掌握MyCat数据库中间件的使用 掌握HAProxy复制均衡的使用 掌握PXC集群的使用 多种 ...
- 3、kubeadm部署Kubernetes 网络插件flannel、Calico、weave 并设置集群角色
Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展. Kubernetes不仅支持Docker,还支持Rocket,这是另一种容器技术. 使用Kubern ...
- CentOS7 下 MySQL 之 PXC 集群部署【Docker+多机多节点】
背景 最近在进行 MySQL 集群搭建测试的研究中 对于业界主流方案自然不能跳过 在此,整理成完整的文章,希望道友能得到参考价值 - 对于 docker 不熟悉的小伙伴,个人建议移步文章 -- [Ce ...
- mysql从节点报错_CentOS7.9 下 MySQL 之 PXC 集群部署【Docker+多机多节点】
背景 最近在进行 MySQL 集群搭建测试的研究中 对于业界主流方案自然不能跳过 在此,整理成完整的文章,希望道友能得到参考价值 - [注]:Percona XtraDB Cluster(简称 PXC ...
- mysql数据库的pxc工具_CentOS7 下 MySQL 数据库 PXC 集群部署操作指导
背景 最近在进行 MySQL 的 PXC 集群搭建使用和研究 前期已完成了一篇记录文章 : [CentOS7 下 MySQL 之 PXC 集群部署[Docker+多机多节点]] 但是,毕竟不是所有人都 ...
最新文章
- 消息称中国商务部已批准高通收购恩智浦
- Oracle数据隐式乱码,正则匹配中文数据失败
- Restful API 架构与设计参考原则
- html5在线音乐列表播放器,HTML5列表音乐播放器SMusic
- Spring Boot2.1.5(8)--- 各Starter介绍
- UCI数据集整理(附论文常用数据集)
- ubuntu 终端查看图片(eog)
- VML Mathematical Functions
- Unity连接MySQL数据库方法整合
- SequoiaDB巨杉数据库-使用
- VisualStudio 2017 c++安装
- 百度首页天气html制作,使用百度天气API实现自己的天气预报
- HDMI转换芯片——MS1858
- linux的浏览器大全,Linux下9款浏览器对比
- Excel 2010 VBA 入门 138 添加选项卡和内置控件
- C# 屏蔽Ctrl Alt Del 快捷键方法+屏蔽所有输入
- 面试六要点_家庭办公室设置要点:改善空间的6条原则
- 更改CloudStack中KVM平台的Windows虚拟机默认磁盘类型为VirtIO
- 编写程序,如果输入的是大写字母,则输出对应的小写字母,如果输入的是小写字母,则输出对应的大写字母;如果输入的是数字,原样输出;按回车结束
- allegro多版本安装_Revit2020怎么安装?revit2020版本安装教程,图文教程