一、单机部署
本机ip:192.168.59.128,配置中该ip需要切换为真是本机ip
1、下载对应版本
dnf update
wget https://ftp.postgresql.org/pub/source/v14.7/postgresql-14.7.tar.gz
2、安装gcc、zlib
(个人安装时gcc版本为10.3.1)
yum install gcc
yum install zlib-devel
3、解压
tar -zxvf postgresql-14.7.tar.gz
4、编译
./configure
make
make install
5、创建用户和组
groupadd postgres
useradd -g postgres postgres
passwd postgres
6、初始化数据库
#创建数据目录
mkdir /usr/local/pgsql/data
#赋权限
chown postgres /usr/local/pgsql/data
#切换用户
su - postgres
初始化目录
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
7、启动数据库
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
# 连接数据库
psql
# 修改密码
ALTER USER postgres WITH PASSWORD 'postgres';
8、修改配置文件
vim /usr/local/pgsql/data/postgresql.conf
# 修改listen_address
listen_addresses = '*'
# 编辑pg_hba.conf文件设置密码访问
vim /usr/local/pgsql/data/pg_hba.conf
# 末尾添加一行
host all all 192.168.59.128/24 md5
9、重启服务
# 切换用户
su - postgres
# 停止服务
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile stop
#启动服务
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
10、开放防火墙
#开放端口
sudo firewall-cmd --zone=public --permanent --add-port=5432/tcp
#重启
sudo firewall-cmd --reload
11、创建开机启动
#添加脚本文件
vim /etc/profile.d/postgresql.sh
添加进以下内容到该文件
export PATH=$PATH:/usr/local/pgsql/bin
11.1创建启动文件
cd /usr/lib/systemd/system
vim postgresql.service
添加下面内容到postgresql.service文件
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
OOMScoreAdjust=-1000
Environment=PGDATA=/usr/local/pgsql/data
Environment=PGPORT=5432
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -l ${PGDATA}/logfile -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -l ${PGDATA}/logfile -s -m fast
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -l ${PGDATA}/logfile -s
TimeoutSec=300
[Install]
WantedBy=multi-user.target
11.2 设置自启动
chmod a+x postgresql.service
systemctl enable postgresql.service
systemctl start postgresql.service
二、集群搭建
一主两从搭建集群,三台机器ip分别为:
192.168.59.128
192.168.59.134
192.168.59.135
注意:从库不进行初始化,如果初始化之后,关掉数据库,并删除data目录
1、主节点:创建用于主从访问的用户
psql
create role repl login replication encrypted password 'postgres';
2、主节点:编辑文件/usr/local/pgsql/data/pg_hba.conf,允许从节点读取wal文件
host replication repl 192.168.59.128/32 trust
host replication repl 192.168.59.134/32 trust
host replication repl 192.168.59.135/32 trust
3、从节点:
#root用户下赋权限给postgres用户
chown postgres /usr/local/pgsql/
#切换到postgres用户
su - postgres
# 进入目录
cd /usr/local/pgsql/
# 创建数据文件
mkdir data
# 给data目录赋750或者700权限(其他权限会导致启动报错权限问题)
chmod 750 data
# 从主节点同步数据
pg_basebackup -h 192.168.59.128 -U repl -D /usr/local/pgsql/data -X stream -P -R
# 编辑文件/usr/local/pgsql/data/postgresql.conf,加入下面内容
primary_conninfo = 'host=192.168.59.128 port=5432 user=repl password=postgres'
hot_standby = on
#启动数据库
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start