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

8ae3da4969ed?from=timeline

查看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: {}

再次查看

8ae3da4969ed?from=timeline

连接mysql

mysql -h 10.16.16.119 -P 31239 -u root -p

8ae3da4969ed?from=timeline

连接proxyadmin

mysql -h 10.16.16.119 -P 31531 -u proxyadmin -p

8ae3da4969ed?from=timeline

扩容

将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 -

8ae3da4969ed?from=timeline

查看读写分离,新节点已经加入

8ae3da4969ed?from=timeline

缩减节点

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

8ae3da4969ed?from=timeline

测试

8ae3da4969ed?from=timeline

备份和恢复

crontab 已经在创建集群的时候创建完毕

8ae3da4969ed?from=timeline

手动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 }}

类似下图

8ae3da4969ed?from=timeline

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 密码文件 修改

查看

8ae3da4969ed?from=timeline

开启客户端pmm

kubectl -n pxc get pxc

kubectl -n pxc get svc 获取pmmserver名称

kubectl -n pxc edit pxc cluster1

8ae3da4969ed?from=timeline

kubectl -n pxc get pxc

骑宠serverHost为kubectl -n pxc get svc 获取pmmserver的名称

serverUser为账号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot递归树(需求返回List树状结构数据)

一、本主的应用场景 部门里面有一个属性是当前部门的上级部门&#xff0c;而当前部门又会有下级部门&#xff0c;下级部门还有下级部门&#xff0c;这就形成了一个向下无限循环&#xff0c;呈现出树状结构。 二、认识JSONObject JSONObject只是一种数据结构&#xff0c;可以理…

data-role参数表:

data-role参数表&#xff1a; data-role参数表&#xff1a; page 页面容器&#xff0c;其内部的mobile元素将会继承这个容器上所设置的属性 header 页面标题容器&#xff0c;这个容器内部可以包含文字、返回按钮、功能按钮等元素 footer 页面页脚容器&#x…

hubbledotnet mysql_HubbleDotNet 简介

系统简介HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件。开源协议是 Apache 2.0。HubbleDotNet提供了基于SQL的全文检索接口&#xff0c;使用者只需会操作SQL&#xff0c;就可以很快学会使用HubbleDotNet进行全文检索。 HubbleDotNet可以实现全文索引…

浅谈从学校(培训机构)跳跃到企业初/中级java开发工程师的学习路线(由浅入深)

1.先别学SSM&#xff0c;也别学Mybatis ,直接百度SpringBoot 为什么学它呢&#xff0c;简单&#xff0c;还有你要用到的几乎所有框架都可以以最简单的模式去学习&#xff0c;比如mybatis。 springboot天然集成了你在校学习的ssm以及任何你需要用到的东西&#xff0c;真正意义…

interface接口_接口 interface

接口不是类&#xff0c;而是对类的一组需求描述。Arrays类中的sort方法承诺可以对对象数组进行排序&#xff0c;但要求满足下列条件&#xff1a;对象所属的类必须实现了Comparable接口。public interface Comparable {int compareTo(Object other); }Java SE5.0&#xff0c;Com…

代码视图与StoryBoard.Xib文件视图的跳转

在storyboard中拖拽的控件,当我们使用纯代码进行编写的时候,进行跳转的时候用我们平时用的[self.navigationController popToViewController:Vc animated:YES], 你会发现跳转的后出现的页面只有你用用纯代码写的,而storyboard中的没有,这时候我们使用这个方法还是比较简单不能实…

influxdb mysql对比_InfluxDB读写性能测试

这里将告诉您InfluxDB读写性能测试,教程操作步骤:今天进行了InfluxDB和MySQL的对比测试&#xff0c;这里记录下结果&#xff0c;也方便我以后查阅。操作系统&#xff1a; CentOS6.5_x64InfluxDB版本 &#xff1a; v1.1.0MySQL版本&#xff1a;v5.1.73CPU &#xff1a; Intel(R)…

Nginx windows安装部署

一、Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru 站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的. 它也是一种轻量级的Web服务器…

前端学习(1514):vue-router使用步骤

<!-- 1引入插件的js --> <!-- 2设置链接 --> <!-- 3设立容器部分 --> <!-- 4提供要渲染的组件 --> <!-- 5配置路由 --> <!-- 6挂载路由 --> <!DOCTYPE html> <html lang"en"><head><meta charset"UT…

1024电商项目的邮箱验证码与图形验证码功能模块

项目基于springcloudalibaba&#xff0c;模块功能大致概括就是登录页面的时候先完成图形验证码的校验&#xff0c;输入的数字和字母与图片上的相对应之后&#xff0c;会向对应的邮箱或手机号发送邮箱/短信验证码二次验证。这里展示的是邮箱验证码。 用到的技术点有&#xff1a…

Android自己的自动化测试Monkeyrunner和用法示例

眼下android SDK在配有现成的测试工具monkey 和 monkeyrunner两。也许我们不看一样的兄弟名字。但事实是完全跑了两个完全不同的工具。在测试的不同区域的应用程序。总体&#xff0c;monkey主要用于压力和可靠性测试&#xff0c;拟键盘事件流。而且能够自定义发送的次数&#x…

内存大对象dump linux_在 Linux 上创建并调试转储文件 | Linux 中国

了解如何处理转储文件将帮你找到应用中难以重现的 bug。• 来源&#xff1a;linux.cn • 作者&#xff1a;Stephan Avenwedde • 译者&#xff1a;Xingyu.Wang •(本文字数&#xff1a;5501&#xff0c;阅读时长大约&#xff1a;6 分钟)崩溃转储、内存转储、核心转储、系统转储…

爬虫用mysql存储还是mongodb_【面试题】Mongodb和MySQL存储爬虫数据的特点是什么?...

(1)问题分析面试官主要考核Mongodb和MySQL数据库的特点&#xff0c;以及关系型与非关系型数据库。(2)核心问题讲解MySQL属于关系型数据库&#xff0c;它具有以下特点&#xff1a;在不同的引擎上有不同的存储方式。查询语句是使用传统的sql语句&#xff0c;拥有较为成熟的体系&a…

mysql originator_MySQL数据库事件调度(Event)

4.创建事件调度每5秒在表中插入数据MySQL> create event if not exists event_t1 on schedule every 5 second do insert into t values(1,1,sysdate());Query OK, 0 rows affected (0.01 sec)mysql> select * from t; --查看事件执行数据-------------------…

前端学习(1520):vue-router嵌套路由

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title></head> <!-- 1引入…

python与sql连接不上_Python连接不上SQL Server的两种根治思路

连接不上数据库&#xff0c;首先可以排除是代码的问题&#xff0c;连接方式都是千篇一律的。大多数问题都是本机的两个原因造成的&#xff0c;1.服务没有开启,2.没有启动SQL配置的TCP/IP下面给出统一解决方案&#xff1a;首先从开始菜单找到SQL数据库的配置工具&#xff0c;比如…