Tag: docker repmgr

如何使用dockerized PostgreSQL的repmgr?

我正在尝试使用复制和自动故障转移来创buildPostgresql安装程序。 我希望它是可重用,可扩展和可移植的,所以我试图使用docker来运行Postgres。 我也不想重新发明轮子,所以我试图使用repmgr,因为它是设置postgres复制时推荐的工具。 在第一台机器上,我使用docker-compose和简单的Dockerfile启动了主节点。 然后我添加了bash脚本,在容器启动后运行。 它看起来像主设置正确。 然后在第二台机器上,我尝试运行待机。 我开始在docker工作postgres和实验。 正如我们可以在repmgr github repo上阅读的那样 ,为了运行standby,我需要使用内部使用pg_basebackup的repmgr命令克隆master。 Pg_basebackup不会让我把数据库克隆到非空目录(pgdata),所以我需要在克隆之前删除由dockerized postgres创build的pgdata。 当我这样做时,容器就死了,因为当然唯一的服务,postgres,没有文件死亡。 所以我不能运行repmgr命令,因为没有容器来运行它:) 所以我试着创build另一个Dockerfile只有standbies。 内部pgdata被删除,然后repmgr克隆主,然后postgres正常启动。 没有错误。 但是,当我login到主机,并validation复制是否正在运行 – 它不是。 是否有可能为dockerized postgres运行repmgr? 如果是这样,怎么样? 我究竟做错了什么? 如果没有,我怎样才能创buildpostgres集群复制,而无需手动configuration每个服务器? 你知道,不把服务器当宠物,而是当作牛等:) 我使用和创build的文件:docker-compose.yml(主节点和备节点): 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 主Dockerfile: FROM postgres:9.6.4 # install repmgr RUN […]