PostgreSQL流复制记录
参考了别人的部分,添加了自己在实践中的内容,仅做记录。
1.同步流复制中
主机操作
1.1postgresql.conf
wal_level = hot_standby # 这个是设置主为wal的主机 max_wal_senders = 32 # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个 wal_keep_segments = 256 # 设置流复制保留的最多的xlog数目 wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间 max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的 synchronous_standby_names='standby1' #同步复制时需要配置该参数,同样在备机需要在连接中配置application_name=standby1
#可以配置多个,standby1,standby2。三个节点中,一个主,一个同步流复制,一个潜在同步流复制。
#级别是按照配置的顺序决定,当standby1掉了后,备用同步流复制自动成为同步流复制,主节点的写入不会卡住。但是如果两个同步节点都掉了,则主节点不能写入,写入时#会卡在等待同步节点返回值的地方。 synchronous_commit=on|remote_write|locale|off
#on 表示主节点XLOG写入xlog file且备节点接收到XLOG,并将XLOG写入到wal buffer,wal buffer刷盘道xlog file之后,事务才可以完成提交。
#remote_write表示主节点XLOG写入xlog file且备节点接收到XLOG,并将XLOG写入到wal buffer后,事务才可以完成提交。
#locale 表示主节点XLOG写入xlog file,事务即可完成提交。
#off 表示主节点XLOG写入到wal buffer,事务即可完提交。
hot_standby = on #在启动过程中做recovery时,可以访问数据库。不设置在启动后,连接数据库,可能会遇到:
#[postgre@pg-2 postgresql-9.4.4]$ psql postgres
#psql: FATAL: the database system is starting up
1.2 修改pg_hba.conf
host replication replica 10.12.12.12/32 md5
1.3 创建同步用户
postgres# CREATE ROLE replica login replication encrypted password 'replica'
备机操作
1.4 然后使用pg_basebackup建立备机data目录
pg_basebackup -F p -P -x -R -D /data/pgsql/data2 -h 10.12.12.10 -p 5432 -U replica
#-R会自动生成一个recovery.conf文件。
#-F指定传输压缩格式
1.5 修改recovery.conf文件
standby_mode = on # 这个说明这台机器为从库 #primary_conninfo = 'host=10.12.12.10 port=5432 user=replica password=replica' # 这个说明这台机器对应主库的信息 异步复制的信息 primary_conninfo = 'host=10.12.12.10 port=5432 user=replica password=replica application_name=ecox_standby_node' #同步复制 recovery_target_timeline = 'latest' # 这个说明这个流复制同步到最新的数据
查看同步状态
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid | 8467 # sender的进程
usesysid | 44673 # 复制的用户id
usename | replica # 复制的用户用户名
application_name | walreceiver
client_addr | 10.12.12.12 # 复制的客户端地址
client_hostname |
client_port | 55804 # 复制的客户端端口
backend_start | 2015-05-12 07:31:16.972157+08 # 这个主从搭建的时间
backend_xmin |
state | streaming # 同步状态 startup: 连接中、catchup: 同步中、streaming: 同步
sent_location | 3/CF123560 # Master传送WAL的位置
write_location | 3/CF123560 # Slave接收WAL的位置
flush_location | 3/CF123560 # Slave同步到磁盘的WAL位置
replay_location | 3/CF123560 # Slave同步到数据库的WAL位置
sync_priority | 0 #同步Replication的优先度
0: 异步、1~?: 同步(数字越小优先度越高)
sync_state | async # 有三个值,async: 异步、sync: 同步、potential: 虽然现在是异步模式,但是有可能升级到同步模式
补充:
6、检查异步流复制的情况:
可以使用主库上的视图pg_stat_replication查看流复制的信息:
postgres=# select pid,state,client_addr,sync_priority,sync_state from pg_stat_replication;
pid | state | client_addr | sync_priority |sync_state
------+-----------+-------------+---------------+------------
9552 | streaming | 10.0.2.61 | 0 | async
(1 row)
查看备库落后主库多少字节的WAL日志:
postgres=# select pg_xlog_location_diff(pg_current_xlog_location(),replay_location)from pg_stat_replication;
pg_xlog_location_diff
-----------------------
0
(1 row)
7、查看备库状态:
如何判断数据库处于备库状态:
1)hotstandby 状态:
可以连接数据库执行pg_is_in_recovery()函数,主库上返回False,standby上返回true;
主库:
postgres=# select pg_is_in_recovery();
pg_is_in_recovery
-------------------
f
(1 row)
standby库:
postgres=# select pg_is_in_recovery();
pg_is_in_recovery
-------------------
t
(1 row)
2)不是hotstandby:
不是host standby不能直接连上去,此时使用pg_controldata来判断:
从库:
[postgre@pg-2 postgresql-9.4.4]$pg_controldata |grep state
Database cluster state: in archive recovery
主库:
[postgre@pg-1 data]$ pg_controldata |grep state
Database cluster state: in production
8、在HotStandby,还可以执行如下一些函数,查看备库接收的WAL日志和应用WAL日志的状态:
pg_last_xlog_receive_location()
pg_last_xlog_replay_location()
pg_last_xact_replay_timestamp()
如下:
postgres=# select pg_last_xlog_receive_location(),pg_last_xlog_replay_location(),pg_last_xact_replay_timestamp();
pg_last_xlog_receive_location | pg_last_xlog_replay_location |pg_last_xact_replay_timestamp
-------------------------------+------------------------------+-------------------------------
0/1B013F50 | 0/1B013F50 | 2015-07-17 11:41:09.406696+08
(1 row)
PostgreSQL流复制记录的更多相关文章
- PostgreSQL流复制
原理机制 参考--https://yq.aliyun.com/articles/51009 主备总体结构 PG主备流复制的核心部分由walsender,walreceiver和startup三个进程组 ...
- PostgreSQL 流复制+高可用
QA PgPool-II 同步 Postgresql X1 服务器准备 192.168.59.121 PostgreSQL10 192.168.59.120 PGPool-II 3.7 X2 安装Po ...
- PostgreSQL流复制参数max_wal_senders详解
转自:http://my.oschina.net/Kenyon/blog/152234PostgreSQL 9.2.4 主机:192.25.10.76 从机:192.25.10.71 做postgre ...
- [笔记] postgresql 流复制(streaming replication)
基本环境说明: os:FreeBSD 9.3 postgresql version: master:192.168.56.101 standby:192.168.56.102 安装过程略,基于pkg包 ...
- postgresql流复制配置
一.配置环境: 示例环境 主机名 IP 角色 系统版本 数据目录 pg版本 db1 192.168.128.128 主库 RedHat5.3 /app/postgreSQL/data 9.1.7 db ...
- 再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署
前言 在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应.大家发现了另一款开源的数据库: PostgreSQL. 虽然centos自带版本9.2也可以用,但是最近的几次 ...
- 20181219-PostgreSQL 流复制监控脚本
PostgreSQL 流复制监控脚本 https://github.com/AndyYHM/Writing/blob/PostgreSQL/20181219-PostgreSQL%20Stream%2 ...
- [原创] PostgreSQL Plus Advanced Server在Windows中配置双机热备流复制
一.系统环境 操作系统:Windows Server 2003/2008 两个节点分别为master与slave. 主节点master:172.27.19.28 备机点slave:172.27.19. ...
- PostgreSQL主备流复制机制
原文出处 http://mysql.taobao.org/monthly/2015/10/04/ PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...
随机推荐
- php RFC兼容的电子邮件地址验证
php中,进行RFC兼容的电子邮件地址验证的方法,有需要的朋友参考下吧. 分享一个可以验证RFC兼容的电子邮件地址的代码,支持RFC1123,2396,3696,4291,4343,5321等的验证. ...
- python16_day09【Select多路复用】
一.select多路复用 句柄列表11, 句柄列表22, 句柄列表33 = select.select(句柄序列1, 句柄序列2, 句柄序列3, 超时时间) 参数: 可接受四个参数(前三个必须) 返回 ...
- POJ - 2289 Jamie's Contact Groups (二分图多重匹配)
题意:N个人,M个团体.每个人有属于自己的一些团体编号.将每个人分配到自己属于的团体中,问这个人数最多的团体其人数最小值是多少. 分析:一个一对多的二分图匹配,且是最大值最小化问题.二分图的多重匹配建 ...
- html 基础--一般标签
<html> --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body& ...
- javascript Date对象 之 获取时间
javascript Date对象 --> 获取时间: 测试代码: <!DOCTYPE html> <html lang="en"> <head ...
- 【Flask】WTForms文件上传下载
# 文件上传笔记:1. 在模版中,form表单中,需要指定`encotype='multipart/form-data'`才能上传文件.2. 在后台如果想要获取上传的文件,那么应该使用`request ...
- 20145201《Java程序设计》第十周学习总结
教材学习内容总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴. 在发送和接收 ...
- 如何自定义echarts 线性图的选择事件
最近在做公司的数据大盘,要用到图表显示,echarts研二的时候有用过,我就决定用它了. 这里用到一个可以同时显示多条曲线的line-charts,基本样子如下: 看到这个画红色圈圈的地方了吗??? ...
- 利用canvas和RGraph作图
利用canvas可以直接在页面中绘制各种复杂的图形,其中引用到一个Rgraph的插件. Rgraph插件使用非常方便,只需几步就可以完成一个折线图.饼图.柱状图,或是其中两者图形的结合! (1) 引用 ...
- 移植madplay到jz2440【学习笔记】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC) 3.4.5 PC环境:ubuntu16.04 一.移植ma ...