PostgreSQL主从同步
1 PG数据库主从流复制
1.1 物理流复制原理
备库不断的从主库同步相应的数据,并在备库apply每个WAL record,这里的流复制每次传输单位是WAL日志的record。备库通过同步主库发送的没有界限的一串数据流保持为最新的状态。
1.2 物理流复制特点
1. 延迟极低,不怕大事务
2. 支持断点续传
3. 支持多副本
4. 配置简单
5. 备库与主库物理完全一致,并支持只读
2 PG数据库一主一从异步流复制过程
1. 事务commit后,日志在主库写入wal日志,异步流复制无需等待从库反馈的接收结果。
2. 主库通过日志传输进程将日志块传给从库,从库接收进程收到日志开始回放,最终保证主从数据的一致性。
3 从库同步主库全量数据
3.1 pg_basebackup方式从库同步主库全量数据
主从状态异常
停服务postgresql.service
清理PG从库数据目录$PGDATA
[postgres@localhost ~]$ cd $PGDATA
[postgres@localhost pg_data]$ ls
[postgres@localhost pg_data]$ rm -rf *
pg_basebackup同步主库全量数据
/var/postgresql/soft/pg12.8/bin/pg_basebackup -w -d 'application_name=pgautofailover_standby_2 host=192.168.56.118 port=5432 user=pgautofailover_replicator sslmode=prefer' --pgdata /data/kdcc/postgres/pg_data -U pgautofailover_replicator --verbose --progress --max-rate 100M --wal-method=stream --slot pgautofailover_standby_2
启动服务postgresql.service
[root@localhost system]# systemctl start postgresql.service
主从状态恢复正常
3.2 pg_auto_failover方式从库同步主库全量数据
destroy异常从节点
异常从节点上执行
$ pg_autoctl drop node --pgdata /data/kdcc/postgres/pg_data –destroy
PG集群状态检查
pg_autoctl同步主库全量数据
pg_autoctl create postgres \
--hostname 192.168.56.119 \
--auth trust \
--no-ssl \
--monitor 'postgres://autoctl_node@192.168.56.120:5433/pg_auto_failover?sslmode=prefer'
注意事项:底层也是调用pg_basebackup同步主库全量数据。
启动paf集群
nohup pg_autoctl run &
主从状态恢复正常
PostgreSQL主从同步
本文2024-09-23 01:12:54发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144511.html