本文主要是介绍《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数据库如何使用及其体验,可以自己到学习网站参考实验手册进行完成。
这篇关于《PolarDB-X学习》第一讲的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!