[postgres]配置主从异步流复制

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: [postgres]配置主从异步流复制

前言

环境信息

IP 角色 操作系统 PostgreSQL版本
192.168.1.112 主库 Debian 12 15.3
192.168.1.113 从库 Debian 12 15.3

配置主从

  1. 修改主库的postgresql.conf文件。修改此配置文件需重启数据库服务。归档脚本内容见"附录-clean_archivelog"
listen_addresses = '*'
archive_mode = on
archive_command = 'bash /home/postgres/scripts/clean_archivelog.sh %f %p'
  1. 主库创建用户
create user replicator replication password '1234qwer';
  1. 修改主库pg_hba.conf
host replication replicator 192.168.1.113/24 scram-sha-256
  1. 重载pg_hba.conf的配置
pg_ctl reload -D /home/postgres/apps/pgsql/data/
  1. 删除从库的数据目录,备份主库的数据
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
  1. 备份完成后,从库的data目录下自动生成postgresql.auto.confstandby.signal文件。
  1. postgresql.auto.conf包含主库节点的相关连接信息
  2. standby.signal用于标识当前节点为从库节点
  1. 启动从库。PS:因为从库的配置皆从主库复制而来,因此归档脚本也要在从库服务器存在。
pg_ctl start -D /home/postgres/apps/pgsql/data -l ~/logfile

测试

  1. 主库建库建表添数,之后查看从库是否同步数据
create database reptest;
\c reptest
create table t1(id int, time timestamp);
insert into t1 values (1, now());
  1. 主库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
  1. 查看主库进程,会有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
  1. 查看从库进程,会有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
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
Linux 测试技术 网络安全
VoIP网络电话(一):服务器搭建
前段时间有朋友按照教程搭建服务器,登录时报错“Operation is unauthorized because missing credential”,最近一直没空出来时间解决一下。
1936 0
|
7月前
|
机器学习/深度学习 编解码 人工智能
Kimi开源MoE架构多模态推理模型,小激活参数,大能量!
最近Moonshot AI推出了 Kimi-VL,这是一个高效的开源混合专家(MoE)视觉-语言模型(VLM),它提供了先进的多模态推理、长上下文理解以及强大的代理能力——所有这些功能都只需激活其语言解码器中的2.8B参数(Kimi-VL-A3B)。
417 1
|
9月前
|
关系型数据库 MySQL 分布式数据库
客户说|太美医疗选择阿里云PolarDB,助力医药研发数据安全应用
客户说|太美医疗选择阿里云PolarDB,助力医药研发数据安全应用
311 1
|
12月前
|
SQL PHP 数据库
19 PHP如何利用PDO获取结果集
路老师在知乎上分享了关于PHP语言的知识,帮助大家入门并深入了解PHP。本文介绍了PDO中获取结果集的三种方法:`fetch()`、`fetchAll()` 和 `fetchColumn()`,并通过具体案例展示了如何使用这些方法从数据库中获取数据并展示在网页上。
422 5
|
存储 移动开发 算法
Quorum NWR:通过仲裁实现数据一致性
Quorum NWR:通过仲裁实现数据一致性
236 11
|
存储 Prometheus 监控
在Ubuntu系统上安装与配置Prometheus的步骤
通过以上步骤,您应该已经成功在Ubuntu系统上安装并配置了Prometheus。您现在可以开始使用Prometheus收集和分析您的系统和应用程序的指标数据了。
877 1
|
关系型数据库 应用服务中间件 数据库
如何安装和配置 Django 与 Postgres、Nginx 和 Gunicorn
如何安装和配置 Django 与 Postgres、Nginx 和 Gunicorn
136 0
|
数据库
异步复制与同步复制结合
异步复制与同步复制结合
266 4
|
网络安全 开发工具
zookeeper解决Error contacting service. It is probably not running.
应用场景 安装了zookeeper集群之后,应用命令zkServer.sh start后,启动了zookeeper服务,用jps进程发现存在QuorumPeerMain进程,但是查看zookeeper状态的时候,发现报Error contacting service. It is probably not running.错误,提示服务并没有启动,那这是什么原因呢?原因可能有多种造成的,下面我们来分析一下。
29099 1