PostgreSQL数据库异步的流复制

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 一、虚拟主机安装1.使用VMware虚拟机安装CentOS操作系统操作系统环境CentOS Linux release 7.2.1511 (Core)软件选择 选择安装GNOME桌面安装位置 选择自动分区2.通过克隆的方式,生成主备两台主机。

一、虚拟主机安装

1.使用VMware虚拟机安装CentOS操作系统
操作系统环境
CentOS Linux release 7.2.1511 (Core)

  • 软件选择 选择安装GNOME桌面
  • 安装位置 选择自动分区

2.通过克隆的方式,生成主备两台主机。
192.168.238.132_master
192.168.238.133_slave

3.使用NAT网络方式

注意事项:
1) 开启服务,否则配置网络时,总是显示网线被拔出
1553504215_1_

2) DHCP方式自动获取IP
测试连接,存在失败的情况,注意是否已经关闭了防火墙

psql -h192.168.238.133 -dtest -Upostgres
psql: could not connect to server: 拒绝连接
    Is the server running on host "192.168.238.133" and accepting
    TCP/IP connections on port 5432?

3) 修改网卡自启动
vi /etc/sysconfig/network-scripts/ifcfg-ens33

ONBOOT=yes

二、数据库安装配置步骤

先在192.168.238.132_master和192.168.238.133_slave均安装PostgreSQL。
安装步骤见【PostgreSQL 10.0 源码安装

主服务器
主服务器地址:192.168.238.132

先创建一个新目录:

mkdir /usr/local/pgsql/pg_archive/

1.首先需要创建一个数据库用户进行主从同步。创建用户replica,并赋予登录和复制的权限

postgres# CREATE ROLE replica login replication encrypted password 'replica'

2.修改pg_hba.conf,允许replica用户来同步
在pg_hba.conf里增加两行:

host     all             all          192.168.238.133/32          trust   #允许133连接到主服务器
host   replication      replica       192.168.238.133/32          md5   #允许133使用replica用户来复制

这样,就设置了replica这个用户可以从192.168.238.133进行流复制请求。
注:
第二个字段必须要填replication

3.修改postgresql.conf

listen_addresses = '*'   # 监听所有IP
archive_mode = on  # 允许归档
archive_command = 'cp %p /opt/pgsql/pg_archive/%f'  # 用该命令来归档logfile segment
wal_level = hot_standby 
max_wal_senders = 32 # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = 256 #设置流复制保留的最多的xlog数目
wal_sender_timeout = 60s #设置流复制主机发送数据的超时时间
max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的

配置完两个文件后重启服务器。

pg_ctl restart

4.测试slave能否连接到master数据库。在slave上运行如下命令:

psql -h 192.168.238.133 -U postgres

如提示无法连接,请检查是否关闭了防火墙。
关闭防火墙

启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld 
开机禁用  : systemctl disable firewalld
开机启用  : systemctl enable firewalld

看看是否能进入数据库。若可以,则正常

2.2 从服务器

1.从主节点拷贝数据到从节点

su - postgres
rm -rf /usr/local/pgsql/data/*   #先将data目录下的数据都清空
pg_basebackup -h 192.168.238.132 -U replica -D /usr/local/pgsql/data -X stream -P  # 从master拷贝数据到slave(基础备份)
mkdir /usr/local/pgsql/pg_archive

2.配置recovery.conf
复制/usr/local/pgsql/share/recovery.conf.sample 到 /usr/local/pgsql/data/recovery.conf

cp /usr/local/pgsql/share/recovery.conf.sample  /usr/local/pgsql/data/recovery.conf

修改recovery.conf

standby_mode = on    # 说明该节点是从服务器
primary_conninfo = 'host=192.168.238.132 port=5432 user=replica password=replica'  # 主服务器的信息以及连接的用户
recovery_target_timeline = 'latest'

3.配置postgresql.conf

wal_level = hot_standby
max_connections = 1000 #一般查多于写的应用从库的最大连接数要比较大
hot_standby = on #说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
wal_receiver_status_interval = 10s # 多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on # 如果有错误的数据复制,是否向主进行反馈

2.3 验证是否部署成功
在主节点上执行:

select client_addr,sync_state from pg_stat_replication;

结果如下:

[postgres@localhost data]$ psql
psql (10.7)
Type "help" for help.

postgres=# select client_addr,sync_state from pg_stat_replication;
   client_addr   | sync_state 
-----------------+------------
 192.168.238.133 | async
(1 row)

postgres=#

说明192.168.238.133是从服务器,在接收流,而且是异步流复制。

此外,还可以分别在主、从节点上运行 ps aux | grep postgres 来查看进程:
主服务器上:

postgres 27480  2536  0 10:40 ?        00:00:00 postgres: wal sender process replica 192.168.238.133(55304) streaming 0/8000140

可以看到有一个 wal sender 进程。

从服务器上:

postgres 24721 24716  0 10:40 ?        00:00:00 postgres: wal receiver process   streaming 0/8000140

可以看到有一个 wal receiver 进程。

至此,PostgreSQL主从流复制安装部署完成。

在主服务器上插入数据或删除数据,在从服务器上能看到相应的变化。从服务器上只能查询,不能插入或删除。

参考文章:
https://www.jianshu.com/p/2d07339774c0

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
11天前
|
关系型数据库 分布式数据库 数据库
【PolarDB 开源】PolarDB 性能调优实录:提升数据库集群吞吐量的技巧
【5月更文挑战第22天】PolarDB 性能调优关键点包括硬件资源配置、数据库参数调整、索引优化、分区策略、事务优化及性能监控。创建高效索引如`CREATE INDEX idx_name ON table_name (column_name);`,根据业务场景选择分区方式,调整事务隔离级别以提升并发性能。监控 CPU、内存等指标,定期维护数据库,结合业务特点综合调优,从而提升数据库集群吞吐量。这些技巧有助于发挥PolarDB潜力,支持业务高效运行。
219 6
|
2天前
|
存储 关系型数据库 数据管理
探索PostgreSQL的高级数据库操作
【5月更文挑战第31天】探索PostgreSQL的高级特性,如分区表提升大数据查询性能,物化视图加速复杂查询,窗口函数计算累计值,全文搜索快速检索文本,及并行查询优化大规模数据处理。通过这些功能,PostgreSQL能更高效地管理与分析数据,应对复杂场景。
|
5天前
|
人工智能 关系型数据库 分布式数据库
【PolarDB 开源】PolarDB 与 AI 融合:智能数据库管理与预测性维护
【5月更文挑战第28天】PolarDB结合AI,开创数据库管理新纪元,实现智能优化、资源预测与分配、预测性维护。通过AI算法提升查询效率,动态调整资源,提前发现故障,增强安全。示例代码显示如何用AI预测查询时间。面对挑战,持续学习改进,未来二者融合将为数据库管理带来更多创新与竞争力。
82 0
|
5天前
|
存储 监控 关系型数据库
关系型数据库数据库设计优化
【5月更文挑战第18天】关系型数据库数据库设计优化
19 1
|
6天前
|
SQL 关系型数据库 分布式数据库
【PolarDB开源】PolarDB Proxy配置与优化:提升数据库访问效率
【5月更文挑战第27天】PolarDB Proxy是阿里云PolarDB的高性能数据库代理,负责SQL请求转发和负载均衡。其关键配置包括:连接池管理(如最大连接数、空闲超时时间),负载均衡策略(轮询、权重轮询、一致性哈希),以及SQL过滤规则。优化方面,关注监控与调优、缓存策略、网络优化。通过这些措施,可提升数据库访问效率和系统稳定性。
106 1
|
7天前
|
Cloud Native 关系型数据库 分布式数据库
【PolarDB开源】PolarDB与云原生数据库比较:特点、优势与选型建议
【5月更文挑战第26天】PolarDB是阿里云的云原生数据库,以其计算存储分离、一写多读架构和数据一致性保障脱颖而出。与Amazon Aurora和Google Cloud Spanner相比,PolarDB在中国市场更具优势,适合读多写少的场景和需要严格数据一致性的应用。企业在选型时应考虑业务需求、地域、读写比例和兼容性。PolarDB作为优秀解决方案,将在云原生数据库领域持续发挥关键作用。
120 1
|
9天前
|
Cloud Native 关系型数据库 分布式数据库
【PolarDB开源】PolarDB数据迁移实战:平滑过渡至云原生数据库
【5月更文挑战第24天】本文介绍了如何平滑迁移数据至阿里云的云原生数据库PolarDB,包括迁移准备、策略选择、步骤、验证及示例代码。通过需求分析、环境准备和数据评估,选择全量、增量或在线迁移策略。使用数据导出、导入及同步工具(如DTS)完成迁移,并在完成后验证数据一致性、性能和安全。正确执行可确保业务连续性和数据完整性。
111 1
|
9天前
|
关系型数据库 分布式数据库 数据库
【PolarDB开源】PolarDB安全策略:强化数据库防护的多维度措施
【5月更文挑战第24天】PolarDB,阿里云的高性能云原生数据库,提供全面的安全策略,包括SSL/TLS加密、VPC网络隔离、用户访问控制、数据加密和监控审计,构建多层防护体系。通过角色权限、列级加密和审计日志等措施,确保数据传输、访问和存储的安全。建议定期审计、更新系统、安全培训和备份策略,以增强数据库安全性。
116 2
|
9天前
|
关系型数据库 分布式数据库 数据库
【阿里云云原生专栏】云原生时代的数据库选型:阿里云RDS与PolarDB对比分析
【5月更文挑战第24天】阿里云提供RDS和PolarDB两种数据库服务。RDS是高性能的在线关系型数据库,支持MySQL等引擎,适合中小规模需求;而PolarDB是分布式数据库,具备高扩展性和性能,适用于大规模数据和高并发场景。RDS与PolarDB在架构、性能、弹性伸缩、成本等方面存在差异,开发者应根据具体需求选择。示例代码展示了如何通过CLI创建RDS和PolarDB实例。
467 0
|
10天前
|
监控 关系型数据库 分布式数据库
【PolarDB开源】PolarDB监控与报警系统构建:确保数据库健康运行
【5月更文挑战第23天】阿里云PolarDB因其存储计算分离、高兼容性等特性受企业青睐。为了确保其稳定运行,文章介绍了构建PolarDB监控与报警系统的做法。通过阿里云云监控服务开启和自定义监控视图,关注CPU、内存等关键指标,并设置告警规则。此外,通过自定义脚本与开源工具集成,满足特殊监控需求,实现全面、精准的监控报警,保障数据库健康运行。
36 2

热门文章

最新文章