教学文章
Technology Exchange
热门课程
400电话

免费咨询热线
400-090-9964

教学文章

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

时间:2021-09-28 来源:

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

(转)

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright ALL Rights Reserved 京ICP备11008061号-1

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com www.cuug.net

电话:010-59426307 010-59426319 邮政编码:100089

地址:北京市海淀区北清路164号28-38号院