《PolarDB-X学习》第一讲

2024-03-14 07:10
文章标签 学习 polardb 第一

本文主要是介绍《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学习》第一讲的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/807606

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件