[postgres]配置主从异步流复制
前言
环境信息
| IP | 角色 | 操作系统 | PostgreSQL版本 |
|---|---|---|---|
| 192.168.1.112 | 主库 | Debian 12 | 15.3 |
| 192.168.1.113 | 从库 | Debian 12 | 15.3 |
配置主从
- 修改主库的postgresql.conf文件。修改此配置文件需重启数据库服务。归档脚本内容见"附录-clean_archivelog"
listen_addresses = '*'
archive_mode = on
archive_command = 'bash /home/postgres/scripts/clean_archivelog.sh %f %p'
- 主库创建用户
create user replicator replication password '1234qwer';
- 修改主库pg_hba.conf
host replication replicator 192.168.1.113/24 scram-sha-256
- 重载pg_hba.conf的配置
pg_ctl reload -D /home/postgres/apps/pgsql/data/
- 删除从库的数据目录,备份主库的数据
rm -rf /home/postgres/apps/pgsql/data
mkdir /home/postgres/apps/pgsql/data
chmod -R 700 /home/postgres/apps/pgsql/data
pg_basebackup -h 192.168.1.112 -p 5432 -U replicator -D /home/postgres/apps/pgsql/data/ -P -v -R -X stream -C -S slot1
- 备份完成后,从库的data目录下自动生成
postgresql.auto.conf和standby.signal文件。postgresql.auto.conf包含主库节点的相关连接信息standby.signal用于标识当前节点为从库节点
- 启动从库。PS:因为从库的配置皆从主库复制而来,因此归档脚本也要在从库服务器存在。
pg_ctl start -D /home/postgres/apps/pgsql/data -l ~/logfile
测试
- 主库建库建表添数,之后查看从库是否同步数据
create database reptest;
\c reptest
create table t1(id int, time timestamp);
insert into t1 values (1, now());
- 主库psql查看从库的相关信息
-- 启用扩展输出
\x
-- 检查复制状态
select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid | 3794
usesysid | 16388
usename | replicator
application_name | walreceiver
client_addr | 192.168.1.113
client_hostname |
client_port | 41708
backend_start | 2024-01-27 18:44:08.326476+08
backend_xmin |
state | streaming
sent_lsn | 0/33FF750
write_lsn | 0/33FF750
flush_lsn | 0/33FF750
replay_lsn | 0/33FF750
write_lag |
flush_lag |
replay_lag |
sync_priority | 0
sync_state | async
reply_time | 2024-01-27 18:54:58.764699+08
- 查看主库进程,会有
walsender进程
$ ps -ef | grep postgres:
postgres 3794 3739 0 18:44 ? 00:00:00 postgres: walsender replicator 192.168.1.113(41708) streaming 0/33FF750
- 查看从库进程,会有
walreceiver进程
$ ps -ef | grep postgres:
postgres 1309 1305 0 18:44 ? 00:00:01 postgres: walreceiver streaming 0/33FF838
附录
clean_archive
#!/bin/bash
set -u
log_dt=$(date +%F)
archivelog_dir="/home/postgres/archivelog/${log_dt}"
if [ ! -d "${archivelog_dir}/$1" ]; then
mkdir -p "${archivelog_dir}/$1"
fi
cp --preserve=timestamps $2 ${archivelog_dir}/$1
find ${archivelog_dir}/* -type f -mtime +7 | xargs rm -f
[postgres]配置主从异步流复制的更多相关文章
- postgres配置主从流复制
postgres主从流复制 postgres在9.0之后引入了主从的流复制机制,所谓流复制,就是从库通过tcp流从主库中同步相应的数据.postgres的主从看过一个视频,大概效率为3w多事务qps. ...
- postgresql数据库异步流复制hot standby环境搭建
生命不息,test不止. 最近组里面修改了几个postgresql的bug,要进行回归测试,除了前面提到的WAL的RT测试和Mirroring Controller的RT测试,还要测试下postgre ...
- KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(异机复制)
案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...
- postgres主从基于流复制
环境: CentOS Linux release 7.6.1810 (Core) 内核版本:3.10.0-957.10.1.el7.x86_64 node1:192.168.216.130 node2 ...
- Postgressql高可用(pgpool+异步流复制)
文档结构: 由于博主之前是Oracle dba,oracle 高可用一般是rac,以及搭建ADG,一个是基于实例的高可用,一个是基于数据的容灾,甚至也有rac+adg的方式.Postgres有同步和异 ...
- KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(同一主机)
案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...
- postgresql 异步流复制hot standby搭建
先说说环境,主从库版本都是9.5,主库在CentOS物理机上,从库在Ubuntu虚拟机上 一.主库上的操作: 1.添加同步访问规则: host replication dbuser ...
- Postgresql 9.6 搭建 异步流复制 和 同步流复制 详细教程
Basic Replication If you’re feeling overwhelmed, try setting up a slave to see how easy it is! We’ll ...
- PostgreSQL异步主从流复制搭建
1 总体规划 Master库 Slave库 操作系统 CentOS Linux release 7.5.1804 CentOS Linux release 7.5.1804 处理器 1 1 内存 ...
- 再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署
前言 在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应.大家发现了另一款开源的数据库: PostgreSQL. 虽然centos自带版本9.2也可以用,但是最近的几次 ...
随机推荐
- 企业需要知道的5个 IAM 最佳实践
在之前的文章中,我们了解了在代码发布到 GitHub 之前如何管理用户权限.但你知道吗?人为错误竟然是迄今为止数据泄露的主要原因!根据统计,高达95%的数据泄露是由配置错误和不良网络环境引起的.黑客通 ...
- 性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
大规模Windows环境下,采用Nginx反向代理服务后,操作系统会产生较多TIME_WAIT的TCP(Transmission Control Protocol)连接,操作系统默认TIME_WAIT ...
- Kubernetes(K8S) 安装 Metrics-Server kubectl top (metrics-server) node NotFound
kubectl top (metrics-server) node NotFound components.yaml 网上的各种方法都有问题,找到了一个完整版的 yaml apiVersion: v1 ...
- Hugging Face: 代码生成模型的预训练和微调
和大家分享我们的机器学习工程师 Loubna Ben Allal 在 10 月上海 KubeCon 大会的主题演讲 题目是: 代码生成模型的预训练和微调 演讲介绍了构建和训练大型代码模型比如: Sta ...
- 又强大了,LiteFlow里程碑版本2.8.0发版注记!全新的DSL会惊艳到你吗?
一 New version! 2.8.0 go!!! 这是我在提交中央仓库前写下的简短description.我希望这个版本能把LiteFlow带向更远的地方. 曾经在半年前就计划的新的DSL计划,但 ...
- “n个球放到m个盒子”问题整理(Twelvefold way)
这个算法的正式名字是:"Twelvefold way",共用12种情况. 本文转载自:自为风月马前卒的博文:浅谈"n个球"和"m个盒子"之间 ...
- acwing算法提高课程笔记—数字三角形模型,最长上升子序列模型
转自自网络,仅作为学习使用 1015摘花生 /*Hello Kitty想摘点花生送给她喜欢的米老鼠. 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来. 地里每个道路的交叉点上都 ...
- 深入学习和理解 Redux
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/jhgQXKp4srsl9_VYMTZXjQ作者:曾超 Redux官网上是这样描述Redux, ...
- 在vue项目中使用momentjs获取今日、昨日、本周、本月、上月、本年、上年等日期,时间比较计算
https://blog.csdn.net/qq_15058285/article/details/119925056
- P1064-DP【绿】
好多好多天前写了这道题的50分代码,然后不知道错在哪里反复调没调对.然后这周我极度忙,忙死了,好不容易有一点时间再来审视这道题了,然后我5分钟想明白了一切...意识到自己此前的错误有多弱智... 把D ...