《PolarDB forPG 基础入门》|学习笔记

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 快速学习《PolarDB forPG 基础入门》。

开发者学堂课程【PolarDB for PostgreSQL 入门:《PolarDB forPG 基础入门》】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/813/detail/13917


《PolarDB forPG 基础入门》

 

内容介绍

一.架构介绍

二.编译部署

三.集群配置

四.运维管理

五.获取帮助

 

PolarDB forPG 基础入门包含就落地的基础架构的一些讲解,编译部署,配置,运维方面的介绍,如果发现问题,可以来获取帮助。

 

一.架构介绍

1. 分布式集群架构

从这页PPT左边这张图可以看到,pgxc 的典型的架构图,ptxc 是 pg 的一个分布式的版本,也是最重要的一个分布式版本之一,那么现在国内的像阿里,腾讯,都是在用类似于这样的一个架构来做这种分布式,包含几个角色。

cn 角色,另外就是他的第一人角色 gtm 的角色,而 cn 是接受用户的业务请求,里边会包含全局的,会根据业务请求到各个地上去获取数据,把数据获取回来以后,把数据再返回给客户,虽然不是完全基于 bxc 开发的分布式。很多的pxc 的组件和它的一些思想是会用到的。

 image.png

可以看到右边这张图,系统里面也包含了 cn,也包含了这个 datao,dn,包含事物相关的 gtm 相关的一些组件,在这种情况下,整个集群的管理,我们采用 pgxc 的 ctrl 的组件来进行集群的一些管理。

从运维和管理这个角度来看,就不需要自己开发。

用 pg cron 的这个组件,来做群的一些心跳的管理,会定期调用 pgxc ctl 进行主备切换,故障检测这样的动作,另外对于底层的dn节点或者 cn 节点,它的控制使用的是pg原声的.而在最为面为了便于用户的使用和开发。开发了 one key等脚本,针对 doc 环境开发脚本,便于用户更好的调用 pgxc ctl,便于更好的控制。

虽然现在 cn 和共同存在,但后期可能会进行 cdn 的同一合一 ,Gtm 和主 cn 的合一。GTX 的是逻辑时钟,不需要像其他一样传递很多数据,所以和 cn 和一可能会更加合适。

目前开源主要是部分的 cn, GTM 代码保留。

2. 高可用架构

左边和右边的两个分别是三套集群,三套集群可能部署在不同的区域,左边这套可以看到是存在 cn dn,cn 和 dn 是支持储备的。

储备的方式包含几种。第一种就是 pg 原生的产生留复制的方式进行配置储备,扩展三副本的方式准备,不同的区域的b 之间可以配置双向逻辑复制的这样的储备的关系。

双向逻辑复制的特点是什么?可以在任意的节点上进行写请求,那么会不会把企业请求同步到复制组上的任何一个节点,当然现在不完善的地方可能是冲突情况下的一些检测。这方面可能需要客户自己来控制,逻辑复制。

有一个更好的特点是什么呢?

可以很容易的过滤日志,在跨数据中心的这种场景下

所有日志不需要同步到其他任务中心,有一些不重要的表或者操作可以不用同步到任务中心,数据量会减少,在进行跨数据中心的情况下此做法是很有意义的。

现在 dn 中的流复制和三副本已经开源出来,后面会开源其他的一些相关分布式能力,另外包括逻辑复制可用等其他方式进行相关开源,Cn 和 dn 步支持高复制可用能力。

 image.png

 

二.编译部署

下面介绍一下编译和部署这部分,首先大家如果要使用,可以到开源网站上去先去查看。

1. 开源网站

可以看这个 code 里面,点绿色的图标,通过b的方法可以把代码拷贝到我们的自己的服务器上,进行编辑和修改。

 image.png

也可以看到其他部分,star 可以对网站进行打星。收藏地址可以更加容易找到网站。

通过 git clone 命令可以将代码下载进入程序。

下载完成:

可以观察到 cloud 布局,调用.sh 可以进行源码编译。

可以更容易一键式编译

2.编译

 image.png

面进行演示,观察编译脚本进行如何变化,首先可以看到 deploy,verify,debud 相关参数

image.png

按照此种编译方式后会将程序放入相关的安装路径下。可以选择增加参数,默认编译 deploy 版本,如果想要编译其他版本可以在其后面加入相关参数即可。

编译的调用有 make install 过程。

 image.png

另外也会存在一些其他类组件的编译

 image.png

image.png

此时数据正在更新,可以切换到目录下查看数据是否更新完成。

二进制已经更新,放到指定目录下。

image.png

此时更新完成

3.三种部署方式

(1)一键式部署

为了方便用户使用,只要用户调用此方式脚本可直接使用。会默认生成三副本环境前提需要设置环境依赖和系统配置

(2)Docker 部署

可以使用docker命令生成环境 Docker 生成三副本环境

(3)自定义安装

image.png

4.环境依赖设置

新系统需要配置依赖包、环境变量、互信

安装依换包(Centos):

Ssudo yum install bison flex libzstd-devel libzstd zstd cmake openssl-devel protobuf-devel readline-devel libxml2-devel libxslt-devel zlib-

devel bzip?-devel 1z4-devel snappy-devel python-devel

配置环境变量(打开一/bashrc,新增 PATH 和 LD.LIBRARY_PATH 路径设置):

s vi -/.bashrc

export PATH="/home/michacyw/polardb/polardbhome/bin:SPATH'

export LD_LIBRARY_PATH='/home/michael.yw/polardb/polardbhome/lib:SLD_LIBRARY_PATH'

S source ~/.bashro

配置互信

S ssh-copy-id michael.yw@11.164.110.83

S ssh-copy-id michael yw@11.164.92.86

演示:

image.png

查看命令,输入密码,查看环境变量设置,需要修改 PATH,此时已经将自己的环境变量加入,加入相关环境命令设置,在安装目录下寻找该程序,否则可能寻找不到,比如系统有多套 pg 环境,可以通过其方式修改环境。

用户名可以修改成自己的用户名:

image.png

image.png

将 key 拷贝使得多个机器进行互信。

建立互信的时候,本机 IP 也要输入一下,本机也要建立互信,这样才能将互信进行打通。

此时没有显示执行成功的原因是因为已经安装过一次,所以不再显示执行成功。

此时可以调用脚本

image.png

One key 脚本在程序顶层脚本上,此脚本加入一个参数 all,此时可以一键将所有信息全部安装上。会自动实现编译过程,不需要担心。

One key 会执行一段时间,此时介绍 one key 原理:

包含很多安装部署的相关步骤,all 相当于所有部署的集合,如果对集群相关命令不是很了解,可以通过此文件进行查看用法。

image.png

在此中可以进行相关 build 调用,进行编译,编译成功后创建目录存相关的配置文件。调用 pgCil,存在 prepare 参数会生成各种各样的模板,Stand alone 是单机模板,硅胶模板生成进入此文件里,可以打开此文件进行查看参数的使用情况。

image.png

下面的步骤分别使用了模板进行相关部署。是相当于把刚才安装好的部署编译到各个程序上,之后会将系统部署进行clean,clean 是一个相对危险的动作,会算出数据,所以在使用之前应该小心。Init 相当于调用 innate 数据创建启动集群。deploy 急用管理可以调用 all 也可以调用 cn。最后调用 minort 查看集群部署是否成功.现在节点已经启动成功。可以认为此环境是执行成功的。

image.png

可以查到进程是成功的主节点,第一个备节点,第二个备节点,可以查看到这些节点都是启动的节点内部的那种都是成功的。

连接 Psol 命令,查看集群状态。查看两者之间如何传递数据。查看传递数据之间的位置是如何的,发现回放位置,传输位置都是一致的,现在相当于两个节点是同步的,两个状态是正常的。

image.png

通过视图可以查看到三副本的状态,会查看到默认集群是存在一个组接的另外两个是 follower。三副本还有其他角色,现如今默认是这两个集群。

(1)一键式部署

一键式部署

./onekey.sh all

一键式部署原理

一键式脚本使用说明:Usage:onekey.sh【alllbuild configureldeploy setupldependencies cmlclean]

系统状态检查

查看已安装的 PolarDB 进程:

ps -ef grep polardb

查看复制状态:

psgl -p 10001-d postgres -c'select from pg_stat replication;"

查看 Paxos 角色及状态:

psql-p 10001-d postgres -c"select from polar_dma_cluster_status;

环境清理(会删除数据,慎用)

./onekey.sh clean

一键式部署方式,将其群进行清理,演示其他集群部署情况.

(2)Docker 部署

Docker 环境部署

编译 Docker Image

Ssudo docker build -t polardb-for-postgresql-yw -f./docker/Dockerfile

Ssudo docker images

运行 Docker Image

sudo docker run--name polardb -p 10001:10001-d polardb-for-postgresql-yw :latest

Ssudo docker ps

本地访问 Docker Image:

psql-d postgres -U postgres -h localhost-p 10001

登录 Docker Container:

docker exec -it polardb /bin/bash

Docker 部署原理

首先我们用 docker build 的一个 docker 的镜像,参数是指说写了一个配置文件,用配置文件来 build 环境,镜像的名字就是我的名字,之后可以查看镜像的构建情况,演示怎么运行 docker。

建立后可以查看容器情况,在运行 docker 的时候,包括 docker 内部的端口和外部的端口情况。

查看从外部连接 doctor,查看如何连接实例,另外会。进入进程查看进程在内部与外部部署是否相同。

image.png

准备另一台机器,为了防止进程之间互相干扰。此过程包含14个步骤下载。安装相关依赖的软件包,之后进行相关的系统里面的用户,已经创建包括对 make 的一些配置,最后调用互信的相关的 key。调用 one key 进行集群安装,整个 docker 中已经安装三副本环境,用 one key 默认配置进行实现。后面可以连接进行查看。默认时间较慢。

检查各个步骤完成后显示成功。

image.png

检查成功后的 image。

image.png

我已经之前  run 过一次,可以先 stop 一下之后才能重新 run。经过此时 docker 就启动起来了,启动起来之后,我们还是用刚才的这条命令,即通过Sequel来访问 docker 的环境,我们可以用这条命令看到 docker 的启动状态,现在是用 Sickle 连 docker 连接的用户,使用我们默认给 docker 里面创建的用户链接,连接时访问用户查询语句,查询 docker 内主备状态. 

image.png

再次进入到 Docker 内进行查看,可以看到已经进入 docker 机器内。可以观察到程序和安装的数据都是存在的。 

可以前去查看进程主备进程全部存在,此时 docker 环境已经全部成功.

image.png

(3)自定义部署-多主机流复制环境部署示例

可以自己来定义想要的相关部署参数自己构成想要的一个集群。现在正在演示的是希望在多台机器上形成流复制环境部署而不是默认的环境。

生成默认配置文件(用默认模板)

Stouch $HOME/polardb/polardb_streaming.conf

Spgxc_ctl -c $HOME/polardb/polardb_streaming.conf prepare standalone

修改配置文件(如果搭建2台机器,需要分别指定2台机器 ip)

Svi $HOME/polardb/polardb_streaming.conf

datanodeMasterservers-(11.164.110.83)

datanodeMasterServers=(11 16492 86)

//保证连通性

datanodeRepNum=(需要修改,默认3部分,副本有2个流复制只有一个)

datanodeRepNum=

datanodeSlave Type-(3)

//改成(1)是流复制

A datanodePoHbaEntries-(.92.86/32)

部署集群

pgxc_ctl -c SHOME/polardb/polardb_streaming.conf init all

//调用 init 方法进行部署

查看集群状态

pgxc_ctl -c SHOME/polardb/polardb_streaming.conf monitor all

ps -ef grep polardb

psql -p 10001-d postgres -c"select from pg_stat_replication;"

//通过 monitor 查看系统部署情况,还需查看进程情况,查看主备状态

首先删除原文件(以免产生影响)

image.png

此时文件是存在的,存在以后调用命令,把我们的默认的参数模板的信息加到文件里面来,可以看到它执行成功了,这个时候可以打开文件来查看一下,ok,默认的生成的文件如下:

image.png

Ip 进行修改。

image.png

备机装在此机器上。

datanodeRepNum 需要修改,datanodeSlave Type-(3)

改成(1)是流复制方式。

加入此条信息修改 hpa 方式(若有需要可以加入多条信息)

image.png

使用配置文件尝试启动集群(因被删除,此时内部没有副本相关的集群进程信息)是一个全新的环境,在此环境中准备安装一个流复制,我用的是83这台机器,还有92 ,86机器,可以看到在86的这个机器上没有 PC 进程,结果是正常来说应该是在83上有主机的相关信息,而在86上安装的是备机的相关信息,形成了一套流复制的环境

image.png

 image.png

在对节点进行初始化,看到最终启动,此时查看一下进程,可以看到 master 进程已经装好了,是在这台机器上的,已经启动起来,而86机器也同样再看一下进程,那他的进程也是,此台机器用的是16进程,它的过程可以简单的去看一下状态,比如说看看 Monitor 成功与否,都在运行,ok,另外可以查看进程 ok,流复制状态 ok。

(4)总结

首先建立依赖出三副本,一键式可以直接部署,用 Docker 进行环境部署。另外使用留复制,其他配置可以自定进行部署。

 

三.集群配置

1. 集群配置文件说明

(1)公共配置

(2)DN 配置

DN 公共    DN 主 (master 相关)  

DN 第一个备(slave,包括 IP 地址、端口、相关路径、同步状态、数据路径、日志路径)

DN 第二个备(learne)

(3)分布式配置扩展,及其它 CN、GTM、多 DN 配置

image.png

生成的配置文件在此目录下

image.png

单机模板(默认路径)进程显示路径位置,之后还存在 master、slave 进程相关配置

image.png

配置完成后 DN 节点类似于 PG 节点,

image.png

Pg 本身内部需要配置置很多类型的参数,可以在其内部简单的追加一些类似于 pg 的介质,比如内存,连接数Hbi连接数等都可以进行配置,包括自己的连接文件,也可以在内部进行配置,以上就是单机版的情况。

2. 集群

image.png

集群版现在还不支持,但是它的配置基本上就是这样的,有很多东西其实是比较类似的,就是公共的部分,这里面会用到一些 gtm 相关的一些东西,还有一部分没有进行开源的,我这里配置了三个 datanode,写法如上,用空格将其隔开,分别的名字,部署 IP 地址机器是如何的,分别的端口是怎样的,Master 配置是如何的?还需要配置对应 master的 slave 配置,他的备机也是需要三个配置。存在多个 DN 情况下的一些配置,其他与单机配置情况类似.

 

四.运维管理

1.运维命令

(1)启动所有节点

pgxc_CIT-c SHOME/polardb/polardb_paxos.conf start all

(2)停止所有节点

pgxc_ctl-c SHOME/polardb/polardb_paxos conf stop all

//系统已经启动,需要停止使用 stop all

(3)部置集群及集群管理

pgxc_ctl-c $HOME/polardb/polardb_paxos.conf deploy all

pgxc_ctl-c $HOME/polardb/polardb_paxos.conf deploy cm

(4)集群初始化

pgxc_ctl-c SHOME/polardb/polardb_paxos.conf init all

(5)集群状态检差

//可以通过指定某一个 DN 进行检查(现在只有一个 DN,三副本都会被查看到,当有多个 DN 时,可以指定某一个进行查看),前面start也都是可以指定一个进行查看。

pgxc_ctl -c SHOME/polardb/polardb_paxos.conf monitor all

pgxc_ctl-c SHOME/polardb/polardb_paxos.conf monitor datanode datanode_1

pgxc_ctl-c SHOME/polardb/polardb_paxos.conf healthcheck all

(6)节点 failover

pgxc_ctl-c SHOME/polardb/polardb_paxos.conf failover datanode datanode_1

(7)查看节点配置

pgxc_ctl-c SHOME/polardb/polardb_paxos.conf log var all

pgxc_ctl-c SHOME/polardb/polardb_paxos.conf log var datanodeNames

pgxc_ctl-c SHOME/polardb polardb_paxos.conf show configuration all

(8)集算清理

pgxc_ctl -c $HOME/polardb/polardb_paxos.conf clean all

演示:

只看 datanode 1,只有 datanode 1被打印出

image.png

Start all 所有节点值会被打印出

image.png

查看集群配置参数,可以看到 CN 和节点 m 都是空

image.png

包括模拟一个 lod 参数打印,还有配置信息显示,运维有关信息

image.png 

 

五.获取帮助

1.Readme 及相关文档位置

有架构文档和其他文档导航

在 colud 主页内部显示 Readme 信息,可以查看到在 docker 下如何进行部署系统环境准备,如何调用一键式命令,如何查看系统部署是否成功,通过源码部署场景下如何产生修改配置,启动配置,相关运维,后面还有有关架构相关文档,包括 map,寄宿点介绍。还可以查看到有大量的 issue,有很多大家出现的问题已经得到解决。

2.查看issues 回复,发起新的 issue

可以在网站发起问题,也可以查看和回复其他人发起的问题

image.png

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
12月前
|
运维 关系型数据库 分布式数据库
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(1)
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(1)
329 0
|
12月前
|
关系型数据库 分布式数据库 数据库
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(2)
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(2)
328 0
|
12月前
|
关系型数据库 Linux 分布式数据库
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(3)
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(3)
310 0
|
12月前
|
关系型数据库 分布式数据库 PolarDB
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(4)
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(4)
215 0
|
12月前
|
运维 关系型数据库 分布式数据库
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(5)
《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(5)
237 0
|
12月前
|
存储 SQL 安全
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(二)
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(二)
10313 0
|
12月前
|
存储 SQL Oracle
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(一)
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(一)
|
SQL 关系型数据库 Linux
【PostgreSQL】入门学习笔记(包括安装、环境与参数配置、故障排查以及备份还原等)
以下内容为前几天在备考PostgreSQL入门考试时候做的笔记,经过了全职的两天的奋战与实验,并最终顺利通过了PCA初级认证考试。现在把我学习的笔记分享给大家,文中有对应的思维导图图片可供查看,内容与后面正文文本一致。另外,由于SQL语句部分比较基础,基本上会一门数据库就都会,所以此处部分省略掉不做过多记录了。
303 0
【PostgreSQL】入门学习笔记(包括安装、环境与参数配置、故障排查以及备份还原等)
|
存储 SQL 监控
PolarDB-X 进行 TP 负载测试(三)| 学习笔记
快速学习 PolarDB-X 进行 TP 负载测试。
307 0
PolarDB-X 进行 TP 负载测试(三)| 学习笔记
|
存储 运维 关系型数据库
PolarDB-X 读写分离与 HTAP| 学习笔记
快速学习 PolarDB-X 读写分离与 HTAP。
338 0
PolarDB-X 读写分离与 HTAP| 学习笔记