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的主机 ...
随机推荐
- 【天道酬勤】 腾讯、百度、网易游戏、华为Offer及笔经面经(转)
应届生上泡了两年,一直都是下资料,下笔试题,面试题.一直都在感谢那些默默付出的人.写这个帖子花了我两 个夜晚的时间,不是为了炫耀,只是为了能给那些“迷惘”的学弟学妹,一点点建议而已.大家何必那么认真, ...
- 洛谷 P1708 天然气井
P1708 天然气井 题目描述 Mary试图控制成都的天然气市场.专家已经标示出了最好的天然气井和中转站在成都的地图.现在需要将中转站和天然气井连接起来.每个中转站必须被连接到正好一个钻油井,反之亦然 ...
- Ubuntu 16.04中iptables的工具简介(iptables/iptables-restore/iptables-xml/iptables-apply/iptables-save)
Ubuntu 16.04中安装的iptables版本为1.6.0,官方参考:http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/iptables ...
- pymongo collection.save 问题
项目中有这样一个需求,把路由器信息存入mongo,DB的结构如下: { router_name: name, router_ip: ip, interfaces: [ {oid:1,name:if1} ...
- 使用maven时,如何修改JVM的配置参数;maven命令执行时到底消耗多少内存?
maven是使用java启动的,因此依赖JVM,那么如何修改JVM参数? MAVEN_OPTS 在系统的环境变量中,设置MAVEN_OPTS,用以存放JVM的参数,具体设置的步骤,参数示例如下: MA ...
- TP-Link的Atheros芯片的WR886n v5 安装SuperWRT系统
安装SuperWRT系统 本教程以TP-Link的Atheros芯片的WR886n v5为例,教新手如何刷入一个已支持设备的固件. 下载设备固件请访问:这里 (没有支持你的设备?自由动手一下:hack ...
- ViewFlipper实现ViewPager的页面切换效果
activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- 使用RoboCopy 命令[转载]
经常进行文件管理操作的朋友们,不满意于Windows系统内置的复制功能,因为它太龟速了.于是大家就使用FastCopy.TeraCopy之类的软件来加速复制,但是你是否知道Windows 7已经内置快 ...
- Android系统开发(4)——Autotools
Autotools工具的构成 1.autoscan autoscan是用来扫描源码文件夹生成configure.san文件的,configure.san包括了系统配置的基本选项.里面都是一些宏定义,我 ...
- SpringMVC之请求参数的获取方式
转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求 ...