专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > postgresql > 教程 > PostgreSQL 12配置主从服务器(转)

PostgreSQL 12配置主从服务器(转)

文章来源: 更新时间:2021/9/28 10:47:32

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

PostgreSQL配置主从服务器

PostgreSql在9.0之后引入了主从的流复制机制,所谓流复制,就是从服务器通过tcp流从主服务器中同步相应的数据。这样当主服务器数据丢失时从服务器中仍有备份。

与基于文件日志传送相比,流复制允许保持从服务器更新。 从服务器连接主服务器,其产生的流WAL记录到从服务器, 而不需要等待主服务器写完WAL文件。

PostgreSQL流复制默认是异步的。在主服务器上提交事务和从服务器上变化可见之间有一个小的延迟,这个延迟远小于基于文件日志传送,通常1秒能完成。如果主服务器突然崩溃,可能会有少量数据丢失。

同步复制必须等主服务器和从服务器都写完WAL后才能提交事务。这样在一定程度上会增加事务的响应时间。

配置同步复制仅需要一个额外的配置步骤: synchronous_standby_names必须设置为一个非空值。synchronous_commit也必须设置为on。

注: 主从服务器所在节点的系统、环境等最好一致。PostgreSQL版本也最好一致,否则可能会有问题。

安装部署

本示例采用两台相同配置的服务器进行部署,PostgreSQL12安装详情请参考《安装配置PostgreSQL12》

角色 IP地址 系统版本 数据库版本

主服务器 192.168.0.73 CentOS Linux release 7.7.1908 PostgreSQL12

从服务器 192.168.0.74 CentOS Linux release 7.7.1908 PostgreSQL12

配置主服务器

切换成postgres用户,进入数据库,创建一个普通数据库用户,只赋予登录和复制的权限即可

[root@postgresql ~]# su - postgres

上一次登录:二 1月 14 10:24:59 CST 2020pts/0 上

-bash-4.2$ psql

用户 postgres 的口令:

psql (12.1)

输入 "help" 来获取帮助信息.

postgres=# create role rsyncd login replication encrypted password '123456';

CREATE ROLE

postgres=# \q

用户创建完成后,修改pg_hba.conf文件,在结尾添加如下配置:

host replication rsyncd 192.168.0.74/24 md5

## 即使之前添加过所有用户不限制IP地址登录,也要添加此配置项,否则数据同步不好用

## IP地址可配置成 0.0.0.0/0 根据具体的业务场景配置

修改postgresql.conf文件

-bash-4.2$ vi /home/pgdata/12/data/postgresql.conf

## 直接修改以下参数

archive_mode = on ## 开启归档模式

archive_command = 'cp %p /home/pgdata/12/data/%f' ## 归档命令

wal_level = replica ## 热备模式

max_wal_senders = 2 ## 最多有2个流复制连接

wal_sender_timeout = 60s ## 流复制超时时间

max_connections = 100 ## 最大连接时间,必须要小于从库的配置

退出保存后,重启数据库服务

[root@postgresql ~]# systemctl restart postgresql-12

配置从服务器

测试从服务器是否能够连接到主服务器

[root@postgresql ~]# psql -h 192.168.0.73 -U postgres

用户 postgres 的口令:

psql (12.1)

输入 "help" 来获取帮助信息.

postgres=#

如果可以正常连接,说明主服务器配置正常,否则检查下主服务器的pg_hba.conf文件

切换成postgres用户,清空数据文件夹内所有的文件【这步需要做"基础备份",首次使用建议做好备份工作】

-bash-4.2$ rm -rf /home/pgdata/12/data/*

在主服务器上备份数据到从服务器中,这步操作为”基础备份“,使用主服务器创建的备份用户进行操作

-bash-4.2$ pg_basebackup -h 192.168.0.73 -p 5432 -U rsyncd -Fp -Xs -Pv -R -D /home/pgdata/12/data/

口令:

pg_basebackup: 开始基础备份,等待检查点完成

pg_basebackup: 已完成检查点

pg_basebackup: 预写日志起始于时间点: 0/4000028, 基于时间轴1

pg_basebackup: 启动后台 WAL 接收进程

pg_basebackup: 已创建临时复制槽"pg_basebackup_4087"

25317/25317 kB (100%), 1/1 表空间

pg_basebackup: 预写日志结束点: 0/4000100

pg_basebackup: 等待后台进程结束流操作...

pg_basebackup: 同步数据到磁盘...

pg_basebackup: 基础备份已完成

在数据文件夹中创建恢复配置文件

-bash-4.2$ vi /home/pgdata/12/data/recovery.signal

# 将以下写在恢复文件中

standby_mode=on ## 表示该节点是从库

primary_conninfo='host=192.168.0.73 post=5432 user=rsyncd password=123456' ## 主服务器信息和连接用户

recovery_target_timelint='latest' ## 说明恢复到最新状态

修改postgresql.conf文件

max_connections = 300 ## 最大连接时间,必须要小于从库的配置

hot_standby = on ## 说明这台机器不仅用于数据归档,还可以用于数据查询

max_standby_streaming_delay = 30s ## 流备份的最大延迟时间

wal_receiver_status_interval = 10s ## 向主机汇报本机状态的间隔时间

hot_standby_feeDBAck = on ## 如出现错误复制,向主机反馈

退出保存后,重启数据库服务,验证从服务器是否可以同步主服务器数据

[root@postgresql ~]# systemctl restart postgresql-12

(转)

本文地址:http://www.cuug.com.cn/postgresql/jiaocheng/28904686457.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区北清路164号28-38号院
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1