• 《PolarDB-X学习》第一讲


    《七天玩转PolarDB-X开源训练营》第一天笔记

    课程地址:PolarDB-X 开源人才初级认证培训课程-学习中心-阿里云开发者社区 (aliyun.com)

    一,PolarDB-X入门介绍

    1,PolarDB-X发展

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

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

    在这里插入图片描述

    2,PolarDB-X系统架构演进

    在这里插入图片描述

    1,系统再最开始时,使用的是由简单的单DB和本地磁盘组成。

    2,随着技术的发展,对系统的容量以及读写并发的支持和存储规模的扩展有更高的要求。于是利用分库分表的中间件解决系统扩展性的分布式1.0产生。

    3,由于中间件会引入一些新的问题,分布式不断迭代产生了分布式2.0架构,其将上层的分布式层与下层的存储层进行了融合,形成一个一体化的形态。

    3,PolarDB-X的系统架构

    PolarDB-X 采用 Shared-nothing 与存储分离计算架构进行设计,系统由4个核心组件组成:

    在这里插入图片描述

    • 计算节点(CN, Compute Node)

    计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。

    • 存储节点(DN, Data Node)

    存储节点负责数据的持久化,基于多数派 Paxos 协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。

    • 元数据服务(GMS, Global Meta Service)

    元数据服务负责维护全局强一致的 Table/Schema, Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。

    • 日志节点(CDC, Change Data Capture)

    日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容 MySQL Replication 协议的主从复制能力。

    4,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 等。

    二,四种方式部署PolarDB-X

    部署环境及实操地址:跟我学PolarDB-X - 云起实验室

    预备工作:

    步骤一,开始实验之前,需要先创建ECS实例资源。

    步骤二,安装并启动依赖Docker

    • 安装Docker :curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    • 执行命令,启动Docker:systemctl start docker

    方式一,Docker镜像安装PolarDB-X。

    1,拉取PolarDB-X容器镜像:

    docker pull polardbx/polardb-x

    2,运行PolarDB-X容器:

    docker run -d --name some-polardb-x -p 8527:8527 polardbx/polardb-x

    方式二,使用PXD工具一键安装PolarDB-X。

    该方式是使用virtual environment安装PXD工具。

    1,创建并激活虚拟场景。

    python3 -m venv venv
    source venv/bin/activate

    2,升级pip。

    pip install --upgrade pip

    3,安装PXD。

    pip install pxd

    4,部署PolarDB-X。

    方式一:创建一个PolarDB-X数据库,其中GMS、CN、DN和CDC节点个数为1。

    pxd tryout

    方式二:创建一个PolarDB-X数据库,指定CN、DN和CDC节点个数为1以及版本为latest。

    pxd tryout -cn_replica 1 -cn_version latest -dn_replica 1 -dn_version latest -cdc_replica 1 -cdc_version latest

    5,登录PolarDB-X数据库。

    mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456

    方式三,使用Kubernetes安装PolarDB-X。

    创建一个简单的Kubernetes集群并部署PolarDB-X Operator ,使用Operator部署一个完整的PolarDB-X集群:

    1,安装kubectl。

    a,下载kubectl文件。

    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

    b,赋予可执行权限。

    chmod +x ./kubectl

    c,移动到系统目录。

    mv ./kubectl /usr/local/bin/kubectl

    2,安装minikube

    下载并安装minikube

    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    sudo install minikube-linux-amd64 /usr/local/bin/minikube

    3,安装Helm3

    a,下载Helm3。

    wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/helm-v3.9.0-linux-amd64.tar.gz

    b,解压Helm3

    tar -zxvf helm-v3.9.0-linux-amd64.tar.gz

    c,移动到系统目录

    mv linux-amd64/helm /usr/local/bin/helm

    4,使用minikube创建Kubernetes集群

    a,新建账号galaxykube,并将galaxykube加入docker组中。minikube要求使用非root账号进行部署,所有您需要新建一个账号。

    ``useradd -ms /bin/bash galaxykube usermod -aG docker galaxykube

    b,执行如下命令,切换到账号galaxykube。

    su galaxykube

    c,执行如下命令,进入到home/galaxykube目录。

    cd

    d,执行如下命令,启动一个minikube。

    minikube start --cpus 4 --memory 7168 --image-mirror-country cn --registry-mirror=https://docker.mirrors.ustc.edu.cn --kubernetes-version 1.23.3

    e,执行如下命令,使用kubectl查看集群信息。

    minikube kubectl -- cluster-info

    5,部署 PolarDB-X Operator。

    a,创建一个名为polardbx-operator-system的命名空间

    kubectl create namespace polardbx-operator-system

    b,执行如下命令,安装PolarDB-X Operator

    helm install --namespace polardbx-operator-system polardbx-operator https://github.com/ApsaraDB/galaxykube/releases/download/v1.2.1/polardbx-operator-1.2.1.tgz

    c,执行如下命令,查看PolarDB-X Operator组件的运行情况

    kubectl get pods --namespace polardbx-operator-system

    6,部署 PolarDB-X 集群

    a,部署一个PolarDB-X集群,它包含1个GMS 节点、1个 CN节点、1个DN节点和1 个CDC节点。

    echo "apiVersion: polardbx.aliyun.com/v1
    kind: PolarDBXCluster
    metadata:
    name: quick-start
    annotations:
    polardbx/topology-mode-guide: quick-start" | kubectl apply -f -

    b,查看创建状态。

    kubectl get polardbxcluster -w

    c,删除PolarDB-X集群。

    kubectl delete polardbxCluster

    方式四,源码编译安装PolarDB-X。

    1,安装git。

    yum -y install git

    2,下载源码。

    git clone https://github.com/ApsaraDB/PolarDB-X.git

    3,进入PolarDB-X目录。

    cd PolarDB-X

    4,编译

    make

    5,运行PolarDB-X。

    ./build/run/bin/polardb-x.sh start

    6,执行如下命令,停止PolarDB-X。

    ./build/run/bin/polardb-x.sh stop

    PS:

    命令语句:

    docker images: 展示本机目前所有的镜像。

    docker ps:将当前正在运行的容器展示。

    docker ps -a :展示所有的容器

    arDB-X`

    4,编译

    make

    5,运行PolarDB-X。

    ./build/run/bin/polardb-x.sh start

    6,执行如下命令,停止PolarDB-X。

    ./build/run/bin/polardb-x.sh stop

    PS:

    命令语句:

    docker images: 展示本机目前所有的镜像。

    docker ps:将当前正在运行的容器展示。

    docker ps -a :展示所有的容器

    具体的PolarDB-X数据库如何使用及其体验,可以自己到学习网站参考实验手册进行完成。

  • 相关阅读:
    java基于springboot在线学习教育网站管理系统附代码段
    鸿蒙OS应用开发初体验
    JavaScript WebGL 三维相关概念
    多伦多 Pwn2Own 大赛首日战报!三星 Galaxy S23 被黑两次
    循环掌控:深入理解C语言循环结构,高效实现重复性任务
    ES 查询用法
    java VR全景商城免费搭建 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城
    MySQL执行计划
    软件测试|Python Faker库使用指南
    FreeRTOS创建任务-简要
  • 原文地址:https://blog.csdn.net/qq_44085437/article/details/126351501