7天突破PolarDB for Postgre 2022版—第一讲 单机本地存储部署实例

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 分享人:棠羽,阿里云智能数据库产品事业部PolarDB产品部内核工程师

7天突破PolarDB for Postgre 2022版

第一讲  单机本地存储部署实例


分享人:棠羽,阿里云智能数据库产品事业部PolarDB产品部内核工程师

视频地址:https://developer.aliyun.com/learning/course/992/detail/14958


目录

一、PolarDB架构解读

二、快速上手:PolarDB基于单机本地存储部署

三、Q&A


正文:

一、PolarDB架构解读


PolarDB PostgreSQL(以下简称 PolarDB)是阿里云自主研发的云原生数据库产品,兼容Postgre,采用基于共享存储的存算分离架构。


  • 计算-存储分离:是指PolarDB的计算节点和存储节点是分离的,可以分别独立的横向扩展;
  • 共享存储:是指所有计算节点有着各自独立的Cpu和内存资源,但共享使用底层磁盘存储节点,PolarDB存储接口支持多种磁盘存储,包括本地文件系统、跨机房跨区域的分布式文件系统。

     image.png

PolarDB基于共享存储的存算分离架构


本篇从最简单的本地磁盘存储讲解部署PolarDB的实例。

文档参考:https://github.com/ApsaraDB/PolarDB-for-PostgreSQL


二、快速上手:PolarDB基于单机本地存储部署


以下是基于单机本地存储编译PolarDB源码并启动一写多读实例的步骤,推荐使用Docker容器方式部署PolarDB,可以减少手动环境配置,简化部署流程。


安装Docker


1、Docker环境安装要求及官方文档:


   CPU架构为AMD64/ARM64

   可用内存4GB以上

   已安装Docker


  • Ubuntu:在 Ubuntu 上安装 Docker Engine

(文档:https://docs.docker.com/engine/install/ubuntu/

  • Debian:在 Debian 上安装 Docker Engine

(文档:https://docs.docker.com/engine/install/debian/

  • CentOS:在 CentOS 上安装 Docker Engine

(文档:https://docs.docker.com/engine/install/centos/

  • RHEL:在 RHEL 上安装 Docker Engine

(文档:https://docs.docker.com/engine/install/rhel/

  • Fedora:在 Fedora 上安装 Docker Engine

(文档:https://docs.docker.com/engine/install/fedora/

  • macOS(支持 M1 芯片):在 Mac 上安装 Docker Desktop,并建议将内存调整为 4GB 以上

(文档:https://docs.docker.com/desktop/mac/install/


2CentOS安装Docker步骤:


a.移除已有的docker版本;

sudo yum remove docker \

docker-client\

docker-client-latest\

docker-common\

               docker-latest \

docker-latest-logrotate \

docker-engine


b.将官方Docker仓库添加到配置中;

sudo yum install -y yum-utils

sudo yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo


c.通过yum安装Docker环境;

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin


d.启动Docker守护进程。

sudo systemctl start docker


3、Ubuntu下安装Docker步骤:


a.移除已有的docker版本;

sudo apt-get remove docker docker-engine docker.io containerd runc


b.通过apt安装必要的工具;

sudo apt-get update

sudo apt-get install \

ca-certificates \

curl \

gnupg \

lsb-release


c.通过curl添加GPG公钥;

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo gpg --dearmor -o/etc/apt/keyrings/docker.gpg


d.将docker的软件源仓库添加到apt软件源中;

echo \

"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \

 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


e.最后通过apt命令安装docker

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin


4macOS和Windows用户安装Docker:


对于macOS和Windows用户,需要安装Docker Desktop,并开启虚拟化功能。以macOS为例,根据芯片是intel或者苹果进行下载安装;

image.png

如果已完成安装Docker Desktop,需要将docker的内存调整到4GB及以上。

image.png

然后登录环境检查docker版本号

docker -v


编译环境准备


以下两种方式任选一种即可:

  • 基于PolarDB Docker开发镜像:无需手动配置环境,较为简单,该方式可以在 Docker 容器中编译并部署实例
  • 基于CentOS 7系统或容器:适合对开发环境做更多定制。


1、基于 PolarDB Docker开发镜像


a.PolarDB Docker镜像准备

DockerHub上提供了构建完毕的镜像polardb/polardb_pg_devel:centos7可供直接使用(支持x86_64 和ARM 架构)

镜像地址:https://hub.docker.com/r/polardb/polardb_pg_devel/tags


b.编写Dockerfile

阿里云提供了构建上述开发镜像的 Dockerfile,从CentOS7官方镜像开始构建出一个安装完所有开发和运行时依赖的镜像,手动构建镜像Dockerfile文件。

Dockerfile地址: https://apsaradb.github.io/PolarDB-for-PostgreSQL/zh/guide/customize-dev-env.html#自行构建开发镜像

将Dockerfile内容复制到一个文件内(假设文件名为 Dockerfile-PolarDB)后,使用如下命令构建镜像:

docker build --network=host \

   -t <image_name> \

   -f Dockerfile-PolarDB .

注:请按需替换 <image_name> 内的 Docker 镜像名称。


c.搭建开发环境

从Github上拉取PolarDB源代码,PolarDB for PostgreSQL 的代码托管于GitHub上,稳定分支为POLARDB_11_STABLE。如果因网络原因不能稳定访问GitHub,则可以使用代理或访问Gitee国内镜像。

sudo yum install -y git    

git clone -b POLARDB_11_STABLE https://github.com/ApsaraDB/PolarDB-for-PostgreSQL.git


d.启动Docker容器

docker run -it --v <src_to_polardb>:/home/postgres/PolarDB-for-PostgreSC

--cap-add=SYS_PTRACE--privileged=true  --name <container_name> <image_name> bash

注:

请按需替换<>内的部分:

1.PolarDB for PostgreSQL的源码路径

2.将要启动的Docker容器名称

3.自行构建或DockerHub上的PolarDB开发镜像名称

通过bash进入容器后,进入源码目录,为用户postgres获取源代码目录权限,然后编译实例:

cd /home/postgres/PolarDB-for-PostgreSQL

sudo chown -R postgres:postgres3 ./

./polardb_build.sh

部署完成后,进行简单的实例检查,确保部署正确:

$HOME/tmp_basedir_polardb_pg_1100_bld/bin/ -P 5432 -h 127.0.0.1 -c  'select version();'

image.png

结果显示PostgreSQL 11.9(POLARDB 11.9),说明成功编辑部署PolarBD。

PolarDB 各集群形态编译部署


如上是基于本地单节点实例,也可以编译如下实例类型:


  • 本地单节点实例

1个主节点(运行于5432端口)

./polardb_build.sh


  • 本地多节点实例

1个主节点(运行于5432端口)

1个只读节点(运行于5433端口)

./polardb_build.sh --withrep --repnum=1


  • 本地多节点带备库实例

1个主节点(运行于5432端口)

1个只读节点(运行于5433端口)

1个备库节点(运行于5434端口)

./polardb_build.sh --withrep --repnum=1 --withstandby


  • 本地多节点 HTAP实例

1个主节点(运行于5432端口)

2个只读节点(运行于543315434端口)

./polardb_build.sh --initpx


实例回归测试


  • 普通实例回归测试:

./polardb_build.sh -r -e -r-external -r-contrib -r-pl --withrep --with-tde


  • HTAP实例回归测试:

./polardb_build.sh -r-px -e -r-external -r-contrib -r-pl --with-tde


  • DMA实例回归测试:

./polardb_build.sh -r -e -r-external -r-contrib -r-pl --with-tde --with-dma


2、基于CentOS 7系统或容器


该方式具有root权限的干净的CentOS7操作系统上从零开始,可以是安装 CentOS7的物理机/虚拟机,或者从CentOS7官方Docker镜像上启动的Docker容器


a.建立非 root 用户

PolarDB for PostgreSQL需要以非root用户运行。以下步骤能够帮助您创建一个名为postgres的用户组和一个名为postgres的用户。

注:

如果您已经有了一个非 root 用户,但名称不是 postgres:postgres,可以忽略该步骤;但请注意在后续示例步骤中将命令中用户相关的信息替换为您自己的用户组名与用户名。


b.创建用户组postgres和用户postgres ,并为该用户赋予sudo 和工作目录的权限。需要以root用户执行这些命令。

# install sudo

yum install -y sudo

# create user and group

groupadd -r postgres

useradd -m -g postgres postgres -p ''

usermod -aG wheel postgres

# make postgres as sudoer

chmod u+w /etc/sudoers

echo 'postgres ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers

chmod u-w /etc/sudoers

# grant access to home directory

chown -R postgres:postgres /home/postgres/

echo 'source /etc/bashrc' >> /home/postgres/.bashrc

# for su postgres

sed -i 's/4096/unlimited/g' /etc/security/limits.d/20-nproc.conf


c.切换到postgres用户,进行后续的步骤

su postgres

source /etc/bashrc

cd ~


d.下载PolarDB源代码。

PolarDB for PostgreSQL的代码托管于 GitHub上,稳定分支POLARDB_11_STABLE

sudo yum install -y git

git clone -b POLARDB_11_STABLE https://github.com/ApsaraDB/PolarDB-for-PostgreSQL.git


e.依赖安装

源码下载完毕后,使用sudo执行源代码根目录下的依赖安装脚本install_dependencies.sh自动完成所有的依赖安装。如果有定制的开发需求,请自行修改install_dependencies.sh

cd PolarDB-for-PostgreSQL

sudo ./install_dependencies.sh


f.编译部署

依赖安装完毕后,刷新用户配置,开始编译部署:

source /etc/bashrc

./polardb_build.sh

部署完成后,进行简单的实例检查:

$HOME/tmp_basedir_polardb_pg_1100_bld/bin/ -P 5432 -h 127.0.0.1 -c  'select version();'


三、Q&A


  1. Q:为什么要卸载原来的DOCKER?

A:重新构建DOCKER,才能修改内存 这个是 Docker 官方文档的步骤,目的应该是确保已经安装过 Docker 的机器安装最新的 Docker。


  1. Q:怎么调docker的内存?

A:Linux 下的 docker 默认不限制内存。


  1. Q:clone失败怎么办?

A:https://gitee.com/mirrors/PolarDB-for-PostgreSQL,可以试试这个镜像网站。


  1. Q:说明网站URL是什么?

A:https://apsaradb.github.io/PolarDB-for-PostgreSQL/zh


  1. Q:HTAP是什么?

A:1、Hybrid Transaction and Analytical Process;2、OLTP OLAP  HTAP就是 OTLP的单一数据系统的OLAP的业务操作。


  1. Q:机器的配置有要求吗?

A:个人电脑应该基本都可以满足要求。


  1. Q:没有ubuntu的吗?

A:Ubuntu 上直接使用这个镜像即可。这个镜像只是基于 centos7 镜像,但是可以在其它 Linux 发行版上运行的。


  1. Q:sudo是指Super User do吗?

A:1、这是个常见的误解,sudo 是 substitute user do 而非 super user,各个厂家的文档,包括红帽,都是sudo (super user do) 。


  1. Q:这个把pg改成polardb-for-postgres主要是改哪部分的内容?索引或者说并发这块有没有动?

A:可以看一下 PolarDB 的功能特性总览,地址:https://apsaradb.github.io/PolarDB-for-PostgreSQL/zh/architecture/#%E7%89%B9%E6%80%A7%E6%80%BB%E8%A7%88


  1. Q:Polardb 在云下用的多吗?

A:云下有不少国企事业单位在使用的。


  1. Q:PolarDB 是完全开源吗?

A:阿里云在2021年5月29日正式开放关系型数据库 PolarDB for PostgreSQL的源代码,目前内核代码已完全开源。


  1. Q:不用装postgrel这个自动就集成进去了吧?

A:PostgreSQL 11 是 PolarDB for PostgreSQL 的子集。


  1. Q:有人没有卸载自己的docker直接跑的吗?

A:卸载旧的docker是因为系统源里面的docker是四五年前的版本,不稳定,而且有些功能和现在的版本不兼容。


  1. Q:polardb for pg 采用基于 Shared-Storage,多计算,单存储,这样的架构还需要WAL 在rw和ro的传输么?

A:由于 rw 和 ro 共享存储了,那么 rw 和 ro 从共享存储上读取到的 WAL 是一致的了。ro 通过回放从共享存储上读到的 WAL 就可以保持内存状态同步了。


  1. Q:PolarDB 底层就是PG吧?

A:1、底层就是pg ;2、基于 PG 11 开发。社区版 PG 基于 shared-nothing 架构,PolarDB 把它搬上了云,底层换成了 shared-storage 架构,方便存储和计算在云上弹性伸缩,这里面需要解决很多问题。可以看一下官方文档中的架构解读了解了解:https://apsaradb.github.io/PolarDB-for-PostgreSQL/zh/architecture/#%E7%89%B9%E6%80%A7%E6%80%BB%E8%A7%88


  1. Q:阿里官方文档说100%兼容mysql、Postgre SQL。这两个是两种数据库吧?

A:是的。本次训练营针对的是PolarDB for PostgreSQL,100%兼容PostgreSQL。除PolarDB for PostgreSQL之外,阿里云还开源了PolarDB-X云原生分布式数据库,这款产品是高度兼容MySQL的。


  1. Q:镜像名字可以随便取吗,后面是否有对应名字的地方?

A:后面运行容器的时候需要指定这个image。


  1. Q:进到容器里没有pgsql的服务?

A:需要下载和编译安装的,应该是想让大家下载最新的polardb版本。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
10月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课14 纯享单机版
PolarDB不仅支持基于“共享存储+多计算节点”的集群版,还提供类似开源PostgreSQL的单机版。单机版部署简单,适合大多数应用场景,并可直接使用PostgreSQL生态插件。通过Docker容器、Git克隆代码、编译软件等步骤,即可完成PolarDB单机版的安装与配置。具体操作包括启动容器、进入容器、克隆代码、编译软件、初始化实例、配置参数及启动数据库。此外,还有多个相关教程和视频链接供参考,帮助用户更好地理解和使用PolarDB单机版。
513 1
|
10月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课13 单机版转换为集群版
本文介绍如何将“本地存储实例”转换为“共享存储实例”,依赖于先前搭建的实验环境。主要步骤包括:准备PFS二进制文件、格式化共享盘为pfs文件系统、启动pfsd服务、停库并拷贝数据到pfs内、修改配置文件,最后启动实例。通过这些操作,成功实现了从本地存储到共享存储的转换,并验证了新实例的功能。相关系列文章和视频链接提供了更多背景信息和技术细节。
246 0
|
9月前
|
存储 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:单机性能优化篇
日前,阿里云PolarDB云原生数据库以超越原记录2.5倍的性能一举登顶TPC-C基准测试排行榜,以每分钟20.55亿笔交易(tpmC)和单位成本0.8元人民币(price/tpmC)的成绩刷新TPC-C性能和性价比双榜的世界纪录。 每一个看似简单的数字背后,都蕴含着无数技术人对数据库性能、性价比和稳定性的极致追求,PolarDB的创新步伐从未止步。「阿里云瑶池数据库」公众号特此推出「PolarDB登顶TPC-C技术揭秘」系列硬核文章,为你讲述“双榜第一”背后的故事,敬请关注!
登顶TPC-C|云原生数据库PolarDB技术揭秘:单机性能优化篇
|
10月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课12 集群版转换为单机版
本文介绍了如何将“共享存储实例”转换为“本地存储实例”,实验环境依赖于Docker容器中的loop设备模拟共享存储。具体步骤包括准备本地目录、停库、拷贝数据、修改配置文件并启动实例。通过这些操作,可以实现从共享存储到本地存储的平滑转换。相关系列文章详细记录了PolarDB RAC一写多读集群的搭建与管理,提供了丰富的实战经验。
214 3
|
11月前
|
关系型数据库 MySQL 分布式数据库
[PolarDB实操课] 05.通过源码部署PolarDB-X标准版
本课程介绍如何通过源码部署PolarDB-X标准版,涵盖基于Paxos的MySQL三副本工作原理和技术特点。主要内容包括: 1. **Paxos三副本工作原理**:讲解Leader和Follower节点的角色及数据同步机制。 2. **技术特点**:强调高性能、数据不丢失(RPO=0)和自动HA切换。 3. **源码部署步骤**:详细演示从编译生成RPM包到启动DN节点的过程,包括配置my.cnf文件和初始化数据库。 4. **高可用体验**:通过三台机器模拟三副本集群,展示Leader选举和故障转移机制,确保数据一致性和服务可用性。
391 1
|
11月前
|
关系型数据库 编译器 分布式数据库
PolarDB实操课] 04.通过源码部署PolarDB-X企业版
本次课程由PolarDB开源架构师王江颖分享,详细介绍了通过源码部署PolarDB-X企业版的全过程。主要内容包括: 1. **编译基础** 2. **使用源码编译部署PolarDB-X企业版** 3. **演示实例**:通过阿里云ECS进行实际操作演示,从创建用户、赋予权限到最终启动并连接PolarDB-X数据库,展示了完整的部署过程。 4. **总结**
318 0
|
11月前
|
弹性计算 关系型数据库 PolarDB
[PolarDB实操课] 03.使用PXD部署PolarDB企业版和标准版
本课程详细介绍了如何使用PXD工具部署PolarDB-X企业版和标准版。主要内容包括: 1. **PolarDB-X企业版与标准版的区别**:讲解了两者的架构特点、性能差异及适用场景。 2. **集群机器上安装Docker环境**:指导用户在阿里云ECS实例上安装Docker,确保后续部署顺利进行。 3. **部署机上安装PXD**:介绍如何配置密钥连接、安装Python3并激活虚拟环境,最后安装PXD工具。 4. **创建并部署PolarDB-X**:通过编写拓扑文件(YAML格式),一键拉起PolarDB-X集群,并验证部署状态。
231 0
|
Kubernetes 关系型数据库 分布式数据库
PolarDB在混合云环境下的部署策略与挑战
【9月更文挑战第5天】随着云计算技术的发展,混合云成为众多企业首选,以满足数据管理和业务扩展需求。阿里巴巴自研的PolarDB是一款高性能云原生数据库,在混合云中可通过多种方式部署,如Kubernetes,实现资源弹性伸缩及自动化管理,并支持跨平台数据同步与金融级高可用性。然而,混合云环境下也带来了复杂性、成本优化及运维难度等挑战,企业需综合考虑平台兼容性、安全性和资源投入比例等问题。
304 5
|
Kubernetes Cloud Native 关系型数据库
k8s 部署polardb-x集群
k8s 部署polardb-x集群
843 11
惊世骇俗!开源 PolarDB-X 部署安装大冒险,全程心跳与惊喜不断!
【9月更文挑战第8天】作为技术爱好者的我,近期成功完成了开源 PolarDB-X 的部署安装。尽管过程中遇到不少挑战,但通过精心准备环境、下载安装包、配置参数及启动服务等步骤,最终顺利实现部署。本文将详细介绍部署全过程及可能遇到的问题,为您的 PolarDB-X 探索之旅提供参考与启发,希望能让大家在技术海洋里畅游得更加顺利!
428 2

热门文章

最新文章