到官网选择操作系统会生成安装脚本
http://www.postgresql.org/download/linux/redhat/

sudo yum install -y http://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装
sudo yum install -y postgresql16-server

# 初始化(将目标目录初始化为数据库目录)
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
启动服务or开机启动:
sudo systemctl enable postgresql-16
#启动PostgreSQL服务
sudo systemctl start postgresql-16

官方生成的脚本有可能执行不了,如:No package postgresql16-server available.
这是版本太高,可能yum文件还没作好就,可以降一个版本把16换成15



密码
安装成功后会默认创建用户postgres,通过ps看进程也能看出来。修改账号密码的方式:

# 切换用户
su postgres

# 启动psql
psql

# 修改密码
ALTER USER postgres WITH PASSWORD 'NewPassword';


目录
PGDATA下面的目录及其作用(/var/lib/pgsql/12/data/):

PG_VERSION                  # version file. 一个包含PostgreSQL主版本号的文件
base                        # use to store database file(SELECT oid, datname FROM pg_database). 包含每个数据库对应的子目录的子目录
global                      # under global, all the filenode is hard-code(select oid,relname,relfilenode from pg_class where relfilenode=0 order by oid). 包含集簇范围的表的子目录,比如pg_database
pg_clog                     # dir of transaction commit log
pg_commit_ts                # 包含事务提交时间戳数据的子目录
pg_dynshmem                 # 包含被动态共享内存子系统所使用的文件的子目录
pg_hba.conf                 # client authentication config file
pg_ident.conf               # user ident map file
pg_logical                  # 包含用于逻辑复制的状态数据的子目录
pg_multixact                # 包含多事务(multi-transaction)状态数据的子目录(用于共享的行锁)
pg_notify                   # 包含LISTEN/NOTIFY状态数据的子目录
pg_replslot                 # 包含复制槽数据的子目录
pg_serial                   # 包含已提交的可序列化事务信息的子目录
pg_snapshots                # dir of snapshot file 包含导出的快照的子目录
pg_stat                     # 包含用于统计子系统的永久文件的子目录
pg_stat_tmp                 # dir of tmp stat file 包含用于统计信息子系统的临时文件的子目录
pg_subtrans                 # 包含子事务状态数据的子目录
pg_tblspc                   # 包含指向表空间的符号链接的子目录
pg_twophase                 # 包含用于预备事务状态文件的子目录
pg_xlog                     # dir of xlog file
postgresql.auto.conf        # 一个用于存储由ALTER SYSTEM 设置的配置参数的文件
postgresql.conf             # config file of postmaster progress
postmaster.opts             # 一个记录服务器最后一次启动时使用的命令行参数的文件
postmaster.pid              # pid file of postmaster progress. 一个锁文件,记录着当前的 postmaster 进程ID(PID)、集簇数据目录路径、postmaster启动时间戳、端口号、Unix域套接字目录路径(Windows上为空)、第一个可用的listen_address(IP地址或者*,或者为空表示不在TCP上监听)以及共享内存段ID(服务器关闭后该文件不存在)
配置文件
pg_hba.conf(host-based authentication)
安全相关。

基于主机的客户端认证配置文件,详细的解释:20.1. pg_hba.conf文件。

想要远程连接的话需要修改:

host  all  all 0.0.0.0/0 md5


postgresql.conf
通用配置。

想要远程连接主机,需要设置监听:

listen_addresses = '*'


recovery.conf
配置恢复、备份等。



主从复制


主库
修改配置文件postgresql.conf:

listen_address = '*'
wal_level = replica
archive_mode = on 
archive_command = 'cp %p /data/postgresql/archive/%f '
max_wal_senders= 10  
wal_keep_segments=1024
hot_standby = on
说明:

listen_address:  按需设置,本次测试配置为所有主机均可以访问,生产环境可以按需配置网段或IP等
wal_level:  设置流复制模式至少设置为replica
archive_mode:  本次启用归档
archive_command:WAL日志归档命令,生产环境可以将归档拷贝到对应目录或其他机器上,本次测试配置为归档到本机的另一个目录下
max_wal_senders: 最大WAL发送进程数,此数量需大于等于从库个数且比max_connections小。
wal_keep_segments: pg_wal目录下保留WAL日志的个数,每个WAL文件默认16M,为保障从库能在应用归档落后时依旧能追上主库,此值建议设置较大一点。
hot_standby: 此参数控制在恢复归档期间是否支持只读操作,设置为ON后从库为只读模式。
创建目录:

mkdir -p  /data/postgresql/archive/
创建复制账号:

create user repl  REPLICATION  LOGIN ENCRYPTED  PASSWORD 'repl123';


从库
使用工具开始复制:

pg_basebackup -h 192.168.56.32 -U repl -p 5432 -F p   -X s  -v -P -R -D /data/postgresql/data/ -l postgres32
修改配置文件:

standby_mode = 'on'
primary_conninfo = 'user=repl password=repl123 host=192.168.56.32 port=5432 sslmode=disable sslcompression=0 target_session_attrs=any'
## 添加如下信息
recovery_target_timeline = 'latest'
启动从库:

pg_ctl  -D /data/postgresql/data/  -l pg33.log  start