开发者学堂课程【PolarDB-X 开源人才初级认证培训课程:入门介绍与部署】学习笔记(二),与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1075/detail/15541
入门介绍与部署
内容介绍:
一、PolarDB-X 发展史简介
二、PolarDB-X 产品介绍
三、资源介绍
四、开源 Roadmap
五、四种方式部署 PolarDB-X
三、资源介绍
PolarDB-X 开源之后陆续的往外推出了很多的资源可以让大家来了解或者学习PolarDB-X。这些资源目前包括四个部分。第一个是源码,它是放在 Github 上面的目前是有相关五个仓库都是以来 Galaxy 来打头的。可以去搜一下 Galaxy SQL 来作为这个产品的一个入口,在 Galaxy SQL 这个仓库的 red mi 里面会把其他几个仓库的链接给加入。简单来说Galaxy就是对应刚才架构图里面的 CN 也就是计算节点。Galaxy Engine 对于存储节点 DN 以及 GMS。CDC 就是刚才介绍的 CD 这个组件。Galaxy Kube 就是 keep us operate 这个东西。
第二个部分就是产品和文档网站,可以直接在浏览器里面输入PolarDB-X.COM,这是产品的官网以及一些产品的使用文档。
第三个是知乎的官号。知乎的冠号里面大家可以搜一下PolarDB-X在知乎里面是我们团队维护的一个来重点讲解PolarDB-X的实现原理,还有它的一些源码解读以及数据库领域相关的一些论文阅读。
最后一部分是云起实验室,包括本次训练营的课程,最后课后作业的实操部分也都是在云起实验室进行的。
四、开源 Roadmap
在云栖大会的时候做了第一次开源。在今年三月份的时候做了第二个比较重要的版本的开源。接下来一个目标是6.30会加入更多能力在里面。在9.30的时候会尝试一下去做国产化相关的一些适配。Milestone应该不是一个非常精确的roadmap ,可能会根据当前的一些进展来做调整。大概每三个月发一个版本。
五、四种方式部署 PolarDB-X
下面开始做一些实操。今天是一个入门的课程,能再做后续的一系列实验的前提是能首先将PolarDB-X给部署起来,所以先来讲一下如何将PolarDB-X部署起来。这次的训练营是通过云起实验室,也就是阿里云提供的免费的资源来做一些实验,来体验一下PolarDB-X的各种的部署的方式。包括后面的几节课最终的客户的实操的部分都是通过云起实验室来进行的。下图为PolarDB-X的云起实验室的入口页面。
展示的部分就以实验一里面如何一键部署安装PolarDB-X来做展示的内容。之前可能有些同学是没有操作过或者没有使用过云起实验室的,所以可能对这个环境还不是非常熟悉,所以就直接讲第一课的内容。在云实验室里面直接进行操作,进来这个页面之后,首先要点一下加入这个课程,后续的实验才能做。比如讲的是部署PolarDB-X,就可以点这个课程的第一个实验开始实验。如果之前没有阿里云开发者账号可以注册一个,注册之后登录进来就OK了。注册是免费的,后面做这些实验也是免费的。进来之后就会看到实验室的最开始的一个页面。这个页面左边是它的一些说明部分,比如实验手册就是你要跟着他怎么样去一步步操作就可完成支持这个实验。第二部分是云产品的资源,就是说做这个是要在阿里云提供免费的ECS上来做的,这边会将云产品的资源信息给到你,最后实验报告,做完之后可以写一下这个实验的一些体会收获或者是一些吐槽都行,可以写个实验报告。
现在就来实操一下这个实验。正常看到的应该是进入实验或者开始实验在这个页面的右上角,因为我这边提前已经做过一个测验,所以这边写的是再次实验。就是首先先点一下右上角的这个开始实验,点完之后页面中间这个创建资源灰色按钮,这个时候就变成一个可点击的状态,所以做这个实验的第一步就是要首先创建一下资源。创建资源就是在云上去创建一个免费的ECS的过程,它需要一点时间,这时候需要稍微等一下。这边的资源创建好之后可以看一下左边的实验手册。现在可以将上面这部分给收起来,让手册部分展示得更加清晰一些。
现在资源已经创建出来了,左边是ECS的一些基本信息,大家可以忽略它。右面已经获得了一个连接到ECS的一个Shell的一个窗口,所以刚才在开始之前有同学说是不是门槛比较高,是不是从零开始就可以进行。我说最好有一点Shell的一些常识,这就是原因。就是因为后续的一些实验都是在Shell里面进行操作的,所以如果之前稍微有一些基本的操作,对这个东西有个概念的话会让你觉得这个地方没有那么的陌生或者难用。
下面开始进行实验的部分。创建资源是这个实验的第一部分,创建完成之后会跳转到他的第二部分,就是安装依赖。一共有四种部署方式。第一种可以直接用 Docker来本地跑一个容器。第二部分提供一个一键安装的工具叫 PXD,可以用 PXD 来拉起PolarDB-X 的实例或者叫集群。第三种方式就是用 K8S operator 的一个方式。最后一种是源码编译。首先来体验一下用 Docker 进行 PolarDB-X安装这个过程。首先在机器上安装一下 Docker。如果之前对 Docker 或者 K8S 这些容器不是很熟悉,这里可以作为一个简单了解这些东西的场合。
Docker 如果没什么概念,可以将它简单地理解成他是在机器上跑的一个进程,可以把它想象成是 tomcat 这样的一种东西。应用就是里面的沃尔包,外面的这一层就是 Docker 帮你就本逃不开的,可能就对对应的是Docker可以这么简单的来做一个理解。最后那个汤姆克再加上你的沃尔包跑起来之后是一个进程,它是你的应用。这边就是 Docker 的一些运行师,再加上大镜像那个包最后跑起来是一个完整的进程,它就代表了 PolarDB-X 这个系统。
Docker 安装可能稍微需要一些时间。就稍微等他一下。安装完成来启动条款。启动完毕,这样就是在现在这个 ECS 上面已经成功的抛弃了一个 docker 环境。
下面就来把PolarDB-X给跑起来,docker不管是想跑一个什么样的应用第一步都需要将那个应用所对应的docker镜像给拉到本地。所以它对应的命令就是docker pull,对应镜像的名称,所以先将PolarDB-X的镜像给拉到本地。镜像的获取的过程也是在线进行的,如果镜像比较大,他也需要一些时间,具体时间依赖于镜像大小以及网络的速度。通常在一个生产环境里面,如果是容积化就会有自己本地搭建的镜像仓库来减少拉取镜像时间。
现在PolarDB-X的镜像已经获取完毕了,下一步就是可以将PolarDB-X这个容器给运行起来,还是一样无脑复制左边的教程里面的命令,然后把它给粘贴到右边的窗口里面。简单来看一下这个命令就是启动那个容器就是docker around。容器名字叫做some PolarDB-X。然后这个-p的意思就是将容器内部的这个8527端口映射到宿主机。这样在本机就可以直接通过8527连上那个PolarDB-X这个数据库。后面就是镜像的名称。来启动一下PolarDB-X,PolarDB-X容器的启动过程稍微需要一点点的时间,所以这边就耐心的等待一下。Docker有几个常用的命令,第一个就是docker images,Image加个S他意思就是展示我本机目前所有的镜像。那因为刚才就获取了一个镜像,所以你可以看到在本机目前只有PolarDB-X这么个镜像,它会告诉他的ID是什么,这个镜像是在两周之前打包好的,镜像的大小是1.49个GB,这是第一个命令docker image。第二个是docker ps,如果对Shell的命令比较熟悉,类似于这样的一个命令,就是将当前正在运行的容器进行一个展示,如果你的容器因为各种原因挂了ps是没有的。可以看到当前是有一个容器正在运行的,也就是刚刚启动的PolarDB-X这个集群。如果想看到所有的集群包括已经挂掉的集群,包括已经挂的容器。那么后面可以加一个-a,它就类似于Linux的一个命令这样一个参数就可以将包括已经挂掉的容器也展示出来。包括刚才展示另外一个docker pull和docker run。这些都是Docker里面常用的一些命令。因为PolarDB-X是一个兼容MySQL的这样的一个分布式数据库,所以可以通过MYSQL的Client直接连上PolarDB-X来进行一些常规的操作TDDL或者DML也好。先在本地安装一个MySQL安装好之后来看一下MySQL安装的是8.0这个版本,确认MySQL安装完成之后,我们来通过MySQL的命令连接一下PolarDB-X,可以看到的这个命令就是MySQL连接本地的8527这个端口,用户名是PolarDB-X下划线Root,密码是123456。现在已经可以成功的连接到PolarDB-X。
可以看到通过select version会返回一个版本号,这个跟MySQL是不一样的,首先说明这不是MySQL,他就是连上了一个PolarDB-X这样的一个实例。连接完之后就可以做一些常规的操作,在这个手册里面也给了一些大家基本的,来体验PolarDB-X的一些SQL,比如说第一条SQL可以去从information steamer里面去获取一些系统的元数据的一些信息,比如说这条SQL就是查一下实例里面都有哪些库。它会返回给你目前有两个库都是系统库。第二个命令可以来创建一个自己的数据库名字呢,叫做PolarDB-X example。创建的时候加一个参数就是创建数据库的模式。
这个模式目前有两种方式,一个是Partition,一个是Auto,这里选择auto 。auto就是刚才在讲前面的内容的时候提到的透明水平扩展,那边所谓的透明,这边如果选择Auto,跟分布式相关的一些东西,PolarDB-X会透明的就自动的处理好,这里来创建一下,创建完成之后尝试在里面去建一张表。在这个教程里面建表的时候指明了要用哪个列来进行拆分,拆几个分片,这里就是用ID进行hash的拆分,拆成八个片。未来就证明在透明的这种模式下,也是Auto的这种模式下,可以不用太关心,具体的怎么分,所以将建表语句里面的Partition的部分给去掉来进行一个对比。首先来建一个没有去掉的,接下来再建一个去掉的。没有去掉的那个表名叫Example。去掉了的这边给他叫Example2。两张表现在都创建好了,接下来会有一些插入数据的操作,会发现跟MySQL一模一样,没有什么特殊,这里就不进行了。
接下来有一个没见过的语句叫做show topology from example table name一个表名,它的意思就是展示一下这张表的一个tube的结构,因为在单机里面表一定是在本地存的。在分布式里面的表可能会分成若干个分片,所以这个SQL就是用来展示这张表到底有几个分片的。首先对第一张表Example,也就是说显示地指定了拆分的算法以及拆分的分片的数量这样一张表来进行查看。可以看到它被分成了八个分片。接下来再对刚才没有显示的指定拆分算法和拆分的分片数这样的表,也就是这里的Example2来进行一个突破的展示,会发现他同样的也是被拆成了八个分片,也就是说PolarDB-X可以自动去处理这些分布式的内容,来降低学习和使用门槛。另外一个功能就是前面提到的CDC,如果对MySQL比较熟悉,里面关于bin log有一些指令,比如说他有这样的一个指令来查看当前节点的状态,也就是说目前Binlog已经记录到什么位置了这样一个命令叫做shoe master status,可以看到当前的Binlog是写到了Binlog01这个文件里面,外边已经写到了5698。
可以看一下目前这个Binlog里面都有哪些事件,另外一个命令就是show Binlog event,这个文件From四这个位置之后的都可以来看一下,可以看到它会将后续的一些Binlog的事件都进行解析。这两个命令是跟MYSQL里面的操作是完全一样的,就是它的语法和行为都是完全兼容的,另外一些PolarDB-X独有的一些指令,比如说你想看一下当前这个系统当中DN的节点的情况可以通过这里show Storage这个命令来查看。
他会告诉你当前有两个Stories也是两个DN节点。一个是DN,一个是GMS。如果看他的IP,发现他们是一样的,也就是说当前在容器化的部署的方式的时候是将GMS和DN通过共享一个机电的方式来实现,这个仅限于一体化的容器,也就是刚才的Docker run,容器可以拉几个PolarDB-X这样的方式。DN和GMS是共享的。还有一些其他的命令,这边就不再展示了。现在推出PolarDB-X,这样通过Docker一键拉取在docker run这样的方式,在这台机器上运行了一个PolarDB-X这样一个实例并在里面做一些基本的 SQL 的操作。
最后可以将这个实例给停掉,这个就是 Docker 另外一个常用的命令 docker stop,可以将某个容器给停掉。以上便是第一种部署方式。
接下来再来看一下第二种部署方式,就是通过PXD提供一个一键部署的工具来进行部署,PXD是开发的一个Python的脚本。现在来体验一下。同样参考实验的手册。在Python里面建一个虚拟的环境。建完之后进入这个虚拟的环境,将Python的pip这个工具进行升级。升级完之后Python的环节就准备好了,接下来用pip这个工具来装一下PXD。如果对Python或者是Python的虚拟环境或者pip等这三个东西不是很熟悉的话也没关系,只要无脑的按照这个教程去操作就行了。就是装了一堆依赖,然后做了一个环境,装了一个工具就是这样的。在本地安装好PXD的意见部署PXD工具之后,接下来用教程里面的一个命令叫做PXDtry out,就是我想简单的试用一下命令。创建一个叫做try out,这样的一个PXD实例。
接下来PXD工具就会把创建PolarDB-X所需要的几个镜像CN的镜像和GMS的镜像,再加上CD的镜像进行远程的获取,获取到本地之后再拉起一个PolarDB-X这样一个集群,在这个集群里面是一个CN、一个DN、还有一个GMS和一个CDC。镜像的获取稍微需要一些时间需要稍微等一下。
关于这个实验室还有另外一个功能就是在这个页面的右上方,这里有一个加号,这个加号的意思是我要打开一个。有些情况下,比如说后续的有些实验,可能需要在多个窗口当中进行操作,这个时候就可以点一下这里的加号。比如说在这个时候可以再稍微练习一下刚才学的这个关于Docker的命令。第一个是docker images,查看一下本机所有的镜像,可以看到现在已经有两个镜像了一个叫刚才获取的PolarDB-X,另外一个叫做Galaxy SQL,也就是CN单独的一个景象。Docker ps现在已经没有容器在运行了,加一个-a会发现PolarDB-X刚才创建的那个容器还在,只不过现在已经停止运行了,就是PolarDB-X加一个-a的一个效果。
可以看到现在获取这个新的镜像叫做Galaxy Engine,也就是我们的DN节点所用的一个镜像,如果你对Docker的镜像这个概念比较了解的话,会发现刚才在创建直接用Docker来抛弃PolarDB-X的时候,所使用的是一个Products这个景象。PXD这个工具使用了其他的镜像,其实他们镜像其实是不公平的。所以PXD这个工具依然要再次获取镜像这样的一个操作。目前工具都自动化的把他们给获取掉了。
这个时候再来看一下它创建的进度已经进入了创建GMS节点这么个步骤。这个过程稍微需要一些时间,再稍微等一下,这次之所以用云起实验室来直接进行一个演示,虽然有些部分需要等网络或者其他的操作需要一些时间,但是对于有没有接触过引起实验室的同学来说会有一个比较好的一个感受,自己去上手操作的时候不会对这个环境感觉到陌生。现在GMS已经创建好,它会创建在里面加一些基本的元数据的信息创建账号。做完之后会开始创建DN,DN创建完成之后会进行CN的创建。现在新的DN、CN都创建完了,他会等待整个系统进行Ready这样一个状态。我们再稍微给他一些时间。现在PXD就将try out这样的一个PolarDB-X实例给创建出来了,最后他会说出一句提醒说可以通过这样的命令连接到刚才创建的一个实例。
可以看到 PXD 的创建的一个 PolarDB-X,它的那个系统的账号的密码是随机的,他在这里仅仅提醒一次,所以如果后续还要用的话,可以把这个密码给记下来。现在就通过他给的这个命令就连接到了 PolarDB-X 里面,这个实例跟刚才的容器创建在体验上是一致的,同样可以通过创建一个 Auto 模式的数据库建一些表插入一些数据看一下它的 tube,看一个 Binlog 的信息等等这些操作。同时PolarDB-X还提供另外两种方式,一个是用 K8S 来进行最后源码部署。这两步也比较耗时间,但是按照这教程都是可以完成的。