linux postgres 主从数据库搭建

拉取PostgreSQL镜像

docker pull postgres

构建镜像容器

docker run -it \
--name postgres \
--restart always \
-e POSTGRES_PASSWORD='123456' \
-e ALLOW_IP_RANGE=0.0.0.0/0 \
-v /home/postgres/data:/var/lib/postgresql \
-p 55432:5432 \
-d postgres

--name:自定义容器名称

-d 容器

  • -d: 后台运行容器,并返回容器ID;

  • password:密码

 进入postgresql容器

docker exec -it postgres bash

部署主从数据库

主库

CREATE ROLE replica login replication encrypted password '123456';
\du

一定要在数据库里面 创建 用户 replica,否则从库不能拉取数据

**修改 pg_hba.conf**

修改`pg_hba.conf`,允许 `replica`用户从 `172.18.12.101` 从库上连接主库。配置文件在本地:`/home/pg_p/data`目录(创建时设置的虚拟目录)下,如:

host   replication      replica       172.18.12.101/32          trust   
# 允许172.18.12.101使用 replica 用户来复制
# 改为0.0.0.0/0,表示所有IP都可以连接主库

**修改postgresql.conf**

listen_addresses = '*'        # 监听所有IP
archive_mode = on             # 允许归档
wal_level = replica           # 开启热备
archive_command = '/bin/date' # 用该命令来归档logfile segment,这里取消归档。
max_wal_senders = 32          # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = 64        # 设置流复制保留的最多的xlog数目,一份是 16M,注意机器磁盘 16M*64 = 1G
wal_sender_timeout = 60s      # 设置流复制主机发送数据的超时时间
max_connections = 200         # 这个设置要注意下,从库的max_connections必须要大于主库的

最后重启容器

从库

初始化数据

进入容器删除原始数据文件,利用`pg_basebackup`从主库初始化数据。

docker exec -it pg_s /bin/bash
su postgres
# 删除原有数据文件
rm -rf /var/lib/postgresql/data/*
# 备份恢复
pg_basebackup -h 172.18.12.100 -p 5432 -U replica -Fp -Xs -Pv -R -D /var/lib/postgresql/data

 

新增并配置`standby.signal`文件

standby_mode = 'on'

修改 `postgresql.conf`

wal_level = replica   # WAL 日志级别为 replica
primary_conninfo = 'host=172.18.12.100 port=5432 user=replica password=123456'   
# 主库连接信息	
hot_standby = on                     # 恢复期间,允许查询
recovery_target_timeline = latest    # 默认
max_connections = 120                # 大于等于主节点,正式环境应当重新考虑此值的大小

docker restart pg_s

重启容器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这代码有点上头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值