PolarDB for PostgreSQL 有意思吗? 有意思呀

PolarDBforPostgreSQL:特性比较与优化期待

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(共2150人左右 1 + 2 + 3 + 4 +5) 新人直接分配到5群,另欢迎 OpenGauss 的技术人员加入。

08d16e3e7785fd07845343d54d7a6ab3.png

这题目让我想起非诚勿扰电影里面的台词,有意思吗?有意思呀!PostgreSQL 有意思,PolarDB for PostgreSQL 有意思。

cb3036752eb2ec851681066f9d29c6f0.png

大部分在PolarDB for MySQL 有的特性在 PolarDB for PostgreSQL 都可以使用。同时PolarDB for PostgreSQL 有一个开源的版本,也就是线下可以部署,这在整体的生态上是完整的,基于一些金融机构有线上和线下部署的数据同步的需求,那么这样的整体的解决方案对于一些机构来说是完整的,可控的。

68b718217d1aec3f1f8d7f0584363a36.png

从上图可以看到PolarDB for PostgreSQL 的部分在数据同步中,使用了方式是通过内存进行数据同步的方式,通过wal meta queue 从日志中同步化基础数据到Polardb 的从节点。并且将这些信息直接同步到从节点的shared buffer pool 中,同时下面也会将日志同步刷新到磁盘上,如polardb for mysql 一样通过REDO 的日志来进行数据的刷新,通过wal的数据进行从节点的内存的数据的冲刷。

这里注意实线和虚线,数据同步的同步和异步的数据同步的方式。基于这样的形式的数据的,主从节点数据的节点之间的延迟,我们是期待的,理论上比POSTGRESQL RDS 的 主从数据同步应该是要好的多,这样的方式在 POLARDB FOR MYSQL 上是有验证的,延迟有没有,有但是基本上在20ms 内,甚至更低。

所以如果Polardb for PostgreSQL的主从节点之间的数据差异在20ms内,对于读写分离来说,将不需要业务在去考虑这方面的基础架构的设计。

除此之外,我们对于下面的一些特性更加的有兴趣

1  数据冷热分离,在数据库层面上进行自动分层的技术,在数据存储中,最大的成本来源和可以进行削减的成本,大多来自于存储,类似我们这样的企业,数据一定有冷数据库,将几个T的冷数据如果能通过分层技术,下探到 OSS上,那么存储成本会几何级的下降。但具体的实施和方案,还需要更多的了解。因为这样的冷热分离是从物理上操作,而非业务逻辑上的冷热分离。

05235f04825836f2acf2c21d9d16be4c.png

2  节点的增加和替换

这点也是我们对于现有的PostgreSQL 有想法的地方,当然可以增加pgbouncer,但是如果有一个能进行读写分离的插件的代理,那么将是我们最高兴 PostgreSQL 具有的功能,这样花一个POSTGRESQL 的钱得到两个节点,和读写分离的代理,最大化一些只读SQL 的自动和主节点的隔离,省时省力。

对于添加只读节点方面我们在POALRDB FOR MYSQL 也有深刻的体会,快速添加节点,如果是 几个T的从库添加那你就等着吧,但基于POALRDB 的 shared storage 和 内存同步数据的方案,几个T的从节点的添加也是在分钟级别可以获得这个能力,这对于突发的事件,要增加只读节点也是一个得心应手得事情。

b41c0c199ef1e41815e3e38f6cbf4ca3.png

3  内存全局话的设计

这点在POSTGRESQL 里面你需要使用到 POSTGRESQL 16 可以应用此功能,在POLARDB FOR POSTGRESQL 里面,PG14 就已经有了全局内存管理信息的功能,也就是不在有一个collector 来不断的收集各个客户进程里面的变动的数据信息,而是将这些放到整体的内存中来进行管理,对于节省内存来说有好处。

2948a47a0d2c4f16ddf54e20780039db.png

除此之外,还有ePQ 功能,我们希望能通过ePQ功能,让在原有的CPU 数量上,提升性能 50%,当然这些都需要进行测试和验证。

最后,在相关人员的介绍中,相关的硬件中,以及包含了硬件压缩的芯片,可以在数据存储在磁盘时进行硬件压缩和解压缩,预计可以提高数据存储 30%的平均容量。

所以写到这里,我有点期待后续,如果一个PG,更快,更便宜,更能在低版本使用高版本的一些特性和功能,那倒是有点意思。

2d9b33397b36f3e7b3b3b80bfdffbeb9.png

<think>我们正在处理用户的问题:如何使用Docker拉取PolarDB兼容的PostgreSQL镜像。根据提供的引用,特别是引用[1],其中提到了一个特定的镜像:`polardb/polardb_pg_devel:centos7`,这个镜像似乎是用于PolarDB-for-PostgreSQL的开发环境。 用户意图是拉取一个与PolarDB兼容的PostgreSQL镜像。PolarDB是阿里云开源的基于PostgreSQL数据库系统。因此,我们需要拉取PolarDB提供的Docker镜像。 步骤: 1. 确保已经安装了Docker。 2. 使用`docker pull`命令拉取PolarDB的镜像。 根据引用[1],镜像名称为:`polardb/polardb_pg_devel:centos7` 因此,拉取镜像的命令为: ```bash docker pull polardb/polardb_pg_devel:centos7 ``` 拉取完成后,我们可以运行一个容器。引用[1]中给出了运行容器的示例命令: ```bash docker run -d -p 5432:5432 \ -it --cap-add=SYS_PTRACE \ --restart=always \ --privileged=true \ --name polardb \ -v <源码路径>:/home/postgres/PolarDB-for-PostgreSQL \ polardb/polardb_pg_devel:centos7 ``` 注意:这里的`<源码路径>`需要替换为本地主机上的一个目录路径,该目录将用于挂载到容器内的PolarDB源码位置。如果不需要挂载源码,可以去掉`-v`参数。 另外,如果用户只是想要运行一个PolarDB数据库,而不需要挂载源码,可以简化命令为: ```bash docker run -d -p 5432:5432 \ --name polardb \ --restart=always \ polardb/polardb_pg_devel:centos7 ``` 但是,请注意,引用[1]中使用了`--privileged=true`和`--cap-add=SYS_PTRACE`,这些是为了给予容器更多的权限,因为PolarDB可能需要这些权限来运行。所以为了确保容器正常运行,建议保留这些选项。 另外,PolarDB的镜像可能没有设置默认的密码,所以用户可能需要进入容器内部设置密码,或者通过其他方式配置。我们可以参考PostgreSQL官方镜像的做法(如引用[2]和[3])来设置环境变量,但是需要确认PolarDB的镜像是否支持相同的环境变量。 根据引用[3],PostgreSQL官方镜像支持的环境变量有: - `POSTGRES_USER` - `POSTGRES_PASSWORD` - `POSTGRES_DB` 但是,PolarDB的镜像是否支持这些环境变量呢?由于PolarDB是基于PostgreSQL的,所以有可能支持。我们可以尝试在运行容器时设置这些环境变量。 因此,一个更完整的运行命令可能如下: ```bash docker run -d -p 5432:5432 \ -it --cap-add=SYS_PTRACE \ --restart=always \ --privileged=true \ --name polardb \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=your_password \ -e POSTGRES_DB=mydatabase \ polardb/polardb_pg_devel:centos7 ``` 注意:这里我们添加了环境变量来设置用户、密码和初始数据库。 总结步骤: 1. 拉取镜像:`docker pull polardb/polardb_pg_devel:centos7` 2. 运行容器:使用上述带有环境变量的命令(根据需求调整)。 如果用户需要挂载数据卷以持久化数据,可以参考引用[3]中挂载数据卷的做法,例如: - `-v ~/docker/pg_data:/var/lib/postgresql/data` 但是,我们需要确认PolarDB镜像中数据存储的位置。通常,PostgreSQL的数据存储在`/var/lib/postgresql/data`,所以这个挂载点可能同样适用于PolarDB镜像。 因此,加上数据持久化的运行命令: ```bash docker run -d -p 5432:5432 \ -it --cap-add=SYS_PTRACE \ --restart=always \ --privileged=true \ --name polardb \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=your_password \ -e POSTGRES_DB=mydatabase \ -v ~/docker/pg_data:/var/lib/postgresql/data \ polardb/polardb_pg_devel:centos7 ``` 注意:这里挂载了主机上的`~/docker/pg_data`目录到容器的`/var/lib/postgresql/data`。 最后,用户可以通过`psql`连接到这个数据库,使用映射的端口(这里是5432)和设置的用户名、密码。 由于我们引用了引用[1],所以在回答末尾添加引用标识[^1]。 另外,根据系统指令,我们需要生成相关问题。 相关问题可以围绕PolarDB的Docker镜像使用、配置、迁移等。 因此,生成相关问题如下: 1. 如何验证PolarDB容器是否成功运行? 2. PolarDB镜像支持哪些环境变量配置? 3. 如何将现有的PostgreSQL数据库迁移到PolarDB容器中? 4. PolarDB容器中的数据如何备份和恢复? 注意:我们只引用了引用[1],所以只添加[^1]。</think>### 如何使用 Docker 拉取 PolarDB 兼容的 PostgreSQL 镜像 以下是基于阿里云开源的 PolarDB-for-PostgreSQL 镜像的完整操作流程: --- #### **1. 拉取 PolarDB 镜像** PolarDB 官方提供了预构建的 Docker 镜像,执行以下命令: ```bash docker pull polardb/polardb_pg_devel:centos7 ``` 此镜像基于 CentOS 7,包含完整的 PolarDB-for-PostgreSQL 环境[^1]。 --- #### **2. 启动 PolarDB 容器** ```bash docker run -d -p 5432:5432 \ # 映射默认端口 5432 --name polardb \ # 容器名称 --restart=always \ # 自动重启 --privileged=true \ # 授予特权模式 --cap-add=SYS_PTRACE \ # 添加系统权限 -v /your/local/path:/home/postgres/PolarDB-for-PostgreSQL \ # 挂载源码目录 polardb/polardb_pg_devel:centos7 ``` **关键参数说明**: - `-v`:将本地目录挂载到容器内,用于持久化数据或配置文件 - `--privileged` 和 `--cap-add`:PolarDB 依赖系统级权限进行内存管理[^1] --- #### **3. 验证容器运行** ```bash docker exec -it polardb psql -U postgres ``` 连接后执行 SQL 命令(如 `SELECT version();`),应返回包含 `POLARDB` 标识的版本信息。 --- #### **4. 配置数据库(可选)** 若需自定义用户/密码,在启动命令中添加环境变量: ```bash docker run ... \ -e POSTGRES_USER=myuser \ # 自定义用户名 -e POSTGRES_PASSWORD=mypass \ # 自定义密码 polardb/polardb_pg_devel:centos7 ``` --- #### **注意事项** 1. **数据持久化**:务必通过 `-v` 挂载数据目录,否则容器停止后数据丢失 ```bash -v /my/polar_data:/var/lib/postgresql/data ``` 2. **性能优化**:生产环境建议增加资源限制(如 `--memory=4g`) 3. **兼容性**:此镜像完全兼容 PostgreSQL,可直接使用 `psql` 或标准驱动连接 > 通过 Docker 部署 PolarDB 可快速体验分布式特性(如 HTAP 架构),但生产环境需结合阿里云托管服务实现自动扩缩容[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值