用bitnami相当方便,不用再手填很多参数了,但是,官方给的readme中还是有东西要自己改。 强调一点: 如果版本号中不带debian之类的,而是直接用数字的,那是精简版,多半是没有dump之类的工具的。
官网的readme中的内容 请不要直接复制粘贴,等我说完。
// 创建主机
docker run --name postgresql-master \
-e POSTGRESQL_REPLICATION_MODE=master \
-e POSTGRESQL_USERNAME=my_user \
-e POSTGRESQL_PASSWORD=password123 \
-e POSTGRESQL_DATABASE=my_database \
-e POSTGRESQL_REPLICATION_USER=my_repl_user \
-e POSTGRESQL_REPLICATION_PASSWORD=my_repl_password \
bitnami/postgresql:latest
// 创建从机
docker run --name postgresql-slave \
--link postgresql-master:master \
-e POSTGRESQL_REPLICATION_MODE=slave \
-e POSTGRESQL_MASTER_HOST=master \
-e POSTGRESQL_MASTER_PORT_NUMBER=5432 \
-e POSTGRESQL_REPLICATION_USER=my_repl_user \
-e POSTGRESQL_REPLICATION_PASSWORD=my_repl_password \
bitnami/postgresql:latest
注
POSTGRESQL_REPLICATION_USER是和POSTGRESQL_USERNAME完全不相关的,专门用于复制的。POSTGRESQL_USERNAME设置成postgres也可以。POSTGRESQL_DATABASE设置成postgres也没问题。
不是说bitnami给的配置是错的,而是不全,不能直接使用。
- 主机配置中缺端口号、-d参数
- 从机配置中缺端口号、-d参数;--link用的很少了,可以删。
再补充一点持久化的-v,像这样:
-v /你的目录:/bitnami
这里有一个一定要说的坑!
-v 不要去挂载/你的目录:/bitnami/postgresql
因为bitnami内部是用的1001的id号,如果你本机的用户id不是1001的话,直接容器起不来,寄!
还差最后的一步了! 在相应的数据库,使用管理号帐号(如:postgres)授予用户相应数据库的权限。
GRANT SELECT ON ALL TABLES IN SCHEMA public TO 你的复制账号