前言
最近要给客户部署一套postgresql生产环境,规划是采用一主两从的流复制架构搭建集群。记录本次操作过程及遇到的一些问题,留作参考。
环境
主机 | 角色 | OS | db |
192.168.0.111 | 主 | Ubuntu20 | postgresql14 |
192.168.0.112 | 备 | Ubuntu20 | postgresql14 |
192.168.0.113 | 备 | Ubuntu20 | postgresql14 |
3台主机完成网络配置,可以访问外网,互相可以通信
辅助工具:screen,keepalive,net-tools
软件安装,过程不再赘述,用下面的命令直接安装就可以了
apt-get update
apt-get install screen
apt-get -y install keepalived
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql-14
【可选】初始化postgres用户的密码 12345
passwd postgres
##根据提示输入两次相同的初始密码完成修改
至此演示环境软硬件环境完成准备。
关于screen工具,这个是用于远程操作时在服务器上打开的后台终端,可以防止本地与服务器连接断开时,服务器上的进程不断,简单介绍一下使用方法如下:
screen -ls #查看已有的服务器后台screen终端进程
screen -S 自定义终端名 #创建一个新screen终端
screen -dr 终端名 #进入一个已有的screen终端,如果这个终端被其他用户使用,强行结束他人的进程并进入
在screen终端内要退出按Ctrl键+a+d,这样退出下次再进去的时候原来在这个screen终端中运行的进程都还在
集群配置过程
操作过程中需要监控系统日志可以另开一个终端,并在这个终端上执行下面的语句
tail -f /var/log/postgresql postgresql-14-main.log #可以观察数据库启停的一些信息
tail -f /var/log/syslog #可以观察所有linux的操作信息
【主库(192.168.0.111)】部署
首先对【主库(192.168.0.111)】进行配置
主库的外网访问权限配置【这一步备库也要执行】
su - postgres
psql --version
# set database network
cp /etc/postgresql/14/main/pg_hba.conf /etc/postgresql/14/main/pg_hba.conf.bak
echo "host all all 0.0.0.0/0 scram-sha-256" >>/etc/postgresql/14/main/pg_hba.conf
export PGDATA=/var/lib/postgresql/14/main
mkdir $PGDATA
mkdir /var/lib/postgresql/pdump
mkdir /var/lib/postgresql/pdump/log
echo "export PATH="$PATH":/usr/lib/postgresql/14/bin" >> ~/.bash_login
echo "export PGDATA="$PGDATA >> ~/.bash_login
source ~/.bash_login
vi /etc/postgresql/14/main/pg_hba.conf