没有合适的资源?快使用搜索试试~ 我知道了~
首页Postgres主从流复制与pgpool高可用实战指南
Postgres主从流复制与pgpool高可用实战指南
需积分: 5 4 下载量 46 浏览量
更新于2024-06-19
1
收藏 773KB DOCX 举报
本文档详细介绍了Postgres主从流复制和pgpool-II高可用方案,旨在提供一个全面的数据库集群解决方案。首先,章节一概述了整体方案,包括PostgreSQL流复制的两种同步模式(同步和异步),以及pgpool-II如何通过连接池、复制、负载均衡和限制连接来增强高可用性。备份策略也是该部分的重要内容。 在实践环境部分,文档列出了所需的软件环境,如PostgreSQL、pgpool和pg_rman,以及具体的环境配置和示例环境设置。客户环境准备阶段,涉及下载并管理必要的软件包,创建postgres用户,设置安装目录,调整权限,确保网络配置和时钟同步,并优化系统资源如限制进程资源分配。 PostgreSQL的安装过程被细致划分,包括安装依赖、解压、环境变量设置、数据库初始化等步骤。在配置阶段,重点在于免登陆SSH、调整主库postgresql.conf和pg_hba.conf文件,确保主库的standby标志正确设置,以及流复制用户配置。备库的配置包括从主库复制、标识文件修改、启动服务和相关说明。 对于主从库的配置,文档强调了检查进程状态和测试,确保复制功能正常运行。特别指出,对于不同版本的PostgreSQL,配置方法有所差异,需要根据实际情况进行调整。 总结来说,本文档提供了PostgreSQL主从流复制的详尽部署步骤和pgpool-II的高可用解决方案,适用于希望构建高可用数据库集群的IT专业人士。通过遵循这些步骤,读者能够有效地实现数据库的实时复制、负载均衡和故障切换,提升系统的稳定性和性能。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/88477949/bgf.jpg)
8
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=a08048aa-08b3-4aa8-a2e6-6a20c07d7edd
DEVICE=ens33
ONBOOT=yes
IPV6_PRIVACY=no
#添加行
IPADDR=192.168.159.151
NETMASK=255.255.255.0
GATEWAY=192.168.159.2
DNS1=192.168.159.2
从服务器 IPADDR 更换即可。
4. 配置 hosts 文件
在 hosts 文件中增加以下内容
#vim /etc/hosts
192.168.159.151 master
192.168.159.152 slave
配置 host 文件,用于后期节点配置文件中节点配置。也可以不用配置,直接使用 IP
地址即可。
配置此文件,有助于同步等机制加快访问速度。
5. 主备节点时钟同步
#/usr/sbin/ntpdate asia.pool.ntp.org && /sbin/hwclock –systohc
asia.pool.ntp.org 为网络时间
通过 ntpdate 命令获取网络时间并且将其作为硬件时间
6. 配置 sysctl
sysctl.conf(配置系统信息,系统变量,主要用来优化系统)
/etc/sysctl.conf 这个目录主要是配置一些系统信息,而且它的内容全部是对应于
/proc/sys/这个目录的子目录及文件
#vi /etc/sysctl.conf
kernel.shmmni = 4096
kernel.sem = 50100 64128000 50100 1280
fs.file-max = 7672460
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
![](https://csdnimg.cn/release/download_crawler_static/88477949/bg10.jpg)
9
net.core.netdev_max_backlog = 10000
vm.overcommit_memory = 0
# net.ipv4.ip_conntrack_max 配置在 CentOS7 中不再启用。
#net.ipv4.ip_conntrack_max = 655360
fs.aio-max-nr = 1048576
net.ipv4.tcp_timestamps = 0
使文件修改生效
#sysctl –p
7. limit 资源分配
#vi /etc/security/limits.conf
* soft nofile 131072
* hard nofile 131072
* soft nproc 131072
* hard nproc 131072
* soft core unlimited
* hard core unlimited
* soft memlock 50000000
* hard memlock 50000000
![](https://csdnimg.cn/release/download_crawler_static/88477949/bg11.jpg)
10
第五章 PostgreSQL 安装(master、standby)
1. 安装依赖包
以 root 权限使用 yum 自动安装以下编译环境软件
#yum -y install readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel
libxslt-devel python-devel tcl-devel gcc perl-ExtUtils-Embed
2. 解压和安装
请使用 postgres 用户安装。
如果使用 root 用户安装,在安装完毕务必将所有者更改为 postgres 用户后,将下一节
中的环境变量写入 postgres 用户的 home 目录(/var/lib/pgsql),并以 postgres 用户运行。
su - postgres
$cd /opt/soft/
$tar -zxvf postgresql-10.3.tar.gz
$cd postgresql-10.3
$./configure --prefix=/opt/pgsql/ --with-pgport=5432 --with-perl --with-tcl --with-python --
with-openssl --with-pam --without-ldap --with-libxml --with-libxslt --with-blocksize=8
$gmake
$gmake install
其他版本编译和安装参数不变。
3. 设置环境变量
编辑环境变量配置文件,增加以下内容
$vim ~/.bash_profile
export PGPORT=5432
export PGDATA=/opt/pgdata
export PGHOME=/opt/pgsql
export PATH=.:$PGHOME/bin:$PATH
使环境变量配置立即生效
$source ~/.bash_profile
4. 初始化数据库
#初始化安装数据库
$initdb -D $PGDATA
![](https://csdnimg.cn/release/download_crawler_static/88477949/bg12.jpg)
11
第六章 配置 PostgreSQL 流复制
在流复制配置过程中,仅在主从节点及启用标识配置的位置有区别。
1. 配置 SSH 免登陆(master、standby)
#su – postgres
$ ssh-keygen -t rsa -b 2048 -f /var/lib/pgsql/.ssh/id_rsa -P ''
$ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@192.168.159.151
$ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@192.168.159.152
$ssh postgres@master
$ssh postgres@slave
注意:必须关闭系统 selinux,否则登录仍然需要密码。
2. 启动主库实例(master)
2.1. 主配置文件 postgresql.conf 参数调整(master)
找到以下参数内容,调整参数值
进入/opt/pgdata 配置。
$cd $PGDATA
$vim postgresql.conf
listen_addresses = '*' (默认 localhost)
port = 5432
max_connections = 500
wal_level = hot_standby(默认是 minimal)
#启用 archive 归档模式,方便增量备份。
archive_mode = on
archive_command = ' cp %p /opt/pgdata/pg_archive/%f '
archive_timeout = 1800
log_destination= csvlog #使用 pg_rman 使用
max_wal_senders = 6(默认是 0)
hot_standby = on
wal_keep_segments=64(默认是 0)
wal_level 表示启动搭建 Hot Standby,max_wal_senders 则需要设置为一个大于 0 的数,
它表示主库最多可以有多少个并发的 standby 数据库,而最后一个 wal_keep_segments 也应
当设置为一个尽量大的值,以防止主库生成 WAL 日志太快,日志还没有来得及传送到
standby 就被覆盖,但是需要考虑磁盘空间允许,一个 WAL 日志文件的大小是 16M
如果 wal_keep_segments 设置为 64,也就是说将为 standby 库保留 64 个 WAL 日志文
件,那么就会占用 16*64=1GB 的磁盘空间,所以需要综合考虑,在磁盘空间允许的情况下
设置大一些,就会减少 standby 重新搭建的风险。
剩余89页未读,继续阅读
![none](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)