docker创建postgres SQL主从

491 阅读1分钟

用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

  1. POSTGRESQL_REPLICATION_USER 是和POSTGRESQL_USERNAME完全不相关的,专门用于复制的。
  2. POSTGRESQL_USERNAME设置成postgres也可以。POSTGRESQL_DATABASE设置成postgres也没问题。

不是说bitnami给的配置是错的,而是不全,不能直接使用。

  1. 主机配置中缺端口号、-d参数
  2. 从机配置中缺端口号、-d参数;--link用的很少了,可以删。

再补充一点持久化的-v,像这样: -v /你的目录:/bitnami

这里有一个一定要说的坑! -v 不要去挂载/你的目录:/bitnami/postgresql 因为bitnami内部是用的1001的id号,如果你本机的用户id不是1001的话,直接容器起不来,寄!

还差最后的一步了! 在相应的数据库,使用管理号帐号(如:postgres)授予用户相应数据库的权限。

GRANT SELECT ON ALL TABLES IN SCHEMA public TO 你的复制账号