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之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...
随机推荐
- unity, 在编辑界面中隐藏公开变量
unity默认声明为public的变量都是在编辑界面可见的,如果要隐藏的话就可以这样做 一种是使用属性 Public float Age { get; set; } 另一种是使用标签 [HideInI ...
- 设计模式(三) cglib代理
1.1.cglib代理,也可也叫子类代理 Cglib代理,也叫做子类代理.我们知道,JDK的动态代理机制只能代理实现了接口的类,而不能实现接口的类就不能使用JDK的动态代理.cglib是针对类来实现代 ...
- Linux网络相关命令firewalld和netfilter、iptables 使用(6/22)
iptables和netfilter的关系: netfilter在内核空间的代码根据table中的rules,完成对packet的分析和处置.但是这些table中的具体的防火墙rules,还是必须由系 ...
- linux mkisofs(genisoimage)命令用法
功能说明:建立ISO 9660映像文件. 常用命令:genisoimage -o imagename.iso file 语 法:mkisofs [-adDfhJlLNrRTvz][-print-siz ...
- Linux yum源地址
----------------------------------Linux yum源地址------------------------------ Zabbix 3.0 yum源 rpm -iv ...
- MySQL数据库表分区功能详解
1.什么是表分区? mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表 ...
- 0927-转载:SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释
这篇文章暂时只对框架中所要用到的配置文件进行解释说明,而且是针对注解形式的,框架运转的具体流程过两天再进行总结. spring+springmvc+mybatis框架中用到了三个XML配置文件:web ...
- AndroidDevTools下载
收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程.Android设计规范,免费的设计素材等. http://www.androiddevtools.cn ...
- Linux系统运行级别配置
Linux的运行级别 Linux的运行级别有七种,可以通过查看/etc/inittab文件进行了解: Level0:系统停机状态,默认系统运行级别不能设置为0,否则系统不能正常启动: Level1:单 ...
- pexpect的pxssh类实现远程操作
#!/usr/bin/pythonimport pexpectfrom pexpect import pxssh import getpasstry: s=pxssh.pxssh() hostname ...