话不多说,我们直接开干。
1、软件
CentOS 7.6
PostgreSQL11.2
2、节点
node1 172.16.5.7(主库)
node2 172.16.5.6(从库)
node3 172.16.5.5(从库)
3、 PostgreSql一主二从配置
3.1 安装PostgreSql及PostGis
三个服务器均需做如下操作:
-
cat /etc/redhat-release查询系统版本,目前发现有些主机系统类型为redhat或者centos,更新源(手动下载)
Sudo yum install
https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm -
下载安装postgresql11
sudo yum install postgresql11 -
下载安装postgresql11-devel和postgresql11-server插件
yum install postgresql11-devel
yum install postgresql11-server -
查看postgresql是否安装
rpm -qa | grep postgis -
安装完毕之后, 执行执行:vim /etc/profile,文件末尾添加以下内容,最后执行source /etc/profile
export PGSQL_HOME=/usr/pgsql-11
export PATH= P G S Q L H O M E / b i n : PGSQL_HOME/bin: PGSQLHOME/bin:PATH -
初始化数据库集群,这个集群是指单机下的数据库集合,初始化后存在两个自带的数据库postgres和template1,指令如下:
initdb -D /data/pgsql11/data -
注意/data/pgsql11/data/postgresql.conf该文件包含了postgresql的所有配置信息,在这里我们修改log路径,绑定端口号等等功能。修改postgresql.conf文件如下:
listen_addresses = ‘*’
port = 18083
log_directory = ‘/data/pgsql11/log’ -
修改pg_hba.conf文件,增加
host all smoke 0.0.0.0/0 trust -
启动postgresql服务
chown -R app1:app1 /var/run/postgresql #更改文件夹操作权限
pg_ctl -D /data/pgsql11/data -l /data/pgsql11/log/pgsql.log start #启动数据库 -
创建数据库
createdb -h localhost -p 18083 gisdb #创建gisdb的数据库
psql -h localhost -p 18083 -d gisdb #连接gisdb数据库 -
安装postGis
sudo yum install postgis25_11-client.x86_64 postgis25_11.x86_64 -
给postgreSql安装gis扩展
psql -h 172.16.5.7 -p 5432 -d gisdb
gisdb=# CREATE EXTENSION postgis;
CREATE EXTENSION
gisdb=# SELECT postgis_full_version()
3.2 配置主服务器
-
创建同步账号,用于同步数据
psql -h 172.16.5.7 -p 5432 -d gisdb
CREATE USER replica WITH PASSWORD ‘replica-vcredit’ REPLICATION; -
修改postgresql的pg_hba.conf,配置运行刚刚创建的replica用户可以进行连接,在pg_hba.conf文件中加入如下内容:
host all all 172.16.5.6/32 trust
host replication replica 172.16.5.6/32 md5
host all all 172.16.5.5/32 trust
host replication replica 172.16.5.5/32 md5 -
配置postgresql.conf
listen_addresses = ‘*’ #监听所有ip
archive_mode = on #开启归档模式
archive_command = ‘cp %p /data/pgsql11/data/pg_wal/%f’ #归档命令
wal_level = hot_standby #热备模式
max_wal_senders = 10 #最多有10个流复制连接
wal_sender_timeout = 60s #流复制超时时间
max_connections = 100 #最大连接时间,必须要小于从库的配置 -
重启数据库服务
pg_ctl -D /data/pgsql11/data -l /data/pgsql11/log/pgsql.log restart
3.3 配置从服务器
-
进入172.16.5.5和172.16.5.6服务器,清空PostgreSQL数据的存储文件夹/data/pgsql11/data
sudo rm -rf /data/pgsql11/data/* -
基础备份
pg_basebackup -F p --progress -D /data/pgsql11/data/ -h 172.16.5.7 -p 18083 -U replica –password
命令行参数如下:
-F p 指定输出格式:p原样输出,即把主数据库中的各个数据文件,配置文件、目录结构都完全一样的写到备份目录;
-P, --progress 在备份过程中实时打印备份进度
-D 指定把备份写到那个目录
-h 启动的主库数据库地址
-p 端口号
-U 流复制用户 -
在/data/pgsql11/data/目录下,创建recovery.conf文件,内容如下
standby_mode = on #表示该节点是从库
primary_conninfo = ‘host=172.16.5.7 port=18083 user=replica password=replica-vcredit’ #从机信息和连接用户
recovery_target_timelint = ‘latest’ #说明恢复到最新状态 -
配置从机的postgresql.conf文件
wal_level = hot_standby #热备模式
max_connections = 300 #最大连接时间
hot_standby = on #说明这台机器用于数据归档和数据查询
max_standby_streaming_delay = 30s #流备份的最大延迟时间
wal_receiver_status_interval = 1s #向主机汇报本机状态的间隔时间
hot_standby_feedback = on #r出现错误复制,向主机反馈 -
重启数据库服务
pg_ctl -D /data/pgsql11/data -l /data/pgsql11/log/pgsql.log restart
至此,主从配置完成,可更改主库数据,查看从库是否更新进行测试。