PostgreSQL的数据库备份(主从复制)

一、 创建相应的目录

1.Master 节点 [10.242.135.51]

1.1 创建Master 的数据目录
mkdir -p <your postgres master node data path>
madir -p /var/testPSQL/master

cd <your postgres master node data path>
cd /var/testPSQL/master

cd ../ && chmod -R 777 <data directory's name> 
chmod -R 777 master
1.2 创建Master 容器
get current user id 或者 echo $UID
id <current username>


docker run -dit \
--name postgres \
--restart always \
-e POSTGRES_PASSWORD=<your password> \
-v <your postgres master node data's path>:/var/lib/postgresql/data \
-p 5432:5432 \
-u <current user id> \
postgres[:tag]


eg:
	docker run -dit \
	--name postgres \
	--restart always \
	-e POSTGRES_PASSWORD=123456 \
	-v /var/testPSQL/master:/var/lib/postgresql/data \
	-p 5432:5432 \
	-u 0 \
	postgres:13.1
1.3 Mater的配置
docker exec -it postgres /bin/bash
psql -U postgres
#创建用户
CREATE ROLE replica login replication encrypted password '<your password>';
eg: 
	CREATE ROLE replica login replication encrypted password '1234567';
	
# 退出	
\q
exit
cd <your postgres master node data path>
eg: 
	cd /var/testPSQL/master

echo host replication replica <postgres' slave node IP address>/32 trust >> pg_hba.conf

# 修改配置文件
vi postgresql.conf

listen_addresses = '*' 
wal_level = replica
archive_mode = on
# 重启容器
docker restart postgres

1.4Master节点测试
docker exec -it postgres /bin/bash
psql -U postgres
show archive_mode;

在这里插入图片描述

二、Slave 节点 [10.242.135.51]

2.1创建Slave的数据目录
mkdir -p <your postgres slave node data's path>
madir -p /var/testPSQL/slave 

cd <your postgres slave node data path>
cd madir -p /var/testPSQL/slave 

cd ../ && chmod -R 777 <data directory name> 
chmod -R 777 slave 
2.2 创建Slave容器
get current user id 或者 echo $UID
id <current username>


docker run -dit \
--name postgres \
--restart always \
-e POSTGRES_PASSWORD=<your password> \
-v <your postgres slave node data's path>:/var/lib/postgresql/data \
-p 5432:5432 \
-u <current user id> \
postgres[:tag]


eg:
	docker run -dit \
	--name postgres \
	--restart always \
	-e POSTGRES_PASSWORD=123456 \
	-v /var/testPSQL/slave:/var/lib/postgresql/data \
	-p 5432:5432 \
	-u 0 \
	postgres:13.1
2.3 Slave的配置
docker exec -it postgres /bin/bash
rm -rf /var/lib/postgresql/data/*
pg_basebackup -h <master node's IP> -p 5432 -U replica -Fp -Xs -Pv -R -D /var/lib/postgresql/data
eg:
	pg_basebackup -h 10.242.135.51 -p 5432 -U replica -Fp -Xs -Pv -R -D /var/lib/postgresql/data
# 在容器外部
cd <your postgres slave node data path>
eg:
	cd /var/testPSQL/slave 
touch standby.signal && echo standby_mode = 'on' >> standby.signal

# 修改配置文件
vi postgresql.conf
max_connections = 120                	# must be bigger than the
Master Node
wal_level = replica						
recovery_target_timeline = 'latest'    	
primary_conninfo = 'host=<master node's IP> port=5432 user=replica password=<maser node user "replica"'s password>'	
hot_standby = on   

eg:
	max_connections = 120                	# must be bigger than the
	Master Node
	wal_level = replica						
	recovery_target_timeline = 'latest'    	
	primary_conninfo = 'host=< 10.242.135.51 port=5432 user=replica password=1234567 '	
	hot_standby = on   


三、重启容器测试即可

docker restart postgres
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL主从复制是一种常见的数据库复制技,用于实现数据的冗余备份和读写分离。在主从复制中,一个主数据库(Master)负责处理写操作,而一个或多个从数据库(Slave)则负责接收主数据库的变更并进行复制。 以下是PostgreSQL主从复制的基本原理和步骤: 1. 配置主数据库:在主数据库上,需要修改postgresql.conf文件和pg_hba.conf文件。其中,postgresql.conf文件中需要设置wal_level为replica,max_wal_senders为允许的最大连接数,以及设置archive_mode为on。pg_hba.conf文件中需要添加允许从数据库连接的配置。 2. 创建复制用户:在主数据库上,创建一个用于复制的用户,并赋予REPLICATION角色。 3. 备份主数据库:在主数据库上执行pg_basebackup命令,将主数据库的数据目录备份到从数据库。 4. 配置从数据库:在从数据库上,同样需要修改postgresql.conf文件和pg_hba.conf文件。其中,postgresql.conf文件中需要设置standby_mode为on,并指定recovery.conf文件的位置。pg_hba.conf文件中需要添加允许主数据库连接的配置。 5. 创建recovery.conf文件:在从数据库上创建recovery.conf文件,并设置primary_conninfo参数为主数据库的连接信息。 6. 启动从数据库:在从数据库上启动PostgreSQL服务,它将自动连接到主数据库并开始复制数据。 7. 监控复制状态:可以使用pg_stat_replication视图来监控主从复制的状态,包括复制延迟和连接状态等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值