PostgreSQL 流复制+高可用
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 流复制+高可用的更多相关文章
- Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务
本文主要介绍 Windows 环境下搭建 PostgreSQL 的主从逻辑复制,关于 PostgreSQl 的相关运维文章,网络上大多都是 Linux 环境下的操作,鲜有在 Windows 环境下配置 ...
- Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务
PostgreSQL 高可用数据库的常见搭建方式主要有两种,逻辑复制和物理复制,上周已经写过了关于在Windows环境搭建PostgreSQL逻辑复制的教程,这周来记录一下 物理复制的搭建方法. 首先 ...
- PostgreSQL 9.5 高可用、负载均衡和复制
高可用.负载均衡和复制 1. 不同方案的比较 共享磁盘故障转移 共享磁盘故障转移避免了只使用一份数据库拷贝带来的同步开销. 它使用一个由多个服务器共享的单一磁盘阵列.文件系统(块设备)复制 DRBD是 ...
- keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- 利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境
应用背景: MySQL复制(主主,主从...)能在保证数据的备份的同时也能够做读写分离分摊系统压力,但是发生单点故障时,需要手动 切换到另外一台主机.LVS和Keppalived可以设定一个VIP来实 ...
- 004.Heartbeat+HAProxy+MySQL半复制高可用架构
一 基础环境 节点 系统版本 MySQL版本 业务IP 心跳IP Master CentOS 7.5 MySQL 5.6 192.168.88.100 192.168.77.100 Slave Cen ...
- PostgreSQL流复制
原理机制 参考--https://yq.aliyun.com/articles/51009 主备总体结构 PG主备流复制的核心部分由walsender,walreceiver和startup三个进程组 ...
- PostgreSQL流复制参数max_wal_senders详解
转自:http://my.oschina.net/Kenyon/blog/152234PostgreSQL 9.2.4 主机:192.25.10.76 从机:192.25.10.71 做postgre ...
- PostgreSQL流复制记录
参考了别人的部分,添加了自己在实践中的内容,仅做记录. 1.同步流复制中 主机操作 1.1postgresql.conf wal_level = hot_standby # 这个是设置主为wal的主机 ...
随机推荐
- codevs——1039 数的划分
1039 数的划分 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 将整数 ...
- 获取select 选中的option中自定义的名称的之
<select style="width: 220px;height: 20px;margin: 0 0 0 20px;" id="invest_ticket&qu ...
- centos7容量扩充
新买的2T 绿盘到货了~~好开心的说~但毕竟是第一次安装,事先还是在网上搜索了很多资料才敢动手,下面就开始啦~ 环境:Centos7.dell服务器.2T容量绿盘 1.硬盘连接好之后,开机先使用fdi ...
- man中文手册
Ubuntu安装man手册 sudo apt-get install manpages-zh CentOS安装man手册 yum install man man中文安装包 yum install ma ...
- KLT 光流
一 光流 光流的概念是Gibson在1950年首先提出来的.它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在 ...
- POJ 3260 The Fewest Coins(多重背包+全然背包)
POJ 3260 The Fewest Coins(多重背包+全然背包) http://poj.org/problem?id=3260 题意: John要去买价值为m的商品. 如今的货币系统有n种货币 ...
- MySQL测试代码
MySQL测试代码 # 注释内容 -- 注释内容 -- 创建maizi数据库 CREATE DATABASE IF NOT EXISTS `maizi` DEFAULT CHARACTER SET ' ...
- UVa 11582 Colossal Fibonacci Numbers! 【大数幂取模】
题目链接:Uva 11582 [vjudge] watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fil ...
- POJ3254 状压dp
Corn ...
- Bing必应地图中国API一显示地图 (转) 做人要厚道
Bing必应地图中国API一显示地图 2011-05-24 14:27:31| 分类: Bing&Google|字号 订阅 微软必应地图中国地图API发布已经有10天了,考虑到网上现 ...