当前位置: 首页 > news >正文

Docker 启动 PostgreSQL 主从架构:实现数据同步的高效部署指南

1、环境规划

IP地址

主机名

角色

192.168.52.15

postgresql01

主库

192.168.52.17

postgresql02

从库

2、安装docker

2.1、安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

2.2、配置docker yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.3、安装docker

yum install -y docker-ce

2.4、修改docker配置文件

mkdir /etc/docker -p

sudo tee /etc/docker/daemon.json <<-'EOF'{    "registry-mirrors": [      "https://docker.credclouds.com",      "https://k8s.credclouds.com",      "https://quay.credclouds.com",      "https://gcr.credclouds.com",      "https://k8s-gcr.credclouds.com",      "https://ghcr.credclouds.com",      "https://do.nark.eu.org",      "https://docker.m.daocloud.io",      "https://docker.nju.edu.cn",      "https://docker.mirrors.sjtug.sjtu.edu.cn",      "https://docker.1panel.live",      "https://docker.rainbond.cc"    ],   "data-root": "/etc/docker"}EOF

2.5、启动docker

systemctl daemon-reload

systemctl enable docker --now

systemctl restart docker

2.6、安装docker-compose

#下载docker-compose文件

curl -L "https://github.com/docker/compose/releases/download/v2.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#给他一个执行权限

chmod +x /usr/local/bin/docker-compose

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

#查看是否安装成功

docker-compose --version

3、拉取postgresql镜像

docker pull postgres:14.5

4、创建db网络

docker network create --driver bridge dbnet

5、创建数据目录

mkdir /data/postgresql/data -p

chmod -R 777 /data/postgresql/data

6、docker-compose.yml文件编写

主库文件:​​​​​​​

sudo tee /data/postgresql/docker-compose.yml <<-'EOF'version: '3.0'services:  postgresql:    image: postgres:14.5    restart: always    container_name: postgresql01    environment:      POSTGRES_PASSWORD: admin@123    working_dir: /postgresql    networks:      - dbnet    ports:      - "5432:5432"    volumes:      - /data/postgresql/data:/var/lib/postgresql/data networks:  dbnet:    external: trueEOF

从库文件:​​​​​​​

sudo tee /data/postgresql/docker-compose.yml <<-'EOF'version: '3.0'services:  postgresql:    image: postgres:14.5    restart: always    container_name: postgresql02    environment:      POSTGRES_PASSWORD: admin@123    working_dir: /postgresql    networks:      - dbnet    ports:      - "5432:5432"    volumes:      - /data/postgresql/data:/var/lib/postgresql/data networks:  dbnet:    external: trueEOF

7、启动postgresql服务

cd /data/postgresql

docker-compose up -d

docker-compose ps

图片

图片

8、部署主库

docker exec -it postgresql01 /bin/bash

su - postgres

psql

CREATE ROLE replica login replication encrypted password 'replica@123';

\du  #列出数据库用户和角色

图片

exit

配置postgresql.conf

vi /data/postgresql/data/postgresql.conf

listen_addresses = '*'

archive_mode = on

archive_command = '/bin/date'

max_connections = 1024

max_wal_senders = 32

wal_sender_timeout = 60s

wal_keep_size = 16

wal_level = replica

配置pg_hba.conf

vi /data/postgresql/data/pg_hba.conf

host    replication     replica         192.168.52.17/32        trust

9、部署从库

docker exec -it postgresql02 /bin/bash

在容器中运行相关命令:

rm -rf /var/lib/postgresql/data/*

# 如果退出了,则再次进入 

docker exec -it postgresql02 /bin/bash

su - postgres

pg_basebackup -R -D /var/lib/postgresql/data -P -h 192.168.52.15 -p 5432 -U replica

exit

图片

docker restart postgresql02 

# 查看/data/postgresql/data下的 postgresql.auto.conf

图片

10、查看进程

# 主机查看主数据库

ps -ef|grep postgres

图片

# 从机查看从数据库

docker ps |grep postgres

图片

11、测试同步

# 在主机容器中

docker exec -it postgresql01 /bin/bash

su - postgres

psql

create database test12;

\list

图片

# 在从机查看已经同步

docker exec -it postgresql02 /bin/bash

su - postgres

psql

\list

http://www.dtcms.com/a/294324.html

相关文章:

  • VRRP的概念及应用场景
  • 彩色转灰度的核心逻辑:三种经典方法及原理对比
  • 优雅!通过编程方式重启 Spring Boot 应用的 3 种方案
  • Apache PDFBox深入实践
  • python学智能算法(二十九)|SVM-拉格朗日函数求解中-KKT条件
  • PHP语法高级篇(五):回调函数与异常处理
  • Ansible 变量指南:声明、优先级、作用域与最佳实践(一)
  • Jquery、Vue 、Ajax、axios、Fetch区别
  • Ansible在配置管理中的应用
  • ffmpeg rtsp 丢包处理
  • SSH公钥认证连接过程
  • Linux 进程与服务管理~进程基础、进程查看、进程控制、服务管理、开机启动​​
  • 纯CPU场景下C++的分布式模型训练框架设计思路
  • 2025.7.20 文献阅读-基于深度神经网络的半变异函数在 高程数据普通克里格插值中的应用
  • go语言数据结构与排序算法
  • 【C++】C++ 的入门知识2
  • Android 持久化存储原理与使用解析
  • MATLAB | 绘图复刻(二十二)| 带树状图的三角热图合集
  • 个性化网页计数器
  • C 语言介绍
  • 【数据结构】二叉树的链式结构--用C语言实现
  • 嵌入式linux下的NES游戏显示效果优化方案:infoNES显示效果优化
  • 我用EV-21569-SOM评估来开发ADSP-21569(十三)-SigmaStudio Plus做开发(4)
  • Web前端开发:JavaScript遍历方法详解与对比
  • 安全防护-FCW
  • [HarmonyOS] HarmonyOS LiteOS-A 设备开发全流程指南
  • Linux第三天Linux基础命令(二)
  • 服务器对kaggle比赛的数据集下载
  • SAP-ABAP:SELECT语句验证字段和验证方法详解
  • OSPF路由协议——上