《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 <name>

方式四,源码编译安装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 :展示所有的容器

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

猜你喜欢

转载自blog.csdn.net/qq_44085437/article/details/126351501