PG数据库异步流复制


背景说明

  • 最近想进行一个数据库高可用课题的研究.
  • 因为之前某种原因,这次选择的是PG数据库.
  • 为了简单起见, 暂时采用PG异步流复制的场景.
  • 这次仅是为了测试, 不考虑高可用绿色切换的场景.

设置过程

  • 本次学习自如下网站:
  1. http://blog.itpub.net/26442936/viewspace-2771065/
  • 原作者对数据非常有研究, 这里仅是进行一次简单学习与整理.

设置过程

  • 安装PG数据库.
  1. yum localinstall *.rpm
  • 需要主要主从库都能够准确安装上数据库.
  • 第一个数据库需要执行创建操作
  1. # 本次是 PG13为例进行说明
  2. systemct status postgresql-13
  3. # 查看数据库的信息
  4. #一般启动脚本为 /usr/pgsql-13/bin/ 数据目录为: /var/lib/pgsql/13/data
  5. su - postgres
  6. # 切换用户后进行数据库初始化的操作
  7. cd /usr/pgsql-13/bin
  8. ./initdb -D /var/lib/pgsql/13/data

设置过程

  • 数据库安装完成之后需要进行流复制的初始化设置.
  • 设置的事项应该不需要太多.
  1. #修改 postgresql.conf的设置
  2. #主要有两处
  3. listen_addresses ='*'
  4. wal_level = replica
  5. #修改pg_hba.conf的配置文件
  6. host replication repl the_Slave_server_ip/32 md5
  7. host replication repl the_master_server_ip/32 md5
  8. # 注意 repl 是需要创建一个数据库的用户
  9. # 需要使用pgsql 命令执行下来.
  10. create role repl login replication encrypted password 'yourpassword';

设置过程

  • 需要设置.pgpass 的默认配置
  1. vim /postgres/can/rw/.pgpass
  2. #添加内容为:
  3. The_ip_of_master:5432:replication:repl:$yourpassword
  4. # 注意这个文件需要让备份库可以读写.
  • 设置完成后需要执行一下重启操作
  1. # 注意是在主库
  2. systemctl restart postgresql-13

设置过程

  • 主库备份
  1. pg_basebackup -h The_ip_of_master -U repl -D /var/lib/pgsql/13/databackup -Xs -P -R
  2. # 注意需要使用非127.0.0.1的ip不然容易出问题.
  3. # 这里会复制一下别人的专门说法.
  • 参数说明
  1. # /var/lib/pgsql/13/databackup是从库创建一个新目录,用来恢复主库的cluster databases
  2. # -h 主库ip地址
  3. # -U 指定连接主库的用户
  4. # -D 从库复制数据的目录
  5. # -Xs 主库备份时,以流式传输WAL日志内容
  6. # -P 进度报告
  7. # -R 创建一个standby.signal空文件,用于在集群中激活standby server,有这个standby.signal文件即为备库;
  8. 另外也可以把主库一些连接信息primary_conninfo写入备库postgresql.auto.conf

设置过程

  • 从库的处理
  1. 注意需要将上一步 -D 产生的目录 复制到从数据库的特定目录上面
  2. scp -r /var/lib/pgsql/13/databackup postgres@10.110.82.185:/var/lib/pgsql/13
  3. 注意文件目录的权限和属主必须保持准确.
  4. 注意需要修改启动脚本. 修改 systemd service 文件里面的 数据目录
  5. 处理步骤与前面相同
  6. systemctl status postgresql-13
  7. vi /usr/lib/systemd/system/postgresql-13.service
  8. 修改文件.
  9. 添加核心配置文件.

设置过程

  • 注意 pg_basebackup 会产生一个文件: standby.signal
  1. 注意包含这个文件的数据目录 PG数据库启动之后
  2. 会提示没有写入权限
  3. 如果需要改为主库, 需要移除这个文件
  4. 注意这个文件一般是空的, 需要从 postgresql.auto.conf
  5. 复制配置文件到此目录才可以实现.
  6. 注意需要注意文件的权限,避免文件丢失权限导致无法启动.

设置过程

  • 启动从库
  1. systemctl restart postgresql-13
  • 验证流复制是否准确
  1. # 主库查询
  2. select * from pg_stat_replication;
  3. # 从库查询
  4. select * from pg_stat_wal_receiver;

简单验证

  • 主库插入从库验证
  1. #主库设置:
  2. create table zhaobsh (master varchar(200))
  3. insert into zhaobsh values ('主库自主插入')
  4. #从库查询:
  5. select * from zhaobsh
  6. # 验证能够查询出结果来

PG数据库异步流复制的更多相关文章

  1. postgresql数据库异步流复制hot standby环境搭建

    生命不息,test不止. 最近组里面修改了几个postgresql的bug,要进行回归测试,除了前面提到的WAL的RT测试和Mirroring Controller的RT测试,还要测试下postgre ...

  2. PgSQL · 特性分析 · PG主备流复制机制

    原文地址:http://mysql.taobao.org/monthly/2015/10/04/ PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...

  3. Postgressql高可用(pgpool+异步流复制)

    文档结构: 由于博主之前是Oracle dba,oracle 高可用一般是rac,以及搭建ADG,一个是基于实例的高可用,一个是基于数据的容灾,甚至也有rac+adg的方式.Postgres有同步和异 ...

  4. postgresql 异步流复制hot standby搭建

    先说说环境,主从库版本都是9.5,主库在CentOS物理机上,从库在Ubuntu虚拟机上 一.主库上的操作: 1.添加同步访问规则: host   replication     dbuser     ...

  5. Postgresql 9.6 搭建 异步流复制 和 同步流复制 详细教程

    Basic Replication If you’re feeling overwhelmed, try setting up a slave to see how easy it is! We’ll ...

  6. PostgreSQL异步主从流复制搭建

    1 总体规划   Master库 Slave库 操作系统 CentOS Linux release 7.5.1804 CentOS Linux release 7.5.1804 处理器 1 1 内存 ...

  7. PostgreSQL流复制

    原理机制 参考--https://yq.aliyun.com/articles/51009 主备总体结构 PG主备流复制的核心部分由walsender,walreceiver和startup三个进程组 ...

  8. 再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署

    前言 在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应.大家发现了另一款开源的数据库: PostgreSQL. 虽然centos自带版本9.2也可以用,但是最近的几次 ...

  9. PostgreSQL流复制记录

    参考了别人的部分,添加了自己在实践中的内容,仅做记录. 1.同步流复制中 主机操作 1.1postgresql.conf wal_level = hot_standby # 这个是设置主为wal的主机 ...

  10. PostgreSQL主备流复制机制

    原文出处 http://mysql.taobao.org/monthly/2015/10/04/ PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...

随机推荐

  1. CIO们开始将软件供应链升级为安全优先级top

    开源之所以在软件开发中大量使用的原因是它提供了经过良好测试的构建块,可以加速复杂应用程序和服务的创建.但是第三方软件组件以及包和容器的便利性同时也带来了风险--软件供应链攻击. 软件供应链攻击日益普遍 ...

  2. 挖掘优质短视频超百万条,火山引擎DataLeap助力电商平台生态治理

     更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   在人们的日常生活中,网购已经成为人们生活中不可或缺的购物形式.   根据<中国社交电商行业发展白皮书( ...

  3. PPT 呼吸感

    任何元素都应该保持一定的距离,留出可以"呼吸"的空间 呼吸感 怎么营造 不要让内容超出/接近边框 类似的元素摆放在一起 控制 行间距/字间距 行间距:1.3.字间距:1.0 :行间 ...

  4. Jenkins Blue Ocean

    介绍 Blue Ocean 是 pipeline 的可视化UI.同时兼容经典的自由模式的 job.Jenkins Pipeline 从头开始设计,但仍与自由式作业兼容,Blue Ocean 减少了经典 ...

  5. Spring Boot 接口返回文件流

    import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; ...

  6. Python 网络舆情分析系统,舆论可视化界面

    1 简介 舆情管理系统,这不仅仅可以帮助当地的管理人员迅速的排查跟本地有关的负面言论,还可以避免网民因为本身意识不到位而评论或发布一些不好的观点的情况,最终的目的就是帮助社会更好的发展. 2 技术栈 ...

  7. 拥抱智能,AI 视频编码技术的新探索

    随着视频与交互在日常生活中的作用日益突显,愈发多样的视频场景与不断提高的视觉追求对视频编码提出更高的挑战.相较于人们手工设计的多种视频编码技术,AI 编码可以从大数据中自我学习到更广泛的信号内在编码规 ...

  8. 你不知道的vue3:使用runWithContext实现在非 setup 期间使用inject

    前言 日常开发时有些特殊的场景需要在非 setup 期间调用inject函数,比如app中使用provide注入的配置信息需要在发送http请求时带上传给后端.对此我们希望不在每个发起请求的地方去修改 ...

  9. AtCoder Beginner Contest 195 Editorial

    AtCoder Beginner Contest 195 Editorial Problem A - Health M Death(opens new window) 只要检查 \(H\equiv 0 ...

  10. 玩转AIGC,5分钟 Serverless 部署 Stable Diffustion 服务

    有没有一种可能,其实你早就在AIGC了?阿里云将提供免费Serverless函数计算产品资源,邀请你,体验一把AIGC级的毕加索.达芬奇.梵高等大师作画的快感.下面请尽情发挥你的想象空间!!双重奖品设 ...