postgresql - 从 Windows 上的 Posgres 到 Linux 上 docker 容器中的 Postgres 的逻辑复制
问题描述
我正在使用 bitnami/postgresql:latest 映像,并且能够从 Win32 程序(使用 Unidac 驱动程序的 Delphi)连接到 Docker 容器中 Ubuntu 服务器上运行的 PostgreSQL 数据库。
用户将使用 Win32 程序离线捕获现场调查数据,然后他们在线上希望将数据复制到 Ubuntu 服务器上的 PostgreSQL 数据库。
在我看来,我应该使用逻辑复制,因为用户可能只使用 Ubuntu 服务器上整个主数据库的一个子集。
我必须能够映射 postgresql.conf 和 pg_hba.conf 文件。我的 docker-compose.yml 文件中用于在 docker 容器中运行 PostgreSQL 的部分:
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 文件?
问候,
诺尔斯·斯密特
解决方案
逻辑复制确实适用于在 docker 容器中运行的 Postgres。我做了什么来弄清楚:
我通过在主机上运行 Postgres 解决了这个问题:Ubuntu 服务器(不在 docker 容器中)。复制您的 postgresql.conf 和 pg_hba.conf 文件
我的 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 是发布者的主机名
请记住,最初订阅者数据库必须为空,并且还使用 uuids 作为表的主键。
问候,
诺尔斯·斯密特
推荐阅读
- react-native - 当我按下按钮时,我应该改变我的功能来改变按钮的背景?请
- python - 在输入值后验证 tk 条目
- html - 使用线性渐变在按钮上设置背景颜色
- react-native - 自定义 React Native 插件为空(iOS)
- r - 根据 flextable 中的值更改字体样式
- json - 在发送到弹簧控制器之前验证响应正文中的 json 值以避免响应代码 400
- javascript - 如何不使用 innerhtml 淹没 html 页面
- javascript - 发出 http 请求并在 React 中解析数据
- gitlab - Gitlab-ci:使用规则运行 CI 作业,但使用定义来避免 CI 运行标签
- stripe-payments - 客户门户中的条纹更改付款方式不允许我将邮政编码输入字母数字