[英]How to enable streaming replication in PostgreSQL running in kubernetes pods?
根据我的阅读,我需要对配置文件postgres.conf
和pg_hba.conf
进行更改,然后我们需要创建一个“复制”用户。
我如何更改这些配置文件并确保对这些配置文件的更改在重新启动后仍然存在?
由于我的 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';
编辑或添加这些行:
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"
假设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.