ApsaraDB / PolarDB-for-PostgreSQL

A cloud-native database based on PostgreSQL developed by Alibaba Cloud.
https://apsaradb.github.io/PolarDB-for-PostgreSQL/zh/
Apache License 2.0
2.91k stars 488 forks source link

[Question] #534

Closed LenSource closed 6 days ago

LenSource commented 1 week ago

Describe the problem

我按照提供的文档执行脚本进行数据库初始化时候失败,提示内容如下: [root@gis01 ~]# docker run -it --rm --env POLARDB_PORT=5432 --env POLARDB_USER=polardb --env POLARDB_PASSWORD=polardb -v /home/polardb/data:/var/polardb polardb/polardb_pg_local_instance:15

Begin initdb, flag: -D /var/polardb/primary_datadir --wal-segsize=16 PolarDB no use deploy mode popen failure: Cannot allocate memory initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/u01/polardb_pg/bin/initdb"

我检查了我的服务器内存,显示可用内存还有11G。 我的操作系统是:centos 7 ,cpu 架构是:AMD64 ,docker 版本是: 18.06.3-ce

polardb-bot[bot] commented 1 week ago

Hi @LenSource ~ Thanks for opening this issue! 🎉

Please make sure you have provided enough information for subsequent discussion.

We will get back to you as soon as possible. ❤️

mrdrivingduck commented 1 week ago

@LenSource Cannot reproduce it. Check your image is up to date by:

docker pull polardb/polardb_pg_local_instance:15

Also make sure /home/polardb/data is empty before your initial use.

LenSource commented 1 week ago

感谢您的回复。我又做了一些尝试 结果如下: (1)我确定我下载的镜像是对的,并且也确保我的/home/polardb/data是空文件夹。 问题可能是我执行的命令的服务器是通过 Vmware创建的。 (2)我在另外一个云服务器上执行相同的脚本,是能执行成功的。只是在初始化数据库命令输出中包含一个 failed状态不知道会不会影响。 image

atzq1234 commented 1 week ago

1.我也遇到相同的问题,使用:pve+虚拟机操作系统是aliyun-cloud-linux-x86_64版本+docker 20,提示一样的问题。 2.使用:物理机+centos7+docker 20却能正常运行

mrdrivingduck commented 1 week ago

@LenSource @atzq1234 我们更新了一版镜像,不一定保证能解决这个问题,怀疑和虚拟机对内存的虚拟化有关。不是特别建议在虚拟机内再使用 Docker,因为 Docker 本身就已经是一种轻量级的虚拟化了。

LenSource commented 6 days ago

感谢,我测试了新的镜像,还是出现同样的问题。后续我在试下非docker 版本。感谢您的回复

atzq1234 commented 5 days ago

同一台pve虚拟化的机器,更新了但还是不行,也把ballooning内存模式关闭了也不行。 今天直接在这台pve虚拟化后的机器上,不用容器安装好了。咋用容器就失败~

LenSource commented 5 days ago

我在另外一台服务器上使用docker安装成功,并使用了如下端口映射 54320-54322:5432-5434 。使用docker exce 进入容器 能正常访问数据库 。但是当我在其他机器上连接该数据库却无法连接。我是用的工具是datagrip 连接方式如下: image 我确定了我的 端口是开的,用户名和密码也是对的,请问 问题可能出现在什么地方?

mrdrivingduck commented 5 days ago

@LenSource

我在另外一台服务器上使用docker安装成功,并使用了如下端口映射 54320-54322:5432-5434

  1. check what port is PostgreSQL running by: SHOW port;
  2. check docker port mapping by: docker ps -a | grep $container_name
  3. check if you can connect to PostgreSQL on the machine you are running container on.