os :oel 6.8
postgresql: 9.6.3

PostgreSQL9.0 standby数据库在应用WAL日志的同时,也可以提供只读服务,
这是PostgreSQL9.0中最激动人心的功能,这个功能在oracle数据库中也只是最新版本11g中才有的新功能。
这个功能在oracle中叫 active dataguard,在PostgreSQL中称为 hot standby。

在利用日志恢复数据的同时可以用只读的方式打开数据库,用户可以在备用数据库上进行查询、报表等操作,也可用做读写分离。

在PostgreSQL9.0之前,也可以搭建standby数据库,但standby数据库只能处于恢复状态中,不能打开,也不支持只读打开。
而这种情况在9.0之后彻底改变了。

PostgreSQL 9.0中日志传送的方法有两种:

基于文件(base-file)的传送方式,这种方式是PostgreSQL9.0之前就提供的方法。
也就是服务器写完一个WAL日志文件后,才把WAL日志文件拷贝到standby数据库上去应用。类似于oracle dg 的 arch 方式

流复制(streaming replication)的方法,这是PostgreSQL9.0才提供的新方法。
这个方法就是事务提交后,就会把生成的日志异步的传送到standby数据库上应用,
这比基本文件的日志传送方法有更低的数据延迟。类似于oracle dg 的 lgwr sync/async 方式

master 库创建复制用户

master库参数调整

$ vi postgresql.confalter system set listen_addresses = '0.0.0.0';
alter system set port = '5432';alter system set wal_level = 'logical';
alter system set fsync = on;
alter system set synchronous_commit = on;
alter system set wal_sync_method = fdatasync;
alter system set full_page_writes = on;
alter system set wal_log_hints = on;alter system set wal_keep_segments = '100';
alter system set max_wal_senders = '10';alter system set hot_standby = 'on';alter system set archive_mode = 'on';
alter system set archive_command = 'cp %p /mnt/pgarchive/%f < /dev/null';
alter system set archive_timeout = '300';

listen_addresses = ‘*’ 表示在所有的ipv4、ipv6地址上添加监听
listen_addresses = ‘0.0.0.0’ 表示在所有的ipv4地址上添加监听

master库重启

$ pg_ctl stop -m fast -D /var/lib/pgsql/9.6/main/
$ pg_ctl start -D /var/lib/pgsql/9.6/main/

master机器上,创建 replicator 用户:

$ psql
CREATE USER replicator REPLICATION LOGIN ENCRYPTED PASSWORD 'pass0rd';

master库修改 pg_hba.conf 文件

$ vi pg_hba.conf
host     replication     replicator        192.168.56.0/24         md5
$ psql -c "select pg_reload_conf();"

说明允许用户postgres 从192.168.56.0/24 网络上发起到本地数据库的流复制,使用md5

master切换日志

$ psql -c "select pg_switch_xlog();"

slave库参数调整

postgresql停止的前提下,删除data目录的内容:

$ rm -rf /var/lib/pgsql/9.6/main/

slave库修改参数

$ vi postgresql.confwal_level = 'logical'
fsync = on
synchronous_commit = on
wal_sync_method = fdatasync
full_page_writes = on
wal_log_hints = onwal_keep_segments = '100'
max_wal_senders = '10'
hot_standby = 'on'

slave库执行 pg_basebackup 拉取文件

$ pg_basebackup -h 192.168.56.201 -D /var/lib/pgsql/9.6/main/ -U replicator -v -P -R-D, --pgdata=DIRECTORY receive base backup into directory
-v, --verbose          output verbose messages
-P, --progress         show progress information
-R, --write-recovery-conf  write recovery.conf for replication

slave库ecovery.conf文件

$ vi /var/lib/pgsql/9.6/main/recovery.conf#restore_command = ''
#archive_cleanup_command = ''
standby_mode = 'on'
recovery_target_timeline = 'latest'
primary_conninfo='host=192.168.56.201 port=5432 user=replicator password=pass0rd'
trigger_file = '/tmp/postgresql.trigger'

slave启动服务

$ pg_ctl start -D /var/lib/pgsql/9.6/main/

数据验证

master端查看replication状态

select * from pg_stat_replication ;
select client_addr,pg_xlog_location_diff(sent_location, write_location) as write_delay,pg_xlog_location_diff(sent_location, flush_location) as flush_delay,pg_xlog_location_diff(sent_location, replay_location) as replay_delay from pg_stat_replication;

同步复制

alter system set synchronous_commit = 'on';
alter system set synchronous_standby_names = '*';    pg_ctl restart -D /var/lib/pgsql/9.6/main/pg_ctl reload -D /var/lib/pgsql/9.6/main/
select pg_reload_conf();

slave端也要修改 recovery.conf

primary_conninfo = 'host=192.168.56.201 port=5432 user=replicator password=pass0rd application_name=node2'

增加了 application_name=node2
不过采用同步的方式最好配置多台slave,防止单台slave宕机导致master上无法执行事务

alter system set synchronous_standby_names = 'node2,node3';
或者
alter system set synchronous_standby_names = '*';

转载于:https://www.cnblogs.com/ctypyb2002/p/9792901.html

pg_basebackup 配置 stream replication 异步/同步相关推荐

  1. pgpool 之四 2 pgpool + 2 postgresql 的 stream replication 模式

    os: ubuntu 16.04 db: postgresql 9.6.8 pgpool: pgpool-II-3.7.7 pgpool 简介 准确的名字是Pgpool-II,这里简称为pgpool. ...

  2. Android下的配置管理之道之主从gerrit配置使用replication插件

    gerrit配置使用replication插件 最终实现的效果如下图所示 实现员工下带代码从一个从gerrit下载,上传代码到主gerrit上. 首先是主gerrit服务器上面要配置一下ssh相关的 ...

  3. Oracle Stream Replication技术

    Stream 是Oracle 的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用. Oracle 的消息队列是通过发布/订阅的方式来解决事件管理.流复制(Stream re ...

  4. mysql双节点安装_快速安装及配置MySQL Replication双主节点集群--及改变数据保存目录...

    192.168.1.101  master/slave 192.168.1.102  slave 192.168.1.103  slave 操作系统均为centos6.5 原理图: 1. 分别安装my ...

  5. 用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核...

    一,为A组在X单独另建一个MYSQL服务器(MYSQL B),A组平时更新的数据库为MYSQL B.待MYSQL B的数据审核准确无误后.发布给现在布置在X上的MYSQL服务器(MYSQL A).并进 ...

  6. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步

    1.什么是 Rsync? Rsync 是一个开源的快速备份工具,是Linux和UNIX操作系统默认安装的组件之一,可在不同主机间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步 ...

  7. 一个轻巧高效的多线程c++stream风格异步日志(一)

    一个轻巧高效的多线程c++stream风格异步日志 一个轻巧高效的多线程c++stream风格异步日志 前言 功能需求 性能需求 Logger实现 LogStream类 Logger类 LogStre ...

  8. centos 多台 文件夹同步_CentOS7配置rsync实现文件同步

    rsync(remote synchronize )是一个远程文件同步工具,支持多个操作系统,用于在多台服务器之间同步目录和文件.rsync采用增量传输文件的方法,只传输新文件和修改过的文件,而不是每 ...

  9. python协程详解_对Python协程之异步同步的区别详解

    一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...

最新文章

  1. 【牛腩新闻发布系统】系统发布06
  2. mysql查询大于等于效率_mysql 中4 OR 6的效率要大于 !=5?
  3. 【译】KNOWLEDGE EXTRACTION FROM UNSTRUCTURED TEXTS
  4. 方向盘的正确驾驭方法
  5. 动力环境监控系统论文_浅谈动力环境监控系统技术标准
  6. 删除计算机360云盘,win7系统怎么取消电脑右键保存到360云盘选项
  7. 第七周项目4-计算一个程序猿的周工资
  8. 前端/JS笔记-利用JS/正则判断input是否存数字以及字母加数字
  9. [转]DPM2012系列之十八:如何保护工作组计算机
  10. TensorFlow神经网络(三)神经网络优化
  11. 4月18日会议总结(整理—祁子梁)
  12. Nodejs写的搬家工具知识分享
  13. win7扫雷逆向调试
  14. 哪个软件测试交易系统好用,交易系统测试结果的可信度检验
  15. C语言拯救者 番外篇 (Windows实用调试技巧)
  16. boder-radius四个值的问题,boder-radius超出四个值的问题
  17. 如何有效地描述软件缺陷(Defect)?
  18. RxJS——异步数据流的响应式编程库(适合新手入门)
  19. 2021-05-21 qt程序aas运行失败提示undefined symbol: _Z34QBasicAtomicInt_fetchAndAddOrderedPVii问题
  20. 软件实施整体方案之实施进度表

热门文章

  1. 2022-2028年中国铝工业投资分析及前景预测报告(全卷)
  2. 2022-2028年中国纺织服装专业市场深度调研及前景预测报告(全卷)
  3. mybatis使用注解开发
  4. 做好自己,一切都是最好的安排
  5. window10+python3.7安装tensorflow--gpu tensorflow 安装
  6. 梯度提升决策树(GBDT)与XGBoost、LightGBM
  7. 使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目
  8. OpenCL编程详细解析与实例
  9. OneFlow 概念清单
  10. TensorFlow多元线性回归实现