PolarDB for PostgreSQL 开源产品 FAQ

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 常见问答合集

一、部署使用类


1. 是否有提供docker镜像

官方暂时没有提供docker镜像,但用户可以通过命令一键构建docker镜像。具体参考:

https://github.com/alibaba/PolarDB-for-PostgreSQL#deployment-using-docker-image


2. 默认ssh 端口非22 的时候,如何配置

目前程序中没有针对修改ssh端口的配置,建议将ssh端口修改回默认22


3. 有没有提供相关配置列表,可以跑出一定性能的benchmark结果

暂时没有。不同的硬件下会产生不同的benchmark结果。可以搭建polardb数据库,使用pgbench作为benchamark工具进行性能测试。具体参考:

https://github.com/alibaba/PolarDB-for-PostgreSQL/blob/master/doc/polardb/benchmark.md


4. polardb是否有单点故障(搭建分布式的polardb

没有。通过onekey.sh all或者pgxc_ctl -c $HOME/polardb/polardb_paxos.conf prepare standalone命令部署得到的polardb默认是有三节点部署在同一台物理机器上的。通过将 polardb_paxos.conf配置文件中localhost改为对应的机器ip,就可以避免单点故障。(注意三台机器的ssh需要被打通)

更改文件示例:

datanodeMasterServers=(localhost) # none means this master is not available.
datanodeSlaveServers=(localhost) # value none means this slave is not available
datanodeLearnerServers=(localhost) # value none means this learner is not available

——>

datanodeMasterServers=(Server1 IP) # none means this master is not available.
datanodeSlaveServers=(Server2 IP) # value none means this slave is not available
datanodeLearnerServers=(Server3 IP) # value none means this learner is not available


5. XPaxos是否已经完全开源,包含了一个multi-paxos系统的所有特性

是的,已经开源。参考commit "3b2a3a8cea2a872c0179e8d0ebe50a482420bb0a"


6. 使用pgxc_ctl时报错

使用pgxc_ctl -c $HOME/polardb/polardb_paxos.conf prepare standalone命令时报错

答:需要使用非root用户进行部署。pgxc_ctl会通过scp的方式在多台机器间分发二进制文件等,所以需要对涉及到的机器打通ssh。可以使用ssh-copy-id命令,如"ssh-copy-id username@192.168.2.156"


7. 使用pgxc_ctl时报错

pgxc_ctl -c $HOME/polardb/polardb_paxos.conf init all初始化集群时,报错如下

答: 需要配置环境变量

vi ~/.bashrc
export PATH="$HOME/polardb/polardbhome/bin:$PATH"
export LD_LIBRARY_PATH="$HOME/polardb/polardbhome/lib:$LD_LIBRARY_PATH"

更多内容参考:https://github.com/alibaba/PolarDB-for-PostgreSQL/#previous-preparation


8. PolarDB-for-PostgreSQL的语法兼容性

语法文档 除了https://github.com/alibaba/PolarDB-for-PostgreSQL,还有其它地方有吗?

答:目前版本polardb for postgresql兼容社区postgresql语法,在语法上可以认为和社区postgresql相同。


9. PolarDB-for-Postgresql开源版本目前只支持单机版吗?

是的,现在是复制高可用集群。数据库本身是单机形态。后续会发布集群版,请关注我们的github动态。


二、编译类


1. docker build失败

使用docker build -t polardb-for-postgresql -f ./docker/Dockerfile . 命令报错

[ 80%] [ 80%] Building CXX object Source/CMakeFiles/CMakeLib.dir/cmNinjaUtilityTargetGenerator.cxx.o

Building CXX object Source/CMakeFiles/CMakeLib.dir/cmNinjaNormalTargetGenerator.cxx.o

�[91mg++: fatal error: Killed signal terminated program cc1plus

compilation terminated.

这是编译安装cmake时的报错。可能是由内存不足引起,可以尝试扩大虚拟机内存。

可以google搜索“Killed signal terminated program cc1plus”尝试各种方法来解决。


2. onekey.sh all 编译报错

执行onekey.sh all时,报错:

checking for Python.h... no

configure: error: header file  is required for Python

答:在执行onekey.sh前,需要先安装python


3. gcc 10.2.0编译报错

执行build.sh报错

/root/PolarDB-for-PostgreSQL/src/backend/polar_dma/libconsensus/dependency/easy/src/thread/easy_uthread.c:266:17: error: ‘SIG_BLOCK’ undeclared (first use in this function)

答:这是gcc版本的问题。已经增加了gcc 10版本下的支持。另外在gcc 4.8或者7.2下也可以正确编译。


4. 编译时报错 link error with SSL_* symbols

编译报错如下:

/usr/bin/ld: ../../src/backend/polar_dma/lib//libpolar_consensus_wrapper.so: undefined reference to `CRYPTO_num_locks'

/usr/bin/ld: ../../src/backend/polar_dma/lib//libpolar_consensus_wrapper.so: undefined reference to `CRYPTO_cleanup_all_ex_data'

/usr/bin/ld: ../../src/backend/polar_dma/lib//libpolar_consensus_wrapper.so: undefined reference to `CRYPTO_mem_leaks_fp'

collect2: error: ld returned 1 exit status

make[2]: *** [Makefile:71: postgres] Error 1

make[2]: Leaving directory '/home/ajung/src/PolarDB-for-PostgreSQL/src/backend'

make[1]: *** [Makefile:42: all-backend-recurse] Error 2

make[1]: Leaving directory '/home/ajung/src/PolarDB-for-PostgreSQL/src'

make: *** [GNUmakefile:11: all-src-recurse] Error 2

答: 在编译前需要安装openssl。需要安装的其他内容参考: https://github.com/alibaba/PolarDB-for-PostgreSQL#deployment-from-source-code


5. macOS上,PGSPI函数是在哪个so里面实现的?

PGSPI函数在 src/backend/executor/spi.c 中。属于内核模块。并非编译成so


三、架构类


1. 是否会写一些high-level的设计文档

文档在不断完善补充中。目前已有的可以参考: https://github.com/alibaba/PolarDB-for-PostgreSQL#architecture--roadmap


2. 相对于pg的代码改动点有哪些

polardb会逐步开源新特性。目前已经开源的特性主要包括HA增强(基于paxosHA和基于streamingHA),CTS等特性。欢迎关注后续即将发布的各项增强功能。


3. 后续有计划完整开源吧?想多机、 多DATANODE部署一下

有的,可以看一下roadmap的文档。文档地址: https://github.com/alibaba/PolarDB-for-PostgreSQL#architecture--roadmap


4. 目前开源的版本基本pg哪个版本开发的

基于postgresql 11.2 版本开发


5. 开源版本最大仅支持三个节点的集群吗

可以支持多个副本部署。目前开源的版本本质上是多副本,只有一个计算节点,所以可以在多台机器上部署多个副本,通常三副本就能满足绝大部分场景的可靠性需求。后续会开源集群版本,提供多个计算节点,敬请关注。


6. 这个集群是类似oracle rac 这种share disk的架构吗?

不是的。目前开源版本是单机数据库,提供了多个副本,每个副本使用独立的磁盘,并非shard disk


四、运维操作类

1. autovacuum操作一月被触发一次, 每次触发的时候数据库就慢

autovacuum触发频率可以由配置参数决定。vacuum的目的在于回收page中的dead tuplefreeze transaction xidvacuum时会产生IO,也会对表加ShareUpdateExclusiveLock锁。所以会对数据库有性能影响。

更多原理和细节可以参考官方文档: https://www.postgresql.org/docs/11/runtime-config-autovacuum.html

https://www.postgresql.org/docs/11/routine-vacuuming.html


2. pg12 主从+ patroni2.1 patroni leader 切换之后,pg 主从丢失这个是什么情况?

正常时:

patroni 切换leader 之后, 在执行查看主从命令,不再显示。

原因:

解决patroni leader 故障切换之后,pg 主从也发生了切换。


3. 长事务导致autovacuum不能推进oldest xmin解决方法

需要terminate该长事务。可以使用命令 select pg_terminate_backend($backend_pid);


4. 有什么数据库,对于非固定列的数据,存储与查询还有统计支持比较好的?

可以看下HBase 或者 MongoDB


5. 开源版的polardb支持全文检索吗?性能如何?

全文检索是社区postgresql原生提供的能力,开源版本postgresql for polardb继承了这个能力,但没有进行开发增强。


6. pglogical 插件比原生的逻辑复制有什么优势?

pglogical是一个独立插件,原理与原生的逻辑复制是一样的,pglogical有更加强大的冲突处理能力。具体可以参考:https://www.2ndquadrant.com/en/resources/pglogical/


7. pg 的高可用 在生产环境有在使用pgpool的吗?

pgpool可以使用。也可以看下Patroni是否满足需要。


8. PG性能抖动怎么记录现场?日志记录的执行计划只能看到执行计划突然很慢,1000次只有1次很慢。

可以尝试下auto_explain。具体可以参考 https://github.com/digoal/blog/blob/master/202106/20210621_03.md


9. 阿里云的pg支持btree_gin之类的extension?

支持。


10. postgresql内置的copyfrom函数为什么拷贝效率那么高

copy在多个方面提高了拷贝效率。具体可以参考 https://stackoverflow.com/questions/46715354/how-does-copy-work-and-why-is-it-so-much-faster-than-insert


11. pg vacuum analyze 大表的时候,会写很多wal日志吗

如果vacuum修改了page,就会产生wal日志。产生的日志量取决于对表的修改量大小,跟表的大小并没有直接关系。


12. 备份pg表时,为何主键和sequence 也被备份了

物理备份本来就含了主键和序列


13. 在pg里面,我一个用户要授予对所有数据库只有查询和修改,但是没有删除权限. 这要怎么实现,我现在很多库我不想一个一个库去授权

数据库没有提供内置的功能。可以自行编写脚本来对所有数据库进行授权。授权和撤销可以使用 grantrevoke命令。参考 https://www.postgresql.org/docs/11/sql-grant.html

https://www.postgresql.org/docs/11/sql-revoke.html

 

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
4天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
9天前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
8月前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
459 2
|
5月前
|
存储 Cloud Native 关系型数据库
PolarDB开源:云原生数据库的架构革命
本文围绕开源核心价值、社区运营实践和技术演进路线展开。首先解读存算分离架构的三大突破,包括基于RDMA的分布式存储、计算节点扩展及存储池扩容机制,并强调与MySQL的高兼容性。其次分享阿里巴巴开源治理模式,涵盖技术决策、版本发布和贡献者成长体系,同时展示企业应用案例。最后展望技术路线图,如3.0版本的多写多读架构、智能调优引擎等特性,以及开发者生态建设举措,推荐使用PolarDB-Operator实现高效部署。
279 3
|
5月前
|
SQL 关系型数据库 分布式数据库
PolarDB开源数据库入门教程
PolarDB是阿里云推出的云原生数据库,基于PostgreSQL、MySQL和Oracle引擎构建,具备高性能、高扩展性和高可用性。其开源版采用计算与存储分离架构,支持快速弹性扩展和100%兼容PostgreSQL/MySQL。本文介绍了PolarDB的安装方法(Docker部署或源码编译)、基本使用(连接数据库、创建表等)及高级特性(计算节点扩展、存储自动扩容、并行查询等)。同时提供了性能优化建议和监控维护方法,帮助用户在生产环境中高效使用PolarDB。
1641 21
|
5月前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB开源:云原生数据库的新篇章
阿里云自研的云原生数据库PolarDB于2023年5月正式开源,采用“存储计算分离”架构,具备高性能、高可用及全面兼容性。其开源版本提供企业级数据库解决方案,支持MySQL、PostgreSQL和Oracle语法,适用于高并发OLTP、核心业务系统等场景。PolarDB通过开放治理与开发者工具构建完整生态,并展望更丰富的插件功能与AI集成,为中国云原生数据库技术发展贡献重要力量。
463 17
|
5月前
|
存储 关系型数据库 分布式数据库
PolarDB开源进阶篇:深度解析与实战优化指南
PolarDB是阿里云开源的云原生数据库,采用计算-存储分离架构,结合高性能共享存储与Parallel Raft多副本一致性协议,实现微秒级延迟和卓越性能。本文深入解析其架构设计,涵盖智能调度层、性能优化技巧(如查询优化器调优和分布式事务提升)、高可用与容灾配置、扩展功能开发指南以及监控运维体系。同时,通过电商平台优化案例展示实际应用效果,并展望未来演进方向,包括AI结合、多模数据库支持及Serverless架构发展。作为云原生数据库代表,PolarDB为开发者提供了强大支持和广阔前景。
294 16
|
8月前
|
关系型数据库 分布式数据库 数据库
喜报|PolarDB开源社区荣获“2024数据库国内活跃开源项目”奖
喜报|PolarDB开源社区荣获“2024数据库国内活跃开源项目”奖
135 1
|
8月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课18 通过pg_bulkload适配pfs实现批量导入提速
本文介绍了如何修改 `pg_bulkload` 工具以适配 PolarDB 的 PFS(Polar File System),从而加速批量导入数据。实验环境依赖于 Docker 容器中的 loop 设备模拟共享存储。通过对 `writer_direct.c` 文件的修改,替换了一些标准文件操作接口为 PFS 对应接口,实现了对 PolarDB 15 版本的支持。测试结果显示,使用 `pg_bulkload` 导入 1000 万条数据的速度是 COPY 命令的三倍多。此外,文章还提供了详细的步骤和代码示例,帮助读者理解和实践这一过程。
254 0

相关产品

  • 云原生数据库 PolarDB
  • 推荐镜像

    更多