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

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
SQL 关系型数据库 Docker
开源PolarDB-X部署体验:挑战与反思
本文记录了部署开源PolarDB-X的体验及挑战。PolarDB-X是一款云原生分布式SQL数据库,具备高性能和可扩展性。部署中遇到的问题包括依赖冲突、文档不清晰及官方文档无法访问等。建议改进文档准确性、增强错误提示和支持、简化部署流程,如采用Docker简化快速入门。尽管部署未成功,但仍对PolarDB-X未来发展持乐观态度。
|
2月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB 开源部署体验评测
PolarDB 开源部署体验评测
64 3
|
11天前
惊世骇俗!开源 PolarDB-X 部署安装大冒险,全程心跳与惊喜不断!
【9月更文挑战第8天】作为技术爱好者的我,近期成功完成了开源 PolarDB-X 的部署安装。尽管过程中遇到不少挑战,但通过精心准备环境、下载安装包、配置参数及启动服务等步骤,最终顺利实现部署。本文将详细介绍部署全过程及可能遇到的问题,为您的 PolarDB-X 探索之旅提供参考与启发,希望能让大家在技术海洋里畅游得更加顺利!
33 2
|
13天前
|
Kubernetes 关系型数据库 分布式数据库
PolarDB在混合云环境下的部署策略与挑战
【9月更文挑战第5天】随着云计算技术的发展,混合云成为众多企业首选,以满足数据管理和业务扩展需求。阿里巴巴自研的PolarDB是一款高性能云原生数据库,在混合云中可通过多种方式部署,如Kubernetes,实现资源弹性伸缩及自动化管理,并支持跨平台数据同步与金融级高可用性。然而,混合云环境下也带来了复杂性、成本优化及运维难度等挑战,企业需综合考虑平台兼容性、安全性和资源投入比例等问题。
44 5
|
1月前
|
Kubernetes 关系型数据库 分布式数据库
PolarDB在混合云环境下的部署策略与挑战
随着云计算的发展,混合云成为企业优选架构。PolarDB作为阿里云原生数据库,具备高可用、水平扩展和HTAP能力,在混合云中通过多种部署方式(如Kubernetes)实现资源弹性管理与数据实时同步。面对复杂性、成本优化及运维挑战,PolarDB提供解决方案确保数据安全与业务连续性。
53 4
|
1月前
|
存储
惊世骇俗!开源 PolarDB-X 部署安装大冒险,全程心跳与惊喜不断!
【8月更文挑战第8天】作为技术爱好者的我近期完成了开源PolarDB-X的部署安装,过程虽具挑战,但终获成功。现分享全过程:先确保服务器配置达标(内存、存储及网络)。接着下载官方最新稳定版,解压至指定目录。配置参数需细心调整以适配需求,如设置端口及数据路径。最后启动服务并留意可能的问题,如下载中断或配置错误等,可通过日志排查解决。部署完成后,见到服务正常运行时的喜悦难以言表。尽管PolarDB-X部署稍显复杂,但按部就班即可达成。期待与大家共同探讨学习!
89 1
|
23天前
|
监控 Oracle 关系型数据库
PolarDB 在多云环境下的部署与管理
【8月更文第27天】随着云计算的普及和发展,越来越多的企业开始采用多云策略来分散风险、优化成本并提高业务灵活性。阿里云的 PolarDB 是一种兼容 MySQL、PostgreSQL 和 Oracle 的关系型数据库服务,它提供了高性能、高可用性和自动化的管理功能。本文将探讨如何在多云环境下部署和管理 PolarDB 实例,并提供一些实用的代码示例。
42 0
|
2月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之实例被锁定是什么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
2月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之创建只读实例,在尝试修改数据时遇到了错误,该如何处理
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
30天前
|
Kubernetes Cloud Native 关系型数据库
k8s 部署polardb-x集群
k8s 部署polardb-x集群
109 0