postgresql实现单主单从

实现步骤

1.主库创建一个有复制权限的用户

sql 复制代码
CREATE ROLE 用户名
 login # 有登录权限的角色即是用户
 replication #复制权限
encrypted password '密码';

2.主库配置开放从库外部访问权限

修改 pg_hba.conf 文件 (相当于开放防火墙)

sql 复制代码
# 类型  数据库        用户            地址                 方法

# "local" is for Unix domain socket connections only
host   all             上面创建的用户名           从库地址            trust


# Allow replication connections from localhost, by a user with the
# replication privilege.
host   replication             上面创建的用户名           从库地址            trust

上面是允许登录的 地址

下面是允许复制的地址

3.设置主库wal复制

修改主库配置文件 postgresql.conf

sql 复制代码
wal_level = replica # wal级别:minimal, replica, or logical

max_wal_senders = 4		# 最大发送进程数
wal_keep_size = 16		# 多大wal文件被写满,单位M; 0 disables
wal_sender_timeout = 60s	# wal发送超时时间

max_connections = 100 # 最大连接数,从库需要大于主库这个值

4.主库备份覆盖从库数据文件

1.删除从库的数据文件

2.使用物理备份命令备份主库数据文件到从库

sql 复制代码
pg_basebackup -h 主库地址 -p 主库端口 -D 复制到从库数据目录  -U 有复制权限的用户 -Fp -Xs -Pv -R --checkpoint=fast

5.配置从库备份主库信息

sql 复制代码
max_connections = 200

recovery_target_timeline = 'latest' # 'current', 'latest', or timeline ID 恢复哪个时间点


primary_conninfo = 'host=10.0.12.12 port=5432 user=用户名 password=密码'			# 连接主库信息
hot_standby = on			# "off" disallows queries during recovery
max_standby_streaming_delay = 30s	# 最大延迟时间
wal_receiver_status_interval = 10s	# 向主库发送wal接收状态时间
hot_standby_feedback = on		# 发送错误信息
wal_receiver_timeout = 60s		# 接收wal超时时间
wal_retrieve_retry_interval = 5s	# 等待重试时间间隔

6.重启从库

测试

查询复制信息

sql 复制代码
select client_addr,sync_state from pg_stat_replication;

表示主从部署成功

主宕机,从升主

模拟主库宕机,从库手动升级为主库,原主库恢复变成从库。

1.主库停机

2.从库使用命令 pg_ctl promote升级为主库

3.这时恢复原主库作为从库,需要同步主库数据

sql 复制代码
# 先删除这个从库数据,再同步主库数据
pg_basebackup -h 新主库地址 -D /var/lib/postgresql/data -p 新主库端口 -U 备份用户 -Fp -Xs -Pv -R --checkpoint=fast

还有一种 利用pg_rewind 命令实现增量同步数据这里没有实现

4.重启从库

5.验证

主库执行

select client_addr,sync_state from pg_stat_replication;

相关推荐
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G1 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备1 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远1 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
geovindu2 天前
sql: Transaction & Concurrency Patterns using postgresql 18
postgresql·数据库开发·数据库架构
2601_962218612 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安2 天前
MySQL-触发器
数据库·mysql
白远山2 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro2 天前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理