• docker 下postgresql12的集群搭建


    已经测试通过

    文档https://hub.docker.com/r/bitnami/postgresql

    一 创建主节点

     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 -p 8932:5432 bitnami/postgresql:latest
    
    

    postgresql-master 容器名
    POSTGRESQL_REPLICATION_MODE 表示是主节点
    POSTGRESQL_USERNAME 数据库用户名
    POSTGRESQL_PASSWORD 数据库密码
    POSTGRESQL_DATABASE 数据库名
    POSTGRESQL_REPLICATION_USER 用于主从复制的用户名
    POSTGRESQL_REPLICATION_PASSWORD 用于主从复制的密码
    -p 8932:5432 端口映射 因为我是在同一主机上的两个docker
    bitnami/postgresql:latest 镜像

    二 创建从节点

    docker run --name postgresql-slave  --link postgresql-master:master   -e POSTGRESQL_REPLICATION_MODE=slave  -e POSTGRESQL_USERNAME=my_user -e POSTGRESQL_PASSWORD=password123  -e POSTGRESQL_MASTER_HOST=192.168.26.22   -e POSTGRESQL_MASTER_PORT_NUMBER=8932   -e POSTGRESQL_REPLICATION_USER=my_repl_user   -e POSTGRESQL_REPLICATION_PASSWORD=my_repl_password  bitnami/postgresql:latest
    

    postgresql-slave 容器名
    postgresql-master:master 链接到网络 直接用ip访问就不需要了
    POSTGRESQL_REPLICATION_MODE 表示是从节点
    POSTGRESQL_USERNAME 数据库用户名
    POSTGRESQL_PASSWORD 数据库密码
    POSTGRESQL_MASTER_HOST 主节点的ip地址
    POSTGRESQL_MASTER_PORT_NUMBER 主节点的端口
    POSTGRESQL_REPLICATION_USER 用于主从复制的用户名
    POSTGRESQL_REPLICATION_PASSWORD 用于主从复制的密码
    -p 8932:5432 端口映射 因为我是在同一主机上的两个docker
    bitnami/postgresql:latest 镜像

    另一个镜像使用方法 没试

    参考 https://github.com/sameersbn/docker-postgresql

    一 创建主节点

    docker run --name postgresql-master -itd --restart always 
      --env DB_USER=dbuser --env DB_PASS=dbuserpass --env DB_NAME=dbname 
      --env REPLICATION_USER=repluser --env REPLICATION_PASS=repluserpass 
      sameersbn/postgresql:12-20200524
    

    二 创建从节点

    docker run --name postgresql-slave01 -itd --restart always  --link postgresql-master:master 
      --env REPLICATION_MODE=slave --env REPLICATION_SSLMODE=prefer
      --env REPLICATION_HOST=master --env REPLICATION_PORT=5432  
      --env REPLICATION_USER=repluser --env REPLICATION_PASS=repluserpass
      sameersbn/postgresql:12-20200524
    

    三 创建快照节点

    docker run --name postgresql-snapshot -itd --restart always 
      --link postgresql-master:master 
      --env REPLICATION_MODE=snapshot --env REPLICATION_SSLMODE=prefer 
      --env REPLICATION_HOST=master --env REPLICATION_PORT=5432  
      --env REPLICATION_USER=repluser --env REPLICATION_PASS=repluserpass 
      sameersbn/postgresql:12-20200524
    

    四 创建恢复备份
    默认备份文件到/srv/docker/backups/postgresql.XXXXXXXXXXXX ,然后容器会关闭。如果需要恢复 ,重启容器就行了。

    docker run --name postgresql-backup -it --rm 
      --link postgresql-master:master 
      --env REPLICATION_MODE=backup --env REPLICATION_SSLMODE=prefer
      --env REPLICATION_HOST=master --env REPLICATION_PORT=5432  
      --env REPLICATION_USER=repluser --env REPLICATION_PASS=repluserpass 
      --volume /srv/docker/backups/postgresql.$(date +%Y%m%d%H%M%S):/var/lib/postgresql 
      sameersbn/postgresql:12-20200524
    

    五 保存日志到文件

    docker run --name postgresql -itd --restart always 
      sameersbn/postgresql:12-20200524 -c logging_collector=on
    

    六管理工具

    
    docker run -d -p 5433:80 --name pgadmin4 -e PGADMIN_DEFAULT_EMAIL=test@123.com -e PGADMIN_DEFAULT_PASSWORD=123456 dpage/pgadmin4
    
    #查看当前备库状态:
    #t :true,意味着处于recovery状态
    #f :false,意味着处于正常服务状态
    select pg_is_in_recovery();  
    
    select * from pg_stat_replication; #查询当前主库用几个备库
    


    作者:过错
    出处:http://www.cnblogs.com/wang2650/
    关于作者:net开发做的久而已。十余年时光虚度!
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:wang2650@163.com  联系我,非常感谢。

  • 相关阅读:
    css基础教程
    网页加载-上下幕布分开
    Vue-Aixos
    webpack学习
    Vue、Element 路由跳转,左侧菜单高亮显示,页面刷新不会改变当前高亮菜单
    Vue知识概括
    JSON.parse() 与 JSON.stringify()
    Bootstrap4 样式笔记
    ES6基础语法
    V-model 双向绑定的原理是什么?
  • 原文地址:https://www.cnblogs.com/wang2650/p/14341273.html
Copyright © 2020-2023  润新知