首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将repmgr与结合使用?

如何将repmgr与结合使用?
EN

Stack Overflow用户
提问于 2017-09-02 16:08:12
回答 1查看 2.5K关注 0票数 4

我正在尝试创建带有复制和自动故障转移的Postgresql设置。我希望它是可重用的、可扩展的和可移植的,所以我尝试使用docker来运行Postgres。我也不想重新发明轮子,所以我尝试使用repmgr,因为它是在设置postgres复制时推荐的工具。

在第一台机器上,我使用Dockerfile和简单的Dockerfile启动主节点.然后,我添加了bash脚本,以便在容器启动后运行。看来主人被正确设置了。

然后,在第二台机器上,我试着运行备用。我在码头启动了postgres公司并进行了实验。由于我们可以在repmgr回购上阅读,要运行备用,我需要使用repmgr命令克隆主程序,该命令在内部使用pg_basebackup。Pg_basebackup不允许我将db克隆到非空目录( pgdata ),所以在克隆之前,我需要删除由dockerized创建的pgdata。当我这样做的时候,容器就会死掉,因为当然,唯一的服务postgres会在没有文件的情况下死去。因此,之后我无法运行repmgr命令,因为在以下内容中没有容器来运行它:)

因此,我尝试创建另一个Dockerfile,仅用于站立。移除pgdata内部,然后repmgr克隆主,然后postgres正确启动。没有错误。但是,当我登录到主计算机并验证复制是否正在运行时,它没有运行。

  1. 是否有可能运行repmgr为港口邮政?
  2. 如果是这样的话,是怎么做的?我做错了什么?
  3. 如果没有,我如何创建postgres集群复制而不手动配置每台服务器?你知道,不是把服务器当作宠物,而是把它当作牛等等。)

我使用和创建的文件: docker-compose.yml (主节点和备用节点):

代码语言:javascript
复制
version: '3'
services:
  db:
    build:
      context: .
    volumes:
      - ${DATABASE_STORAGE_PATH}:/var/lib/postgresql/data
    env_file:
      - .env
    environment:
      - PGDATA=/var/lib/postgresql/data/pgdata
    ports:
      - ${DB_PORT}:5432

主治医生:

代码语言:javascript
复制
FROM postgres:9.6.4

# install repmgr
RUN apt-get update \
    && apt-get install -y repmgr
# COPY conf files
COPY repmgr.conf .
COPY postgres.replication.conf /var/lib/postgresql/data/pgdata/
RUN echo "include '/var/lib/postgresql/data/pgdata/postgres.replication.conf'" >> /var/lib/postgresql/data/pgdata/postgresql.conf

CMD ["postgres"]

在postgres容器(主服务器)还活着时运行的Bash脚本:

代码语言:javascript
复制
#!/bin/bash
CONTAINER_ID="replicatest2_db_1"

docker exec -d $CONTAINER_ID createuser -s repmgr -U postgres
docker exec -d $CONTAINER_ID createdb repmgr -O repmgr -U postgres
docker exec -d $CONTAINER_ID su postgres -c 'repmgr -f repmgr.conf master register'

待机对接-合成是相同的。备用文件:

代码语言:javascript
复制
FROM postgres:9.6.4

# install repmgr
RUN apt-get update \
    && apt-get install -y repmgr
# COPY repmgr conf
COPY repmgr.conf .

RUN rm -rf /var/lib/postgresql/data/pgdata
RUN su postgres -c "repmgr -h {master-host} -p {master-port} -U repmgr -d repmgr -D /var/lib/postgresql/data/pgdata -f repmgr.conf standby clone"

CMD ["postgres"]
EN

回答 1

Stack Overflow用户

发布于 2017-09-03 15:05:11

您可以使用船坞,对于pg-坞,您可以使用repmgr运行dockerized集群,否则您可以探索项目并了解事情是如何工作的。

祝好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46015714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档