准备工作
首先安装依赖包
yum -y install readline-devel zlib-devel
1.安装postgresql
将postgresql的包上传到(/tmp)文件夹中进行解压
postgresql的离线包到官方网站下载:https://www.postgresql.org/
命令:tar -xzvf postgresql-13.3.tar.gz
2.创建postgresql的安装目录
PS:请注意你的创建路径,可以是不同的路径后面会用到
PS:请注意你的创建路径,可以是不同的路径后面会用到
PS:请注意你的创建路径,可以是不同的路径后面会用到
命令:mkdir /data01/postgresql //data01目录下创建postgresql
3.生成makefile
PS:需要到解压的目录下操作
命令:./configure --prefix=/data01/postgresql //需要到解压的目录下操作
4.编译安装
PS:在解压的目录下执行
命令:make && make install //在解压的目录下执行
5.安装工具集
PS:进入到解压后的目录下的contrib文件夹
命令:cd /data01/postgresql-11.7/contrib //进入到解压后的目录下的contrib文件夹
命令:make && make install
6.创建postgresql用户
命令:groupadd postgres
命令:useradd -g postgres postgres
为了安全考虑,postgresql不允许使用root用户操作数据库,我们在系统中为了使用postgresql添加一个用户postgres:
也可以是其他用户名,但是习惯上大家都是创建postgres用户作为数据库的超级用户。
初始化数据库时,就以这个用户作为数据库的超级用户
7.修改data目录的用户为postgres
命令:cd /data01/postgresql //进入到安装的postgresql目录
命令:mkdir data //在postgresql目录下创建data文件夹
命令:chown -R postgres:postgres /data01/postgresql/data
8.修改环境变量
命令:su - postgres
命令:vim /home/postgres/.bash_profile
添加环境变量:
export PGHOME=/data01/postgresql
export PGDATA=/data01/postgresql/data
export PATH=$PGHOME/bin:$PATH
export MANPATH=$PGHOME/share/man:$MANPATH
export LANG=en_US.utf8
export DATE=`date +"%Y-%m-%d %H:%M:%S"`
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
alias rm='rm -i'
alias ll='ls -lh'
保存后使环境变量立即生效,否则initdb命令会找不到:
命令:source /home/postgres/.bash_profile
9.初始化数据库
命令:initdb -D /data01/postgresql/data/
10.启动数据库
命令:su - postgres //使用postgres用户
命令:cd /home/postgres //logfile需要在postgres的用户目录下创建
命令:pg_ctl -D /data01/postgresql/data/ -l logfile start
查看5432端口是否已经启动
命令:netstat -nltp|grep 5432
1-10,主库备库服务器上都要操作
11.主库修改/data01/postgresql/data/pg_hba.conf文件,允许备库IP通过复制用户访问数据库
host all all 0.0.0.0/0 md5
host replication postgres 192.168.153.196/32 trust
(配置为从节点ip即可)
12.主库修改/data01/postgresql/data/postgresql.conf
listen_addresses= '*'
wal_level = replica
max_connections = 10000
archive_mode = on
archive_command = 'cp %p /data01/postgresql/archive/%f'
max_wal_senders= 10
wal_keep_size = 1000 # in megabytes; 0 disables
max_slot_wal_keep_size = 10 # in megabytes; -1 disables
wal_sender_timeout = 120s # in milliseconds; 0 disables
hot_standby = on
13.修改完后重启主库服务
pg_ctl -D /data01/postgresql/data/ -l logfile restart
14.备库使用pg_basebackup命令将主节点的data同步过来
pg_basebackup -h 192.168.153.208 -p 5432 -U postgres -P -X stream -D /data01/postgresql/data -R
执行会报错,需要将data目录下文件全部移走再执行上面命令,然后将postmaster.pid和postmaster.opts两个文件再移回去,最后重启即可。
在主库查看集群状态
psql -x -c "select * from pg_stat_replication" -d postgres
15.主库停止,模拟故障
将备库提升为新主库,对外提供服务
psql -c "select pg_is_in_recovery()"