postgresql数据库安装部署
postgresql版本: 13.7
下载地址:https://www.postgresql.org/ftp/source/v16.1/
安装方式:二进制tar包编译安装
主机名及主机ip
| 角色 | 主机名 | 主机ip |
|---|---|---|
| 主节点 | postgres01 | 10.0.0.51 |
| 备节点 | postgres02 |
1.下载依赖##主从节点都执行
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
yum install -y e2fsprogs-devel uuid-devel libuuid-devel
2.准备相关节点目录 --- 主从节点都执行
mkdir -pv /apps/softwares/
mkdir -pv /apps/pgsql/postgresql
#解压软件包
cd /apps/softwares/
tar xf postgresql-13.7.tar.gz -C /apps/pgsql/
3.编译安装postgresql
#进入解压后的目录
cd /apps/pgsql/postgresql-13.7
./configure --prefix=/apps/pgsql/postgresql --without-readline --with-uuid=ossp
make
make install
至此,已完成postgresql的安装。进入/apps/pgsql/postgresql/目录可以看到安装后的postgresql的文件。
##13.7版本的编译完成缺少dblink插件,需要再次进行编译
cd /apps/pgsql/postgresql-13.7/contrib/dblink
make && make install
##密码认证插件
cd /apps/pgsql/postgresql-13.7/contrib/passwordcheck/
make && make install
编辑配置文件postgresql.conf
shared_preload_libraries = 'passwordcheck'
4.准备程序用户
groupadd postgres
useradd -g postgres postgres
id postgres
#修改用户密码
passwd postgres
post@123
5.创建postgresql数据库的数据主目录并修改文件所有者
数据库主目录是随着实际情况而不同,这里我们的主要目录是在/pgsql/postgresql/data目录下;
cd /apps/pgsql/postgresql
mkdir data
chown postgres:postgres data
ls -la
6.配置环境变量
进入/home/postgres可以看到.bash_profile文件。
cd /home/postgres
ls -la
vim .bash_profile
添加以下内容
export PGHOME=/apps/pgsql/postgresql
export PGDATA=/apps/pgsql/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin
保存,生效。
source .bash_profile
7.切换用户到postgres并使用initdb初始化数据库
su - postgres
初始化数据库:
initdb
可以看到/apps/pgsql/postgresql/data/已经有文件了
cd /apps/pgsql/postgresql/data
ls
修改/apps/pgsql/postgresql/data目录下的两个文件。
postgresql.conf 配置PostgreSQL数据库服务器的相应的参数。
pg_hba.conf 配置对数据库的访问权限。
参数配置:
https://pgtune.leopard.in.ua/
postgresql.conf 配置:
其中,参数"listen-addresses"表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。
pg_hba.conf 配置:
找到最下面这一行,这样局域网的人才能访问,红色为新添加内容。

##启动
pg_ctl start -D /apps/pgsql/postgresql/data
##连接
psql
在主库上创建复制用的账号 ,需要有属性 replication 才能进行复制
create role replica login replication encrypted password '8sL588Ix9G24Bvn7PS';
3.2 主库上修改pg_hba.conf文件
允许从库IP可以通过replica用户连接主库
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host all all 10.0.0.52/32 trust
host replication replica 10.0.0.52/32 md5
或者
host replication replica 10.0.0.0/24 md5
修改完成后重新加载使配置生效
pg_ctl -D /apps/pgsql/postgresql/data -l /apps/pgsql/postgresql/data/server.log reload
3.3 主库上修改配置文件postgres.conf
vim postgres.conf
listen_addresses = '*' # 允许所有IP访问
wal_level = replica # 可选值 minimal ,replica ,logical。要支持复制和归档,必须设置为replica 或logical
archive_mode = on # 开启归档模式,配合archive_command参数将WAL发送到归档目录
archive_command = 'cp %p /home/storage/pgsql/archive/%f' # 将WAL日志拷贝到归档目录
max_wal_senders = 10 # 指定来自后备服务器或流式基础备份客户端的并发连接的最大数量
#####################################################################
==============================异步复制================================
listen_addresses = '*'
wal_level = replica
max_wal_senders = 2
max_replication_slots = 2
synchronous_commit = off
###########################################################################
##重启数据库使配置生效
# 停止
pg_ctl -D /apps/pgsql/postgresql/data -l /apps/pgsql/postgresql/data/server.log stop
# 启动
pg_ctl -D /apps/pgsql/postgresql/data -l /apps/pgsql/postgresql/data/server.log start
3.4 备份主库数据至从库
#1.关闭从库正在运行的数据库
pg_ctl -D /apps/pgsql/postgresql/data -l /apps/pgsql/postgresql/data/server.log stop
#2.移除原本的数据目录
rm -rf /apps/pgsql/postgresql/data/*
#3.从库从主库进行数据库备份
pg_basebackup -h 10.128.17.39 -p 5432 -U replica -D /apps/pgsql/postgres/data -P --wal-method=stream -R
#4.从库备份完成后会在postgresql.auto.conf 记录恢复信息
3.5 修改从库参数
vim postgres.conf
listen_addresses = '*' # 允许所有IP访问
hot_standby = on
primary_conninfo = 'host=10.0.0.51 port=5432 user=replica password=8sL588Ix9G24Bvn7PS'
###参数信息参照postgres_auto配置
浙公网安备 33010602011771号