zoukankan      html  css  js  c++  java
  • 在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.
    
  • 相关阅读:
    2011年9月11日的最后几分钟开始学习Zend freamework
    PHP常用的调试技术 一周的时间正在整理
    二叉树最近共同祖先问题
    最近一段时间的思考
    字符编码笔记:ASCII,Unicode和UTF8
    node简介
    如何影响别人
    HTTP协议状态码详解(HTTP Status Code)
    jQuery常见的50种用法
    php上传多张图片
  • 原文地址:https://www.cnblogs.com/Aaron-23/p/14436804.html
Copyright © 2011-2022 走看看