Postgresql主从异步流复制方案的深入探究

分类:文章教程 日期: 点击:0

前言

数据库的备份工作在日常生产中极为重要,如果你咨询一个DBA如何才能设计出高可用的数据备份与恢复方案,相信很多人都会从架构上给出很多容灾的意见。但归根到底,如果业务环节中数据库还牵涉到分布式环境,我认为一个好的方案需要达到三大要求:

  • 多副本
  • 持久化
  • 一致性

日常架构设计中,我们不仅要保证数据额的成功备份,还要保证备份的数据可以快速恢复。在众多备份恢复可靠性方案中 主从复制 技术,可以说是最常见的实现,本文主要是介绍postgresql主备数据库的异步流复制的环境搭建与主备切换的操作实践,除了能把一些基础的原理运用在日常的数据库运维中,也可以加深对Postgresql数据库的底层知识了解。

postgres在9.0之后引入了主从的流复制机制,所谓流复制,就是从服务器通过tcp流从主服务器中同步相应的数据。这样当主服务器数据丢失时从服务器中仍有备份。

与基于文件日志传送相比,流复制允许保持从服务器更新。 从服务器连接主服务器,其产生的流WAL记录到从服务器, 而不需要等待主服务器写完WAL文件。

PostgreSQL流复制默认是异步的。在主服务器上提交事务和从服务器上变化可见之间有一个小的延迟,这个延迟远小于基于文件日志传送,通常1秒能完成。如果主服务器突然崩溃,可能会有少量数据丢失。

同步复制必须等主服务器和从服务器都写完WAL后才能提交事务。这样在一定程度上会增加事务的响应时间。

下面的学习与实践主要针对PostgreSQL的异步流复制(本文没有涉及到同步复制、逻辑复制等,如果大家想了解其它的备份方案,可以阅读相关官方文档或其他资料介绍)。

异步流复制的中心思想是:主库上提交事务时不需要等待备库接收WAL日志流并写入到备库WAL日志文件时便返回成功,因此异步流复制的TPS会相对同步流复制要高,延迟更低。

环境准备

操作系统 服务器IP 节点名称 角色
centos 7.2 172.17.0.2 pghost1 主库
centos 7.2 172.17.0.5 pghost2 备库

主要目录规范:

  • 数据目录: /data/pg10/pg_root
  • 表空间目录: /data/pg10/pg_tbs
  • 应用程序目录: /apps/svr/pgsql

要注意的是:编译安装Pg我们使用的是root账户,但是一般情况下,我们对数据库的部署操作等应该使用非root的pg超级管理员账户,所以需要我们预先创建相关用户和目录,并设置相关权限:

$ groupadd postgres

$ useradd postgres -g postgres

$ passwd postgres

$ mkdir -p /data/pg10/pg_root

$ mkdir -p /data/pg10/tbs

$ chown -R postgres:postgres /data/pg10
标签:

网站声明

1、本站所有软件和资料来源互联网,仅供个人学习和研究使用,不得用于任何商业用途。
2、如有侵犯您商标权、著作权或其他合法权利的,请联系我们,本站将在第一时间对此进行核实并处理。
3、本站所有可下载资源,都是按照“原样”提供,本站并未对其做过任何改动。本站不保证本站提供的下载资源的准确性、安全性和完整性。同时,本站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。
4、继续浏览本站,即代表您遵守此声明。