参考资料:https://www.jianshu.com/p/41d857a5d743
https://www.postgresql.org/download/linux/redhat/
1.准备工作
1.1 准备2台虚拟机
192.168.29.130 安装主库
192.168.29.131 安装从库
1.2 了解单击版安装步骤请查看 Postgresql 9.6 在Centos 7.2 中安装
1.3 确保单击安装后,能远程登录与访问
2.主库配置
2.1 创建文件夹并赋予权限
mkdir -p /app/pgsql/data && chown postgres:postgres /app/pgsql/data
mkdir -p /app/pgsql/pg_archive && chown postgres:postgres /app/pgsql/pg_archive
cd /app/pgsql && chmod 700 data
cd /app/pgsql && chmod 700 pg_archive
2.2 将初始化的数据库的data文件夹的下的文件复制到 新创建的 文件夹下,并赋予权限
cp -r /var/lib/pgsql/9.5/data/* /app/pgsql/data/
cd /app/pgsql && chown -R postgres:postgres data
2.3 修改配置文件
vi /app/pgsql/data/pg_hba.conf 如图
vi /app/pgsql/data/postgresql.conf 如下配置
data_directory = '/app/pgsql/data' #自定义data目录
listen_addresses = '*' #监听所有ip
archive_mode = on #允许归档
archive_command = 'cp %p /app/pgsql/pg_archive/%f' #使用命令归档
wal_level = hot_standby #选择热备
max_wal_senders = 16 #最多多少个流复制链接
wal_keep_segments = 256 #流复制保留最多的xlog数
wal_sender_timeout = 60s #流复制主机发送数据超时时间
max_connections = 100 #从库的max_connections必须大于主库的
2.4 启动服务器
由于目前data文件夹目录发生变化,所以需要修改数据库的启动方式,
关闭数据库:systemctl stop postgresql-9.6.service
切换用户 su postgres
执行命令 /usr/pgsql-9.6/bin/pg_ctl -D /app/pgsql/data/ start
2.5 创建一个角色,进行数据同步
create role replica login replication encrypted password 'replica';
3.配置从服务器
3.1 下载安装,并初始化,主要需要创建postgres 角色
/usr/pgsql-9.6/bin/postgresql96-setup initdb
3.2 创建目录 并赋予权限
mkdir -p /app/pgsql/data && chown postgres:postgres /app/pgsql/data
mkdir -p /app/pgsql/pg_archive && chown postgres:postgres /app/pgsql/pg_archive
cd /app/pgsql && chmod 700 data
cd /app/pgsql && chmod 700 pg_archive
3.3 初始化复制
pg_basebackup -h 192.168.29.130 -U replica -D /app/pgsql/data -X stream -P
3.4 修改配置文件
3.4.1将/usr/pgsql-9.6/share/recovery.conf.sample 复制到 /app/pgsql/data/recovery.conf
cp /usr/pgsql-9.6/share/recovery.conf.sample /app/pgsql/data/recovery.conf
3.4.2 修改复制进来的文件
vi /app/pgsql/data/recovery.conf
standby_mode = on #从节点模式
primary_conninfo = 'host=192.168.29.130 port=5432 user=replica password=replica'
recovery_target_timeline = 'latest'
trigger_file = '/tmp/triger_file0'
3.4.3 修改postresql.conf文件
vi /app/pgsql/data/postgresql.conf
注释 archive_mode、archive_command、max_wal_senders、
wal_keep_segments、wal_sender_timeout
修改参数为如下配置
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on
3.5 启动数据库
/usr/pgsql-9.6/bin/pg_ctl -D /app/pgsql/data/ start
4.验证流复制
登录主库
查看replica角色情况
select * from pg_stat_replication;
创建数据库
登录从库 查看数据库