QA PgPool-II 同步 Postgresql

X1 服务器准备

	192.168.59.121	PostgreSQL10
192.168.59.120 PGPool-II 3.7

X2 安装PostgreSQL

	#M1 下载
$ https://yum.postgresql.org/
$ yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y
#M2 安装
$ yum list | grep postgresql
$ yum install postgresql10-contrib postgresql10-server -y
#M3 初始化数据库
$ /usr/pgsql-10/bin/postgresql-10-setup initdb
** /var/lib/pgsql/10/data /** 数据目录 /
** /usr/pgsql-10/bin /** 命令目录 /
#M4 启动数据库并设置开机启动
$ systemctl start postgresql-10.service
$ systemctl enable postgresql-10.service
#M5 登录postgresql并设置密码---postgresql在安装时默认添加用户postgres
$ su - postgres
$ psql
$ ALTER USER postgres WITH PASSWORD 'hotcomm123';
$ \q
#M6 支持远程登录-修改配置文件[pg_hba.conf,postgresql.conf]
&& pg_hba.conf
@在文件末尾添加下面记录,并且将所有 peer|ident 修改为md5
host all all 0.0.0.0/0 md5
&& postgresql.conf
@ listen_addresses = '*'
@ port = 5432

X3 安装PgPool-II

	##M1 安装
$ rpm -ivh http://www.pgpool.net/yum/rpms/3.7/redhat/rhel-7-x86_64/pgpool-II-release-3.7-1.noarch.rpm
$ yum -y install pgpool-II-pg95
$ yum -y install pgpool-II-pg95-debuginfo
$ yum -y install pgpool-II-pg95-devel
$ yum -y install pgpool-II-pg95-extensions
## 配置文件路径
/etc/pgpool-II/pgpool.conf
##M2 修改配置文件 pgpool.conf
@ listen_addresses = '*'
@ port = 9999
@ backend_hostname0 = '10.10.10.104' #主机ip
@ backend_port0 = 5432
@ backend_weight0 = 1 #loadbalance不开启,无效
@ backend_data_directory0 = '/var/lib/postgresql/9.5/main'
@ backend_flag0 = 'ALLOW_TO_FAILOVER'
@ enable_pool_hba = on
@ pool_passwd = 'pool_passwd'
##M3 修改配置文件pool_hba.conf
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host all all 0.0.0.0/0 md5
##M4 启用配置文件pool_passwd 密码:hotcomm123 客户端连接pgpool
$ pg_md5 -m -p -u postgres pool_passwd ## 配置的账号密码将直接用于连接PostgreSQL 数据的账号密码
$ pgpool -n
$ psql -h 192.168.59.120 -p 9999 -U postgres

QB PostgreSQL10 流复制

X1 服务器准备

	192.168.59.121  PostgreSQL10 Master
192.168.59.122 PostgreSQL10 Slaver

X2 安装 Master PostgreSQL10

	##M0 此处和接下来就不在陈述安装细节,可以参考QA.X2
##M1 修改配置文件-postgresql.conf
@wal_level = replica # 参数控制 WAL 日志信息的输出级别,有 minimal 、 replica 、 logical 三种模式, minimal 记录的 WAL 日 志信息最少,除了记录数据库异常关闭需要恢复时的WAL 信息外,其他操作信息都不记录; replica 记录 的 WAL 信息比 minimal 信息多些,会记录支持 WAL 归档、复制和备库中启用只读查询等操作所需 的 WAL 信息;logical 记 录 的 WAL 日志信息 最多, 包含了支持逻辑解析 (IO 版本的新特性,逻辑复制使用这种模式,本章后面会介绍)所需 的 WAL
@archive_mode = on # 参数控制是否启用归档, off 表示不启用归档, on 表示启用归档并使用 archive command 参数的配置命令将 WAL 日志归档到归档存储上,此参数设置后需重启数据库生效,这里通常设置成 on
@archive command = ’ / bin/date ’ # 参数设置 WAL 归档命令, 可以将 WAL 归档到本机目录,也可以归档到远程其他主机上,由于流复制的配置并不一定需要依赖配置归档命令,我们将归档命令暂且设置成伪归档命令/bin/date ,后期如果需要打开归档直接配置归档命令即可
@max wal senders = 10 # 参数控制主库上的最大 WAL 发送进程数 ,通过 pg_basebackup 命令在主库上做基准备份时也会消耗 WAL 进程, 此参数设置不能 比 max_connections参数值高 , 默认值为 10 , 一个流复制备库通常只需要消耗流复制主库一个 WAL 发送进程 。
@wal keep segments = 512 # 设置流复制保留的最多的xlog数目,一份是 16M,注意机器磁盘 16M*64 = 1G
@hot_standby = on # 参数控制数据库恢复过程中是否启用读操作 ,这个参数通常用在流复制备库,开启此参数后流复制备库支持只读 SQL ,但备库不支持写操作,主库上也设置此参数为 on 。
@wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间
@max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的
##M2 创建流复制账号,进入数据库内部执行脚本,该角色(账号)用于复制和登入
$ CREATE ROLE replica login replication encrypted password 'replica';
##M3 修改 pg_hba.conf 文件 进入最后部分,添加如下
host replication replica 0.0.0.0/0 md5 #允许使用 replica 用户来复制
##M4 重启服务,执行之后通过status检查执行是否成功,假如失败,则返回前面步骤好好检查是否哪里忘了
$ systemctl restart postgresql-10.service

X3 安装 Slaver PostgreSQL10

	##M0 此处不重复展示安装细节,参考QA.X2,但是需要注意,执行完M2即可停止
##M1 通过执行pg_basebackup 方式部署流复制,具体执行下面脚本
$ pg_basebackup -h 192.168.59.121 -U replica -D /var/lib/pgsql/10/data -X stream -P -R ## 输入主库流复制 账号-密码
$ chown -R postgres:postgres /var/lib/pgsql/10/data/*
##M2 修改配置文件 recovery.conf
$ vim recovery.conf /**添加属性/
@ recovery_target_timeline = 'latest' ##参数设置恢复的时间线( timeline ) , 默认情况下是恢复到基准备份生成时 的时间线,设置成 latest 表示从备份 中恢复到最近的 时间线 , 通常流复制环境设置此参数为 latest ,复杂的恢复场景可将此参数设置成其他值
##M3 重启并检查服务
$ systemctl restart postgresql-10.service
$ systemctl status postgresql-10.service

X4 验证复制

	##M0 来到主库 192.168.59.121 进入数据库执行脚本
$ psql
$ select client_addr,sync_state from pg_stat_replication; ## 通过查看记录,正常安装成功则会显示从库地址 例如 192.168.59.122
$ CREATE DATABASE test_v1 OWNER postgres; ## 可以通过创建数据库(DDL)来判断
##M1 来到从库 192.168.59.122 到这一步假如一切成功则证明流复制(异步)成功
$ su - postgres
$ psql
$ \l

X5 参考资料

	网址:
https://www.jianshu.com/p/343c3c8047f0
https://blog.csdn.net/pg_hgdb/article/details/79069407
https://www.postgresql.org/files/documentation/pdf/10/postgresql-10-A4.pdf
https://www.jb51.net/article/148841.htm
书籍:
PostgreSQL实战.pdf
PostgreSQL 修炼之道.pdf(该书默认使用postgresql_9,所以部分属性不适用,例如wal_level的值和PSQL_10完全不同,但是该书在很多细节方面写的很全面,非常有参考价值)

PostgreSQL 流复制+高可用的更多相关文章

  1. Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务

    本文主要介绍 Windows 环境下搭建 PostgreSQL 的主从逻辑复制,关于 PostgreSQl 的相关运维文章,网络上大多都是 Linux 环境下的操作,鲜有在 Windows 环境下配置 ...

  2. Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务

    PostgreSQL 高可用数据库的常见搭建方式主要有两种,逻辑复制和物理复制,上周已经写过了关于在Windows环境搭建PostgreSQL逻辑复制的教程,这周来记录一下 物理复制的搭建方法. 首先 ...

  3. PostgreSQL 9.5 高可用、负载均衡和复制

    高可用.负载均衡和复制 1. 不同方案的比较 共享磁盘故障转移 共享磁盘故障转移避免了只使用一份数据库拷贝带来的同步开销. 它使用一个由多个服务器共享的单一磁盘阵列.文件系统(块设备)复制 DRBD是 ...

  4. keepalived+mysql双主复制高可用方案

    MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...

  5. 利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境

    应用背景: MySQL复制(主主,主从...)能在保证数据的备份的同时也能够做读写分离分摊系统压力,但是发生单点故障时,需要手动 切换到另外一台主机.LVS和Keppalived可以设定一个VIP来实 ...

  6. 004.Heartbeat+HAProxy+MySQL半复制高可用架构

    一 基础环境 节点 系统版本 MySQL版本 业务IP 心跳IP Master CentOS 7.5 MySQL 5.6 192.168.88.100 192.168.77.100 Slave Cen ...

  7. PostgreSQL流复制

    原理机制 参考--https://yq.aliyun.com/articles/51009 主备总体结构 PG主备流复制的核心部分由walsender,walreceiver和startup三个进程组 ...

  8. PostgreSQL流复制参数max_wal_senders详解

    转自:http://my.oschina.net/Kenyon/blog/152234PostgreSQL 9.2.4 主机:192.25.10.76 从机:192.25.10.71 做postgre ...

  9. PostgreSQL流复制记录

    参考了别人的部分,添加了自己在实践中的内容,仅做记录. 1.同步流复制中 主机操作 1.1postgresql.conf wal_level = hot_standby # 这个是设置主为wal的主机 ...

随机推荐

  1. windows-nginx安装与运行静态资源

    windows-nginx 官网 http://nginx.org/en/docs/windows.html 点击跳转 安装包下载 http://nginx.org/en/download.html ...

  2. 洛谷 P1566 加等式

    P1566 加等式 题目描述 对于一个整数集合,我们定义“加等式”如下:集合中的某一个元素可以表示成集合内其他元素之和.如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是 ...

  3. sata express接口

    华硕z97主板的sata express接口目前没什么用,但随着电脑接口的发展,可能会占据一席之地. 1.顾名思义,SATA-Express是SATA接口 + PCI-Express的混合体,其理论带 ...

  4. 必测的支付漏洞(一)——使用fiddler篡改支付金额

    互联网产品中常会遇到支付功能,测试人员测试这部分功能时一定要重视,因为如果这部分出现了较严重的bug,将会给公司带来不小的经济损失!如果你测出了问题领导也一定会高兴的!因此测试优先级很高,但具有一定难 ...

  5. centos7更新、更新、每天更新、每天自动更新

    每一天我们的系统时时刻刻都被凶狠之徒盯着,保持软件在最新的状态是其中一项我们必须做,也很容易做到的工作. 首先我们立即手动更新所有预先安装的软件: yum -y update 跟着设定系统定时自动更新 ...

  6. Python学习笔记_Python对象

    Python学习笔记_Python对象 Python对象 标准类型 其它内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比較 对象身份比較 布尔类型 ...

  7. hdu 5361 2015多校联合训练赛#6 最短路

    In Touch Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total ...

  8. Delphi属性比对象的域有更强的功能

    8.4 Delphi自定义组件(3) http://tech.163.com 2006-04-29 11:49:34 来源: 清华大学出版社 网友评论0 条 论坛   3. 测试未安装的组件 在将新组 ...

  9. libjpeg交叉编译

    下载libjpeg http://libjpeg.sourceforge.net/ 解压tar -zxf jpegsrc.v6b.tar.gz cd jpeg-6b cp /usr/bin/libto ...

  10. 常用经典SQL语句大全完整版--详解+实例 《来自网络,很全没整理,寄存与此》

    常用经典SQL语句大全完整版--详解+实例 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML ...