概述

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集群相关推荐

  1. 如何在Rancher 2.2 Preview2上部署和管理多K8s集群应用

    Rancher 2.2 Preview2于近日全面发布,这一版本包含了许多K8S集群操作的强大特性.本文将详细介绍多集群应用这一特性,让您可以在短时间内更新集群,大大提升工作效率. 近日,全球领先的容 ...

  2. 如何在Rancher 2.2 Preview2上部署和管理多K8s集群应用 1

    2019独角兽企业重金招聘Python工程师标准>>> Rancher 2.2 Preview2于近日全面发布,这一版本包含了许多K8S集群操作的强大特性.本文将详细介绍多集群应用这 ...

  3. MySQL Percona PXC集群实现MySQL主从复制强一致性

    简介 不同于MySQL的主从复制只能在主节点写入数据的是,PXC可以在任何一个节点写入数据.基于MySQL Percona版本. 架构 部署安装PXC 需要注意的是:要先启动第一个节点(PXC初始化) ...

  4. MySQL 部署PXC集群

    目录 MySQL 部署PXC集群 PXC集群概述 PXC介绍 PXC特点 相应端口 主机角色 配置主机名及映射关系 部署PXC 安装软件 配置服务 启动服务 测试配置 测试集群高可用 常见错误 MyS ...

  5. 原创 【ReactJs+springBoot项目——租房】第13章:MySQL主从复制+MyCat数据库中间件+HAProxy+PXC集群

    分析目前系统架构中的数据库层存在的问题 分析MySQL数据库的集群方案 学习主从复制(读写分离)架构方案 掌握MyCat数据库中间件的使用 掌握HAProxy复制均衡的使用 掌握PXC集群的使用 多种 ...

  6. 3、kubeadm部署Kubernetes 网络插件flannel、Calico、weave 并设置集群角色

    Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展. Kubernetes不仅支持Docker,还支持Rocket,这是另一种容器技术. 使用Kubern ...

  7. CentOS7 下 MySQL 之 PXC 集群部署【Docker+多机多节点】

    背景 最近在进行 MySQL 集群搭建测试的研究中 对于业界主流方案自然不能跳过 在此,整理成完整的文章,希望道友能得到参考价值 - 对于 docker 不熟悉的小伙伴,个人建议移步文章 -- [Ce ...

  8. mysql从节点报错_CentOS7.9 下 MySQL 之 PXC 集群部署【Docker+多机多节点】

    背景 最近在进行 MySQL 集群搭建测试的研究中 对于业界主流方案自然不能跳过 在此,整理成完整的文章,希望道友能得到参考价值 - [注]:Percona XtraDB Cluster(简称 PXC ...

  9. mysql数据库的pxc工具_CentOS7 下 MySQL 数据库 PXC 集群部署操作指导

    背景 最近在进行 MySQL 的 PXC 集群搭建使用和研究 前期已完成了一篇记录文章 : [CentOS7 下 MySQL 之 PXC 集群部署[Docker+多机多节点]] 但是,毕竟不是所有人都 ...

最新文章

  1. 消息称中国商务部已批准高通收购恩智浦
  2. Oracle数据隐式乱码,正则匹配中文数据失败
  3. Restful API 架构与设计参考原则
  4. html5在线音乐列表播放器,HTML5列表音乐播放器SMusic
  5. Spring Boot2.1.5(8)--- 各Starter介绍
  6. UCI数据集整理(附论文常用数据集)
  7. ubuntu 终端查看图片(eog)
  8. VML Mathematical Functions
  9. Unity连接MySQL数据库方法整合
  10. SequoiaDB巨杉数据库-使用
  11. VisualStudio 2017 c++安装
  12. 百度首页天气html制作,使用百度天气API实现自己的天气预报
  13. HDMI转换芯片——MS1858
  14. linux的浏览器大全,Linux下9款浏览器对比
  15. Excel 2010 VBA 入门 138 添加选项卡和内置控件
  16. C# 屏蔽Ctrl Alt Del 快捷键方法+屏蔽所有输入
  17. 面试六要点_家庭办公室设置要点:改善空间的6条原则
  18. 更改CloudStack中KVM平台的Windows虚拟机默认磁盘类型为VirtIO
  19. 编写程序,如果输入的是大写字母,则输出对应的小写字母,如果输入的是小写字母,则输出对应的大写字母;如果输入的是数字,原样输出;按回车结束
  20. allegro多版本安装_Revit2020怎么安装?revit2020版本安装教程,图文教程

热门文章

  1. 第三十二期:你们都是怎么学Python的?
  2. Keil中的Code,RO,RW,ZI分别表示什么?
  3. 20个常用的Python小技巧
  4. html input file 置空,清空 HTML File Input
  5. 线程执行一半断了_有的线程它死了,于是它变成一道面试题
  6. vue computed使用_vue computed正确使用方式
  7. PL/SQL中模拟EBS上下文
  8. 好程序员Java分享Java案例_英汉字典
  9. POJ 3087 Shuffle'm Up (模拟+map)
  10. Cocoa编程学习笔记一