docker PostgreSQL 14.1 主从配置

2023-11-03

主库 IP:192.168.1.100

从库 IP:192.168.1.101

1、主从服务器装PostgreSQL

#新建挂载目录
mkdir /data/postgres

#拉取镜像
docker pull postgres

#运行容器
docker run --name postgres \
    -e TZ=Asia/Shanghai \
    --restart=always \
    -e POSTGRES_PASSWORD=ly123456 \
    -p 5432:5432 \
    -v /data/postgresql:/var/lib/postgresql/data \
    -d postgres

这里挂载了 /var/lib/postgresql/data目录

2、主库操作

2.1 进入容器,并创建用于数据同步的角色

#进入容器
docker exec -it postgres /bin/bash

# 切换到 postgres 用户
su postgres

# 进去 postgres 客户端
psql

#创建角色
CREATE ROLE syncuser login replication encrypted password 'syncuser';

创建用户成功之后,控制台会显示 “CREATE ROLE”,利用 \du 命令可以查看 postgres 的用户列表 

 

2.2 修改 pg_hba.conf 文件 

由于之前已经挂载出/var/lib/postgresql/data目录,直接vim修改文件

#编辑文件
vim pg_hba.conf

#添加一行
host    replication     syncuser        192.168.1.101/32        trust

 注意:192.168.1.101是从库IP

2.3 修改 postgresql.conf 文件

listen_addresses = '*'   #监听所有IP
archive_mode = on      #允许归档
archive_command = '/bin/date'    #用该命令来归档logfile segment,这里取消归档。
wal_level = replica    #开启热备
max_wal_senders = 10    #这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_size = 1024    #设置wal的大小,单位M。
wal_sender_timeout = 60s #设置流复制主机发送数据的超时时间
max_connections = 100    #这个设置要注意下,从库的max_connections必须要大于主库的

2.4 重启容器

docker restart postgres

----------------------------------------  ↑上面是主库        |      下面是从库↓  ----------------------------------------

3、从库操作

3.1 拉镜像(略)

3.2 启动容器

docker run --name postgres \
    --restart=always \
    -e TZ=Asia/Shanghai \
    -e POSTGRES_PASSWORD=ly123456 \
    -p 5432:5432 \
    -v /data/postgresql/data:/var/lib/postgresql/data \
    -v /data/postgresql/repl:/var/lib/postgresql/repl \
    -d postgres

这里挂载目录repl的作用是用来同步主库数据。 

进入容器(略)

3.3 拷贝主服务器数据进入从节点容器并同步(注意按实际情况修改主库节点ip地址)

#拷贝主库数据
pg_basebackup -R -D /var/lib/postgresql/repl -Fp -Xs -v -P -h 192.168.1.100 -p 5432 -U syncuser

3.4 退出,删除容器,删除挂载的data目录,拷贝主库数据

#退出
exit

#删除容器
docker rm -f postgres

#删除挂载data目录
rm -rf /data/postgresql/data

#移动主库数据至data目录
mv /data/postgresql/repl /data/postgresql/data

检查下postgresql.auto.conf文件是否包含primary_conninfo = 'user=syncuser ......

3.5 重新启动容器,这时不需要挂载repl文件夹

    docker run --name postgres \
    --restart=always \
    -e TZ=Asia/Shanghai \
    -e POSTGRES_PASSWORD=ly123456 \
    -p 5432:5432 \
    -v /data/postgresql/data:/var/lib/postgresql/data \
    -d postgres

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker PostgreSQL 14.1 主从配置 的相关文章

随机推荐

  • SpringMVC实现文件的上传和下载

    SpringMVC文件的上传和下载 一 SpringMVC文件上传 1 什么是文件上传 文件上传 指的就是将用户本地计算机中文件上传到服务器上的过程称之为文件上传 2 文件上传编程步骤 1 Client选择文件 上传页面 1 method
  • TypeScript的基础类型

    1 boolean类型 boolean表示布尔值类型 即true和false 例 let isDone boolean false 2 number类型 number表示数字类型 包括整数和浮点数 例 let decimal number
  • 如何开发和部署微信小程序

    今天开始 用ChatGPT创作技术内容了 要开发和部署微信小程序 您需要遵循以下步骤 1 注册微信小程序账号 在微信公众平台注册小程序账号 通过审核后即可开始开发 2 下载开发工具 微信小程序开发工具是一款免费的IDE 可在Windows
  • ElasticSearch7 数据类型之日期类型

    日期类型 Date datatype Elasticsearch7 日期表达成类型 日期格式化的字符串 比如 2015 01 01 或者 2015 01 01 12 10 30 毫秒级别的 long 类型 秒级别的 integer 类型 M
  • 基础实验篇

    导读 uORB是PX4 Pixhawk系统中非常重要且关键的模块之一 是用于无人机模块间通信的协议机制 本篇将详细介绍uORB并详细拆解uORB消息读写与自定义实验全流程 二 基础实验篇 uORB消息读写与自定义实验 二 01 RflySi
  • hive在执行任务的时候提示java.io.FileNotFoundException: File does not exist: hdfs://Master:9000/usr/local/apach

    1 错误信息 Number of reduce tasks determined at compile time 1 In order to change the average load for a reducer in bytes se
  • iOS架构师_SDWebImage源码分析

    1 对SDdemo的分析 针对SD的3 8 2版本进行分析 因为从git上面直接下载SD的源码 项目运行会报错 缺少libwebp这个库 我们下载3 8 2版本 运行 libwebp 是个webp的图片格式 属于谷歌的库 所以只能翻墙去国外
  • 基于Echarts的地图统计图-中国地图统计图

  • 深入理解计算机系统——知识总结

    第 1 章 计算机系统漫游 include
  • 城市旅行【BZOJ 3091】【LCT】

    题目链接 很好的一次的debug的经验 来来回回的splay和rotate 眼花缭乱的一次次记录每次的实虚边所构成的多个splay的森林 题目求的是取一条链上的任意两个点构成的边的权值的期望 其实可以考虑成点被选取的次数乘以该点的权值 一条
  • 在Activity中显示Fragment

    在Activity中显示Fragment 还必须将Fragment提那家到Activity中 将Fragment添加到Activity有两种方式 在布局文件中使用
  • 【常见 error】Vivado 综合出现中断、失败、“PID not specified”

    目录 发现问题 解决历程 总结 发现问题 在对工程进行综合时 出现综合过程中出现中止或者完全不启动综合 类似下图 明明点击综合启动了几分钟 但是 elapsed 一直显示为 0 表示完全没用启动综合 在 TCL Console 栏中出现了
  • 作为新入职的Java程序员,完全看不懂公司代码,我只能...

    有人说JAVA工资高 待遇好这事是一个谣言 其实这并不是谣言 事实就是如此 最近在知乎上 看到一位蚂蚁金服的Java工程师分享 985硕士 校招就拿到了30w的offer 群内也有群友分享 自己通过三年的奋斗 终于年薪70w 这让很多同龄人
  • 如何在typora添加主题

    如何在typora添加主题 前言 总觉得Typora自带的主题不够华丽 那么我们来改造一下吧 环境准备 本文所使用到的环境信息如下 1 Typora版本1 0 5 6032 2 MacBook Pro 2015 catalina 10 15
  • 关于nginx日志出现大量no live upstreams while connecting to upstream

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 由于修改了upstream上的server配置 增加了max fails fail timeout weight这个三个参数项 导致nginx错误日志大量输出如下类型的错误
  • vue 表单确认密码 问题

    校验 confirmPwd required true validator rule value callback gt if this ruleForm confirmPwd callback new Error 请再次输入密码 else
  • JS拼table调整表格样式

    页面 table cellspacing 0 cellpadding 0 border 0 class layui table table 根据js选择器选择到table var bodyTag document getElementByI
  • [转]Nginx配置——反向代理

    文章目录 0 引言 1 何为反向代理 2 Nginx配置文件 2 1 第一部分 全局块 2 2 第二部分 events 块 2 3 第三部分 http 块 2 3 1 全局 server 块 2 3 2 location 块 3 反向代理如
  • java类到JVM执行的过程

    java类是如何到JVM执行的 本文是对 java文件到JVM运行的一个过程讲解 其中涉及到相关概念及原理 一 java类 类一般包含属性 代码块 构造器 方法 内部类 二 JDK JDK是java开发工具包 包括 bin db inclu
  • docker PostgreSQL 14.1 主从配置

    主库 IP 192 168 1 100 从库 IP 192 168 1 101 1 主从服务器装PostgreSQL 新建挂载目录 mkdir data postgres 拉取镜像 docker pull postgres 运行容器 doc