繁体   English   中英

如何在 kube.netes pod 中运行的 PostgreSQL 启用流复制?

[英]How to enable streaming replication in PostgreSQL running in kubernetes pods?

根据我的阅读,我需要对配置文件postgres.confpg_hba.conf进行更改,然后我们需要创建一个“复制”用户。

  1. 我如何更改这些配置文件并确保对这些配置文件的更改在重新启动后仍然存在?

  2. 由于我的 postgres 在 kube.netes pod 内运行,我认为必须在容器内创建用户。 但是当我执行createuser -replication -P replica时,它不允许我创建一个,因为在我docker exec -it <container_id> bash之后当前用户是root而不是postgres

这个要点详细解释了如何使用 docker 使用 Postgres 设置主从复制。

主配置

创建复制用户

CREATE USER replication_user NOSUPERUSER;
ALTER USER replication_user WITH REPLICATION;
ALTER USER replication_user WITH PASSWORD 'CHANGEME';

postgresql.conf

编辑或添加这些行:

listen_addresses = '*'   # It can be more specific with the listen IP
wal_level = hot_standby  
max_wal_sender = 5       #  Specifies the maximum number of concurrent connections from standby servers
ssl = off
archive_mode = on   
archive_command = "cp %p /path/to/archive/%f"

pg_hba 配置文件

假设192.168.0.2/32是slave的IP,replication_user是复制用户。

不需要身份验证的情况

 host  replication   replication_user   192.168.0.2/32      trust

使用密码进行案例认证

 host  replication   replication_user   192.168.0.2/32      scram-sha-256 # or MD5

从机配置

假设 Master IP 是:192.168.0.1,端口是默认的(5432)。

listen_addresses = '*'
primary_conninfo = 'user=replication_user password=CHANGEME host=192.168.0.1 port=5432'
hot_standby = on

使配置持久化

您可以使用docker 卷(或kube.netes )。 首先在本地机器上创建启动容器的配置文件,然后:

docker run --rm --name IMAGE_NAME -v /local/path/to/postgresql.conf:/etc/postgresql/postgresql.conf -v /local/path/to/pg_hba.conf:/var/lib/postgresql/data/pg_hba.conf CONTAINER_NAME

对奴隶也一样。

资料来源:

https://wiki.postgresql.org/wiki/Streaming_Replication

https://gist.github.com/avshabanov/eb8e03a050c79f8e77420b06f9b4abe5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM