zoukankan      html  css  js  c++  java
  • 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  联系我,非常感谢。

  • 相关阅读:
    ASP.NET Core的Kestrel服务器(转载)
    ASP.NET Core MVC中的IActionFilter.OnActionExecuting方法,可以获取Controller的Action方法参数值
    SQL 中常用存储过程xp_cmdshell运行cmd命令 (转载)
    SQL Server数据库中外键强制约束的好处是什么,什么时候设置外键非强制约束?(转载)
    EF Core中如何取消跟踪DbContext中所有被跟踪的实体
    c# .NET开发邮件发送功能的全面教程(含邮件组件源码)
    jquery操作select(取值,设置选中) 基础
    Visiual Studio2012 CLR20r3问题
    关于同时查询父子名称的SQL查询语句的写法 id name parentId parentName .
    Linq to SQL Like Operator
  • 原文地址:https://www.cnblogs.com/wang2650/p/14341273.html
Copyright © 2011-2022 走看看