我使用的是bitnami/ PostgreSQL :latest镜像,并且我能够从一个Win32程序(使用Unidac驱动程序的Delphi)连接到一个docker容器中运行在Ubuntu服务器上的PostgreSQL数据库。
用户将使用Win32程序离线捕获现场调查数据,然后在线时希望将数据复制到Ubuntu服务器上的PostgreSQL数据库。
在我看来,我应该使用逻辑复制,因为用户可能只使用Ubuntu服务器上整个master数据库的一个子集。
我必须能够做一个映射的postgresql.conf和pg_hba.conf文件。在docker容器中运行PostgreSQL的docker-compose.yml文件的一部分:
postgres:
restart: unless-stopped
container_name: postgres
image: bitnami/postgresql:latest
environment:
- TZ="Africa/Johannesburg"
- POSTGRES_DATABASE=sdb_risk
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=xxxxxxxxxxxxxxxx
ports:
- 5432:5432
- 5433:5433
volumes:
- ./postgres_data:/bitnami/postgresql
# - .pg_hba.conf:/bitnami/postgresql/conf/pg_hba.conf
# - .postgresql.conf:/bitnami/postgresql/conf/postgresql.conf
networks:
- dreamfactory-tier
- app-tier
我的问题是:我是否在进行逻辑复制的正确轨道上,如果是,我如何映射pg_hba.conf和postgresql.conf文件?
致以敬意,
Nols Smit
发布于 2021-06-24 19:55:20
逻辑复制确实适用于在docker容器中运行的Postgres。我做了什么来解决这个问题:
我通过在主机上运行Postgres解决了这个问题: Ubuntu Server (而不是在docker容器中)。制作postgresql.conf和pg_hba.conf文件的副本将postgresql.conf和pg_hba.conf文件复制到docker根文件夹(存放docker-Compose.yml的位置
我的postgresql文件中的更改:
#------------------------------------------------------------------------------
# WRITE-AHEAD LOG
#------------------------------------------------------------------------------
# - Settings -
################# wal_level originally commented out ... Nols Smit #########
wal_level = logical # minimal, replica, or logical
############################################################################
我的pg_hba.conf文件中的更改:
host all all all md5
################## New entry below ... Nols Smit ##########################
host all all 0.0.0.0/0 md5
host starsdb replicator i7Laptop md5
#############################################################################
其中starsdb是订阅服务器上的Postgres数据库,i7Laptop是发布服务器的主机名
请记住,最初订阅者数据库必须为空,并且还使用uuid作为表的主键。
致以敬意,
Nols Smit
https://stackoverflow.com/questions/65071261
复制相似问题