1、准备环境
| IP地址 | 主机名 | 角色 |
|---|---|---|
| 10.16.12.115 | postgresql01 | 主库 |
| 10.16.12.116 | postgresql02 | 从库 |
3、拉取postgresql镜像
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres-with-gis:16.44、创建db网络
docker network create --driver bridge dbnet5、创建数据目录
mkdir/data/postgresql/data -pchmod-R777/data/postgresql/datadocker-compose.yml文件编写
主库文件:
sudotee/data/postgresql/docker-compose.yml<<-'EOF' version: '3.0' services: postgresql: image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres-with-gis:16.4 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: true EOF从库文件:
sudotee/data/postgresql/docker-compose.yml<<-'EOF' version: '3.0' services: postgresql: image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres-with-gis:16.4 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: true EOF启动postgresql服务
cd/data/postgresql docker-compose up -d docker-composeps部署主库
dockerexec-it postgresql01 /bin/bashsu- postgres psql CREATE ROLE replica login replication encrypted password'replica@123';修改postgresql.confvi/data/postgresql/data/postgresql.conf ```bash listen_addresses='*'archive_mode=on archive_command='/bin/date'max_connections=1024max_wal_senders=32wal_sender_timeout=60s wal_keep_size=16wal_level=replica修改pg_hba.conf
vi /data/postgresql/data/pg_hba.conf
hostreplication replica0.0.0.0/32 trust部署从库
dockerexec-it postgresql02 /bin/bash 在容器中运行相关命令:rm-rf /var/lib/postgresql/data/*如果退出了,则再次进入
dockerexec-it postgresql02 /bin/bashsu- postgres pg_basebackup -R -D /var/lib/postgresql/data -P -h192.168.52.15 -p5432-U replicadocker restart postgresql02# 查看/data/postgresql/data下的 postgresql.auto.conf、查看进程
主机查看主数据库
ps-ef|greppostgres从机查看从数据库
dockerps|greppostgres测试同步
在主机容器中
dockerexec-it postgresql01 /bin/bashsu- postgres psql create database test12;\list在从机查看已经同步
dockerexec-it postgresql02 /bin/bashsu- postgres psql\list关闭selinux
sed-i's#SELINUX=enforcing#SELINUX=disabled#g'/etc/selinux/config setenforce0