pg_basebackup 配置 stream replication 异步/同步
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 异步/同步相关推荐
- 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. ...
- Android下的配置管理之道之主从gerrit配置使用replication插件
gerrit配置使用replication插件 最终实现的效果如下图所示 实现员工下带代码从一个从gerrit下载,上传代码到主gerrit上. 首先是主gerrit服务器上面要配置一下ssh相关的 ...
- Oracle Stream Replication技术
Stream 是Oracle 的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用. Oracle 的消息队列是通过发布/订阅的方式来解决事件管理.流复制(Stream re ...
- mysql双节点安装_快速安装及配置MySQL Replication双主节点集群--及改变数据保存目录...
192.168.1.101 master/slave 192.168.1.102 slave 192.168.1.103 slave 操作系统均为centos6.5 原理图: 1. 分别安装my ...
- 用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核...
一,为A组在X单独另建一个MYSQL服务器(MYSQL B),A组平时更新的数据库为MYSQL B.待MYSQL B的数据审核准确无误后.发布给现在布置在X上的MYSQL服务器(MYSQL A).并进 ...
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
1.什么是 Rsync? Rsync 是一个开源的快速备份工具,是Linux和UNIX操作系统默认安装的组件之一,可在不同主机间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步 ...
- 一个轻巧高效的多线程c++stream风格异步日志(一)
一个轻巧高效的多线程c++stream风格异步日志 一个轻巧高效的多线程c++stream风格异步日志 前言 功能需求 性能需求 Logger实现 LogStream类 Logger类 LogStre ...
- centos 多台 文件夹同步_CentOS7配置rsync实现文件同步
rsync(remote synchronize )是一个远程文件同步工具,支持多个操作系统,用于在多台服务器之间同步目录和文件.rsync采用增量传输文件的方法,只传输新文件和修改过的文件,而不是每 ...
- python协程详解_对Python协程之异步同步的区别详解
一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...
最新文章
- 【牛腩新闻发布系统】系统发布06
- mysql查询大于等于效率_mysql 中4 OR 6的效率要大于 !=5?
- 【译】KNOWLEDGE EXTRACTION FROM UNSTRUCTURED TEXTS
- 方向盘的正确驾驭方法
- 动力环境监控系统论文_浅谈动力环境监控系统技术标准
- 删除计算机360云盘,win7系统怎么取消电脑右键保存到360云盘选项
- 第七周项目4-计算一个程序猿的周工资
- 前端/JS笔记-利用JS/正则判断input是否存数字以及字母加数字
- [转]DPM2012系列之十八:如何保护工作组计算机
- TensorFlow神经网络(三)神经网络优化
- 4月18日会议总结(整理—祁子梁)
- Nodejs写的搬家工具知识分享
- win7扫雷逆向调试
- 哪个软件测试交易系统好用,交易系统测试结果的可信度检验
- C语言拯救者 番外篇 (Windows实用调试技巧)
- boder-radius四个值的问题,boder-radius超出四个值的问题
- 如何有效地描述软件缺陷(Defect)?
- RxJS——异步数据流的响应式编程库(适合新手入门)
- 2021-05-21 qt程序aas运行失败提示undefined symbol: _Z34QBasicAtomicInt_fetchAndAddOrderedPVii问题
- 软件实施整体方案之实施进度表