postgresql简单搭建流复制

一、准备环境

准备两台相同环境的虚拟机,安装相同版本的pg。
pg版本:9.3
master:192.168.23.128
slave:192.168.23.129

二、主库配置

1.创建备库访问用户:
修改postgresql.conf中的参数
listen_addresses='*'(默认值是localhost,改为*代表监听所有ip)
创建用户
CREATE USER repuser replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD ’123′;
修改pg_hba.conf

增加这行意思就是允许所有地址通脱tcp/ip使用repuser连接replication,通过MD5方式。
2.修改主库其他参数
wal_level = hot_standby(这个参数是控制wal写入信息的多少,改为hot_standby备库支持read-only)
archive_mode = on(这个参数是是否开启归档记录,不开也可以用流复制,如果备库长时间停机,主库之前的wal被覆盖,备库可能无法启动,如果开了这个参数,在配了archive_command备库是可以重新读备份的wal恢复到主库的状态的)

archive_command='cp %p /home/postgres/archive/%f'(归档命令)

max_wal_senders = 3(这个参数是允许多少个复制写入连接,大于等于standby节点数就行)
wal_keep_segments = 100(这个参数是最多保留多少个wal段提供备份恢复,可以尽量大点,wal段大小由wal_buffer决定)
synchronous_standby_names = 'db1'(这个参数是用来开启同步复制的,异步复制不需要开)

三、创建主库基本备份

1.通过pg_basebackup
pg_basebackup -D data/pgdata/pg -Fp -Xs -v -P -h 192.168.23.128 -p 5432 -U repuser -W
直接从主机得到备份,将备库的$PGDATA用复制得到的覆盖就行。命令使用帮助:pg_basebackup --help
2.通过pg_start_backup()
方法就是主库select pg_start_backup();复制数据文键;select pg_stop_backup();远没第一种方便。

四、配置从库环境

1.配置从库参数
hot_standby=on(从库开启read-only)
2.设置从库的recovery.conf
standby_mode='on'(表示数据库恢复完成时,不会断开,等待接收新的wal)
primary_conninfo='host=192.168.23.128 port=5432 user=repuser password=123 application_name=db1'(连接串,application_name这个是使用同步复制的与主库的synchronous_standby_names对应)
recovery_target_timeline='latest'(指定恢复时间线)
还有个trigger_file参数,我没写,感觉这个挺鸡肋的,就是如果主库故障了,通过创建某个文件可以使备库变成主库。想想就觉得功能好蛋疼,我首先得知道主库故障了,然后再去创建这个文件,才能切换。

五、验证

1.启动主库。
2.启动从库。
3.在主库上查询pg_stat_replication:

postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid | 6570
usesysid | 16395
usename | repuser
application_name | mydb_standby1
client_addr | 192.168.23.129
client_hostname |
client_port | 57368
backend_start | 2016-04-10 07:24:57.272316+08
state | streaming
sent_location | 0/120002A8
write_location | 0/120002A8
flush_location | 0/120002A8
replay_location | 0/120002A8
sync_priority | 1
sync_state | sync (这个就是开了同步,异步的话就是async)

时间: 2024-09-24 12:23:31

postgresql简单搭建流复制的相关文章

PostgreSQL 9.0 流复制介绍

PostgreSQL9提供了一个非常兴奋的功能,hot-standby,功能与ORACLE 11G的ACTIVE STANDBY类似.并且增加了流复制的功能,这个与oracle 的standby redo log功能类似,大大的缩短了备份库与主库的事务间隔. HOT-STANDBY可以提供容灾,恢复的同时可以把数据库打开,提供查询功能.以前的版本恢复的时候是不能打开的. 首先看一张postgreSQL的高可用,负载均衡,复制特征矩阵图 这里有一个很好的特性 Slaves accept read-

PostgreSQL 同步流复制锁瓶颈分析

PostgreSQL 同步流复制锁瓶颈分析 作者 digoal 日期 2016-11-07 标签 PostgreSQL , 同步流复制 , mutex , Linux , latch 背景 PostgreSQL的同步流复制实际上是通过walsender接收到的walreceiver的LSN位点,来唤醒和释放那些需要等待WAL已被备库接收的事务的. 对同步事务来说,用户发起结束事务的请求后,产生的RECORD LSN必须要小于或等于walsender接收到的walreceiver反馈的LSN位点.

PostgreSQL 10.0 preview 流复制增强 - 支持可配置的wal send max size

标签 PostgreSQL , 10.0 , 流复制增强 , max wal send size 背景 以前的版本,wal sender进程使用流复制协议,将WAL信息发送给下游的wal receiver进程时,一次最多发送128KiB,是在宏中设置的. 现在允许用户设置GUC参数,来控制这个最大值. 在测试环境中设置为16MB有2倍的性能提升,可以更好的利用网络带宽,提升流复制的传输效率. Attached please find a patch for PostgreSQL 9.4 whic

PostgreSQL PG主备流复制机制

PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在备库apply每个WAL record,这里的流复制每次传输单位是WAL日志的record.而PostgreSQL9.0之前提供的方法是主库写完一个WAL日志文件后,才把WAL日志文件传送到备库,这样的方式导致主备延迟特别大.同时PostgreSQL9.0之后提供了Hot Standby,备库在应用WAL record的同时也能够提供只读服务,大大提升了用户体验. 主备总体结构 PG主备流复制的

PostgreSQL 流复制xlog异步send

PostgreSQL 流复制xlog异步send 作者 digoal 日期 2016-11-07 标签 PostgreSQL , 同步流复制 , 异步send 背景 PostgreSQL的流复制相比大家并不陌生,但是目前PG为了保证主的高度统治地位,一切以主库为准.包括SEND WAL时,也要求主已经FLUSH才能发给备库. 这实际上会导致些许的延迟,当然这个延迟目前来看可以忽略不计,但是随着硬件的发展,将来这个模式可能就会不适应. 那么能不能让主库的WAL record已经调用write或者已

PostgreSQL 同步流复制原理和代码浅析

数据库ACID中的持久化如何实现 数据库ACID里面的D,持久化. 指的是对于用户来说提交的事务,数据是可靠的,即使数据库crash了,在硬件完好的情况下,也能恢复回来.PostgreSQL是怎么做到的呢,看一幅图,画得比较丑,凑合看吧.假设一个事务,对数据库做了一些操作,并且产生了一些脏数据,首先这些脏数据会在数据库的shared buffer中.同时,产生这些脏数据的同时也会产生对应的redo信息,产生的REDO会有对应的LSN号(你可以理解为REDO 的虚拟地址空间的一个唯一的OFFSET

pgpool 主从流复制模式下的安装使用

pgpool-II 是一个位于 PostgreSQL 服务器和 PostgreSQL 数据库客户端之间的中间件,它提供以下功能:  连接池 pgpool-II 保持已经连接到 PostgreSQL 服务器的连接,并在使用相同参数(例如:用户名,数据库,协议版本)连接进来时重用它们.它减少了连接开销,并增加了系统的总体吞吐量.  复制 pgpool-II 可以管理多个 PostgreSQL 服务器.激活复制功能并使在2台或者更多 PostgreSQL 节点中建立一个实时备份成为可能,这样,如果

postgres配置主从流复制

postgres主从流复制 postgres在9.0之后引入了主从的流复制机制,所谓流复制,就是从库通过tcp流从主库中同步相应的数据.postgres的主从看过一个视频,大概效率为3w多事务qps. postgres的主从主称之为primary,从称为stand_by.主从配置需要注意的一个是主从的postgres的版本,环境,等最好都需要一致,否则可能产生奇奇怪怪的问题. postgres的主配置 主是10.12.12.10这台机器 首先需要配置一个账号进行主从同步. 修改pg_hba.co

图文详解mybatis+postgresql平台搭建步骤_java

从头开始搭建一个mybatis+postgresql平台 最近有个项目的数据库使用postgresql,使用原生态的mybatis操作数据,原生态的没什么不好,只不过国内有个tk.mybatis的工具帮助我们做了很多实用的事情,大多数情况下我们需要在原生态mybatis上加工的想法它基本上都已经有很好的实现,这篇将分享安装postgresql,配置tk.mybatis的详细步骤以及在这过程中可能遇到的一些小问题. 安装postgresql,执行下面的命令就可以安装了: 复制代码 代码如下: ap