- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Postgres 11.5 和 docker。我已经启动了 3 个容器 - 1 个主容器和 2 个从容器。
pg-0 大师:
docker run --detach --name pg-0 \
--network my-network \
--env REPMGR_PARTNER_NODES=pg-0,pg-1,pg-2 \
--env REPMGR_NODE_NAME=pg-0 \
--env REPMGR_NODE_NETWORK_NAME=pg-0 \
--env REPMGR_PRIMARY_HOST=pg-0 \
--env REPMGR_PASSWORD=repmgrpass \
--env POSTGRESQL_PASSWORD=secretpass \
bitnami/postgresql-repmgr:latest
pg-1 从机:
docker run --detach --name pg-1 \
--network my-network \
--env REPMGR_PARTNER_NODES=pg-0,pg-1,pg-2 \
--env REPMGR_NODE_NAME=pg-1 \
--env REPMGR_NODE_NETWORK_NAME=pg-1 \
--env REPMGR_PRIMARY_HOST=pg-0 \
--env REPMGR_PASSWORD=repmgrpass \
--env POSTGRESQL_PASSWORD=secretpass \
bitnami/postgresql-repmgr:latest
pg-2 奴隶:
docker run --detach --name pg-2 \
--network my-network \
--env REPMGR_PARTNER_NODES=pg-0,pg-1,pg-2 \
--env REPMGR_NODE_NAME=pg-2 \
--env REPMGR_NODE_NETWORK_NAME=pg-2 \
--env REPMGR_PRIMARY_HOST=pg-0 \
--env REPMGR_PASSWORD=repmgrpass \
--env POSTGRESQL_PASSWORD=secretpass \
bitnami/postgresql-repmgr:latest
容器之间的复制工作正常,如果我停止 master pg-0然后 pg-1\ pg-2 接管成为 master。
我的问题是,如果我在连接到 db pg-0 master 的不同容器上有 python 应用程序master换成pg-1或者pg-2怎么办?我不希望数据库连接尝试连接到所有 3 个服务器,我相信有更好的方法。
我从 python 应用程序连接的方式是使用容器名称 - host =pg-0当 db master 主机名容器更改时怎么办?
编辑:这是我在 API 中尝试的
>>> psycopg2.connect(host="db-0, db-1", user="user", password="password", database="data")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/site-packages/psycopg2/__init__.py", line 126, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not translate host name "db-0, db-1" to address: Temporary failure in name resolution
我的包是psycopg2-2.8.4,用的是python3.7
最佳答案
通过安装解决了问题:
pip3 install postgres
然后命令:
psycopg2.connect(host="db-0, db-1", user="user", password="password", database="data")
工作正常,但如果主机首先关闭,则不会真正路由到下一个主机。这是我的解决方法:
它循环查询所有的db容器,如果其中一个db在SELECT pg_is_in_recovery();
查询返回False
,那么说明它是master。
所以我所有的插入/删除/更新查询都在一个函数中转到这个。 (def db_master
),以及所有其他“选择”查询进入仅检查连接的不同函数中的相同循环。 (def db
):
import psycopg2
hosts = ["db-0", "db-1"]
for i in hosts:
conn = psycopg2.connect(
dbname='data', user='user', host=i, password='password')
cur = conn.cursor()
cur.execute("SELECT pg_is_in_recovery();")
result = cur.fetchall()[0][0]
if result is False:
master = i
conn = psycopg2.connect(
dbname='data', user='user', host=master, password='password')
关于python-3.x - PostgreSQL repmgr 向何处发送查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58526404/
我已经成功设置了两个节点(Master & Satndby)。 我的版本是 repmgr 2.0 (PostgreSQL 9.3.6) 备用repmgr.conf cluster=test node=
我正在使用 repmgr 并已成功故障转移到备用节点。但是,当我尝试恢复发生故障的主节点时,我现在发现我有两个主节点。 我已经尝试将备用节点重新注册为备用节点。但是我发现当 repmgr 检查节点的模
repmgr 的问题: failed to register in claster 请告诉我,我错过了什么? 主配置: failover=automatic follow_command='repmg
我正在尝试使用两台服务器创建一个 postgres 复制配置。步骤类似于PostgreSQL 9.4 Replication with RepMgr and PgBouncer on Ubuntu 1
我有用于 HA 的 pgpool-II 和用于自动故障转移的 repmgr。 Pgpool-II 也可以运行故障转移 我只是想知道使用 pgpool 或 repmgr 进行自动故障转移吗?如果 pgp
我正在使用 Postgres 11.5 和 docker。我已经启动了 3 个容器 - 1 个主容器和 2 个从容器。 pg-0 大师: docker run --detach --name pg-0
我正在尝试创建具有复制和自动故障转移功能的 Postgresql 设置。我希望它是可重用的、可扩展的和可移植的,所以我尝试使用 docker 来运行 Postgres。我也不想重新发明轮子,所以我尝试
我正在使用 repmgr 进行复制。我已成功将主节点注册到 repmgr。我已经成功克隆了主节点并启动了备用服务器。但问题是我无法在 repmgr 中注册备用节点。 我使用的版本是 repmgr 2.
我正在尝试在我的 postgresql 环境(2 个 postgresql 服务器 + 1 个 pgpool)中配置 pgpool 以执行 HA,而 repmgr 负责复制。 我在日志中收到下一条消息
我是一名优秀的程序员,十分优秀!