k8s 部署polardb-x集群

news2024/9/20 20:37:48

前言

体验了基于源码构建的部署polardb-x 单机部署,当然也想体验性能更好的完全分布式集群。这边文章将重点介绍如何部署polardb-x集群

简介

PolarDB-X 是一款面向超高并发、海量存储、复杂查询场景设计的云原生分布式数据库系统。其采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,具备企业级、云原生、高可用、高度兼容 MySQL 系统及生态等特点。

PolarDB-X 最初为解决阿里巴巴天猫“双十一”核心交易系统数据库扩展性瓶颈而生,之后伴随阿里云一路成长,是一款经过多种核心业务场景验证的、成熟稳定的数据库系统。 PolarDB-X 的核心特性如下:

水平扩展
PolarDB-X 采用 Shared-nothing 架构进行设计,支持多种 Hash 和 Range 数据拆分算法,通过隐式主键拆分和数据分片动态调度,实现系统的透明水平扩展。

分布式事务
PolarDB-X 采用 MVCC + TSO 方案及 2PC 协议实现分布式事务。事务满足 ACID 特性,支持 RC/RR 隔离级别,并通过一阶段提交、只读事务、异步提交等优化实现事务的高性能。

混合负载
PolarDB-X 通过原生 MPP 能力实现对分析型查询的支持,通过 CPU quota 约束、内存池化、存储资源分离等实现了 OLTP 与 OLAP 流量的强隔离。

企业级
PolarDB-X 为企业场景设计了诸多内核能力,例如 SQL 限流、SQL Advisor、TDE、三权分立、Flashback Query 等。

云原生
PolarDB-X 在阿里云上有多年的云原生实践,支持通过 K8S Operator 管理集群资源,支持公有云、混合云、专有云等多种形态进行部署,并支持国产化操作系统和芯片。

高可用
通过多数派 Paxos 协议实现数据强一致,支持两地三中心、三地五副本等多种容灾方式,同时通过 Table Group、Geo-locality 等提高系统可用性。

兼容 MySQL 系统及生态
PolarDB-X 的目标是完全兼容 MySQL ,目前兼容的内容包括 MySQL 协议、MySQL 大部分语法、Collation、事务隔离级别、Binlog 等。

集群部署方案

集群部署方案主要有两个

  • PXD 部署
  • k8s部署

鉴于便捷性,这是我们使用k8s部署

k8s 部署polardb-x集群

1. 环境准备

  • 安装 Helm 已经配置环境变量
  • k8s 集群
  • 良好的网络环境

2. 安装 PolarDB-X Operator

  • 在 Helm 仓库中添加 PolarDB-X 相关网址:

    helm repo add polardbx https://polardbx-charts.oss-cn-beijing.aliyuncs.com
    
  • 检查已发布的 PolarDB-X Operator 版本:

    helm search repo polardbx/polardbx-operator -l
    

    推荐安装最新版本,例如:v1.6.2。

  • 创建 polardbx-operator-system 命名空间:

    kubectl create namespace polardbx-operator-system
    
  • 用以下 Helm 命令安装 v1.6.2:

    helm install --namespace polardbx-operator-system \
        --set node.volumes.data=/polarx/data --set imageRepo=registry:5000 \
        --set extension.config.images.store.galaxy.exporter=register:5000/mysqld-exporter:master \
        --version 1.6.2 \
        polardbx-operator polardbx/polardbx-operator
    
  • 检查容器启动是否成功:

    kubectl get pods -n polardbx-operator-system
    

    如果pod的状态都处于running 就说明PolarDB-X Operator 安装成功了

在这里插入图片描述

3. 部署polardb-x集群

3.1 准备yaml
  • 首先执行如下命令获取 PolarDB-X 各个组件的最新镜像版本(需要填入YAML文件):

    curl -s "https://polardbx-opensource.oss-cn-hangzhou.aliyuncs.com/scripts/get-version.sh" | sh
    
  • 输出内容 以2.4版本为例

    CN polardbx/polardbx-sql:v2.4.0_5.4.19
    DN polardbx/polardbx-engine:v2.4.0_8.4.19
    CDC polardbx/polardbx-cdc:v2.4.0_5.4.19
    COLUMNAR polardbx/polardbx-columnar:v2.4.0_5.4.19
    
  • 编写 yaml文件

    vi polardbx_cluster.yaml
    
  • yaml 内容如下
    和官方配置文件不同的是,这里使用了polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx 镜像仓库地址,而不是默认的,避免因为网络问题拉取不到镜像。如果自带梯子可直接将镜像替换成官方推荐的地址 例如 把 polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/替换为polardbx/

    apiVersion: polardbx.aliyun.com/v1
    kind: PolarDBXCluster
    metadata:
      name: polardbx-cluster
    spec:
      topology:
        nodes:
          gms:
            template:
              image: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.0_8.4.19
              resources:
                requests:
                  cpu: 1
                  memory: 4Gi
                limits:
                  cpu: 1
                  memory: 4Gi
          cn:
            replicas: 2
            template:
              image: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.0_5.4.19
              resources:
                requests:
                  cpu: 2
                  memory: 4Gi
                limits:
                  cpu: 2
                  memory: 4Gi
          dn:
            replicas: 3
            template:
              image: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.0_8.4.19
              resources:
                requests:
                  cpu: 2
                  memory: 8Gi
                limits:
                  cpu: 2
                  memory: 8Gi
          cdc:
            replicas: 1
            template:
              image: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.0_5.4.19
              resources:
                requests:
                  cpu: 1
                  memory: 4Gi
                limits:
                  cpu: 2
                  memory: 4Gi
    
3.2 镜像提前下载(推荐 因为镜像都比较大 推荐提前下载)

在k8s1.20 以后 运行时环境被替换为了 Containerd 故使用 工具拉取镜像

crictl pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.0_8.4.19
crictl pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.0_5.4.19
crictl pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.0_5.4.19

注意: crictl 拉取镜像的命令没有进度条限制,并且一直阻塞住,在保证网络正常的情况下 静静的等待即可
在这里插入图片描述

下载后可使用crictl image list | grep polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com 命令查看
在这里插入图片描述

如果运行时环境还是docker的话 可以使用docker命令拉取镜像

docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.0_8.4.19
docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.0_5.4.19
docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.0_5.4.19

同样也可以使用 docker images -a | grep polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com 命令查看

3.3 执行apply
kubectl apply -f polardbx_cluster.yaml
3.4 等待部署完成

通过如下命令查看部署情况

kubectl get polardbxcluster -w

部署 完成后 效果如下
在这里插入图片描述

4. 卸载 polardb-x集群

卸载 polardb-x集群 也比较容易

# polardbx-cluster 这个是集群的名称 名称是在yaml里定义的
kubectl delete polardbxcluster polardbx-cluster

5. 使用polardb-x集群

  • 首先查看连接连接地址 因为我们是两个DN 节点 需要使用一个负载均衡的地址 这个polardb-x 集群部署完成后 已经提供在 k8s的服务里

    在这里插入图片描述
    也可通过命令行 查看该服务
    shell kubectl get service polardbx-cluster

在这里插入图片描述
我们需要使用的就是 这个cluster ip

  • 查看连接DN的账号密码

    可通过可视化工具查看
    在这里插入图片描述
    内容如下
    在这里插入图片描述
    需要注意的是 这个密码不能直接使用 需要先进行base64解密 然后才是真正的密码

    也可以通过命令行查看

     kubectl get secret polardbx-cluster -o jsonpath="{.data['polardbx_root']}" | base64 -d  | xargs echo "Password:"
    

    输出结果即是密码

  • 使用可视化工具连接测试
    在这里插入图片描述


good day !!!

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

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

相关文章

[SWPUCTF 2021 新生赛]easy_sql

网址有提示wllm 尝试http://node4.anna.nssctf.cn:28075/?wllm1 我们尝试sqlmap注入一下 sqlmap -u "http://node4.anna.nssctf.cn:28075/?wllm1" --dbs sqlmap -u "http://node4.anna.nssctf.cn:28075/?wllm1" -D test_db -tables sqlmap -u "ht…

el-tree树状控件,定位到选中的节点的位置

效果图 在el-tree 控件加 :render-content"renderContent" 在掉接口的方法中 实际有用的是setTimeout 方法和this.$refs.xxxxxx.setCheckedKeys([industrycodeList]) if(res.data.swindustrylist.length>0){res.data.swindustrylist.forEach(item > {industry…

使用MicroApp重构旧项目

前言 随着技术的飞速发展,我们公司内部一个基于“上古神器” jQuery PHP 构建的十年历史老项目已显力不从心,技术非常老旧且维护成本高昂,其实已经无数次想要重构,但是苦于历史遗留原因以及业务的稳定性而一直难以下手&#xff0…

TortoiseGit处理文件夹名、文件名大小写变更问题

windows环境下使用TortoiseGit,经常会碰到把源码中某个文件或文件夹仅修改大小写进行重命名的场景,但是git默认大小写不敏感,可以使用以下方式处理: 一、文件大小写重命名 右键要重命名的文件→TortoiseGit→Rename 二、文件夹大…

猫头虎 分享:Python库 Scrapy 的简介、安装、用法详解入门教程

猫头虎 分享:Python库 Scrapy 的简介、安装、用法详解入门教程 🐅 今天猫头虎带您探索Python中的强大爬虫库——Scrapy,从简介到安装,再到用法详解,带您一步步掌握这门技术! 🐍 📢 …

Mafia

目录 一、题目 二、思考 三、payload 3.1 方案一 3.2 方案二 3.3 方案三 3.4 方案四 四、思考与总结 一、题目 /* Challenge */ mafia (new URL(location).searchParams.get(mafia) || 11) mafia mafia.slice(0, 50) mafia mafia.replace(/[\\\"\\-\!\\\[\]]/gi…

Linux快捷方式创建、输出重定向(正确输出和错误输出)

一.正确输出 创建一个1.txt文件,然后用vim打开这个文件,然后再开一个窗口 进程号是5602 通过proc可以看到5602这个进程 进入5602里面这里记录了程序的信息,找到fd 进入fd目录下面有0124快捷方式:快捷方式对应的真正的文件是 /de…

计算机毕业设计 医院问诊系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

2024年人工智能SSD采购容量估计将超过45 EB

市场报告摘要 市场背景:根据TrendForce公司的报告,由于人工智能(AI)服务器客户对AI应用的企业级固态硬盘(SSD)需求激增,过去两个季度中企业级SSD订单显著增加。上游供应商动态:上游…

mysql 一些知识点 面试用

mysql 1、4个隔离级别与3个现象2、快照读与当前读2.1 可重复读的情况下出现幻读问题的两种情况 3 数据库 常用引擎4、InnoDB存储引擎对MVCC的实现5、索引(重点)5.1 什么是索引5.2 索引的创建与删除5.2.1 查看表中有哪些索引5.2.2 添加索引5.2.3 删除索引 5.3 索引的分类5.4 树数…

web技术1——jdk目录结构(重要),tomcat服务器

jdk文件夹结构(重要) bin目录: 里面都是.exe可执行文件。java,javac,javadoc,java编译工具,java监测工具等.exe文件都在这里。 include目录: 底层有用c写的东西,这里面包含很多c语言的文件&#xff0c…

Ok, Boomer

目录 一、题目 二、思路 三、payload 3.1 方案一 3.2 方案二 四、思考与总结 一、题目 <!-- Challenge --> <h2 id"boomer">Ok, Boomer.</h2> <script>boomer.innerHTML DOMPurify.sanitize(new URL(location).searchParams.get(boome…

DAM-E3505N以太网口三相400V 100A全参数交流电量采集模块Modbus-TCP协议

品牌&#xff1a;阿尔泰科技 型号&#xff1a;DAM-E3505 简介&#xff1a; DAM-E3505N为三相全参数交流电量采集模块&#xff0c;以太网通讯接口&#xff0c;支持标准Modbus-TCP协议。配备良好的人机交互界面&#xff0c;使用方便&#xff0c;性能稳定。 指标参数&#xff1…

破解 Google 账户注册难题丨0到1学习谷歌广告(1)

立了个flag&#xff0c;连载系列&#xff0c;把主流渠道的0到1细节都写一遍。 做跨境电商&#xff0c;要投谷歌广告&#xff0c;拥有一个Google账户已成为我们不可或缺的一部分。今天&#xff0c;就让我们一起来聊聊如何轻松注册一个属于你自己的Google账户。 为什么需要Googl…

【深度学习入门】深度学习概述

一、什么是人工智能 机器人能够通过“眼睛”看到这个世界&#xff0c;并对这个世界加以理解&#xff0c;最后做出一些决策。因此人工智能具有 感知理解决策 的能力。 人类能够站在食物链顶端的关键是具有学习的能力&#xff0c;这是智能的本质。 简而言之&#xff0c;人工智能就…

【数据结构篇顺序表】算法题

1. 移除元素​https://leetcode.cn/problems/remove-element/description/​sorted-array/description/​ 1.思路 这个题要删除数组中等于 val的元素&#xff0c;然后返回数组中剩余的元素个数 那么肯定是要用到循环的&#xff0c;先给两个指针 l1,l2&#xff0c;开始时l1和…

学网安兴趣最重要

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

Matplotlib-绘图基础

文章目录 一、安装Matplotlib二、基本绘图流程1.创建画布与创建子图2.基本绘图1&#xff09;.绘制线条2).设置线型、线宽格式化字符颜色的缩写 3).设置坐标轴范围4).设置坐标刻度5).设置坐标轴6&#xff09;备注 三、高级绘图1&#xff09;plt对象支持的图类型2&#xff09;散点…

【Linux】——进程概念(万字解读)

一 冯诺依曼体系结构 在此之前&#xff0c;我们先要理解我们计算机的冯诺依曼体系结构&#xff0c;因为是进程的基础 我们所有的操作其实都是基于这样一个模型&#xff0c;比如你在qq上&#xff0c;和别人发送消息&#xff0c;这个消息肯定是先通过输入设备进行输入&#xf…

Vue3学习 Day03

标签的ref属性 用ref标记dom元素 取代了用id来标识标签&#xff0c;因为用id来标识标签&#xff0c;如果父组件和子组件中有id一样的&#xff0c;会引起混淆。 用ref标记组件 子组件 向父亲暴露name&#xff0c;age&#xff0c;classroom&#xff08;非响应式&#xff09; …