postgresql 主从配置_Postgresql主从配置

一、简介

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

与基于文件日志传送相比,流复制允许保持从服务器更新。 从服务器连接主服务器,其产生的流WAL记录到从服务器, 而不需要等待主服务器写完WAL文件(关于Wal可以看看官方的说法https://www.postgresql.org/docs/10/static/different-replication-solutions.html)。

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

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

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

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

二、安装部署(使用Ubuntu的普通用户安装部署)

角色

IP地址

系统版本

数据库版本

主服务器

192.168.100.71

Ubuntu18.04  amd64

PostgreSQL10

从服务器

192.168.100.70

Ubuntu18.04  amd64

PostgreSQL10

注:18.04版本默认的PostgreSQL版本是10,要安装其他版本可以采用编译的方式或者apt-get 指定版本号安装

1、两台服务器都要安装PostgreSQL

sudo apt-get updatel

sudo apt-get install postgresql

sudo vi /etc/postgresql/10/main/postgresql.conf

在文件末尾添加或者找到该行,将peer改为trust

local all all trust

重启PostgreSQL服务

sudo service postgresql restartt

这样PostgreSQL就安装完毕

2、配置主服务器

切换成postgres用户

sudo su – postgres

进入数据库,创建一个普通的数据库用户用户进行主从同步(只需赋予登录和复制的权限即可)

postgres=# create role guoxm login replication encrypted password 'guoxm'

然后退出

postgres=# \q

在exit退出到原用户

然后,修改postgresql的pg_hba.conf,配置运行刚刚创建的guoxm用户可以进行连接

sudo vi /etc/postgresql/10/main/pg_hba.conf

在文件尾添加如下两行

host all all 192.168.100.70/32 trust #运行70服务器连接到本机

host replication guoxm 192.168.100.70/32 md5 #运行guoxm用户在70上复制本机数据

注:第二个的角色必须是replication

最后,再次配置postgresql.conf

sudo vi /etc/postgresql/10/main/ postgresql.conf

这次需要配置的是主机的角色

listen_addresses = ‘*’ #监听所有ip

archive_mode = on #开启归档模式

archive_command = ‘cp %p /var/lib/postgresql/10/main/%f’ #归档命令

wal_level = hot_standby #热备模式

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

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

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

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

sudo service postgresql restartt

3、配置从服务器

首先,先测试一下是否能连接主服务器

psql -h 192.168.100.70  -U  postgres

如果可以,说明主机配置正常,否则检查一下主机的pg_hba.conf配置

进入到postgres用户

sudo su - postgres

先清空main目录下的数据(main文件夹就是PostgreSQL数据的存储文件夹)

rm -rf 10/main/*

或者

rm -rf /var/lib/postgresql/10/main/*

因为PostgreSQL的home目录就在/var/lib/postgresql中

所以上面两条命令到达的效果是一样的

然后,开始从主服务器上copy数据到本机上,这一步叫做“基础备份”

pg_basebackup -h 192.168.100.71 -U guoxm –D 10/main/ -X stream –P

或者

pg_basebackup -F p --progress -D 10/main/ -h 192.168.100.71 -p 5432 -U guoxm --password

pg_basebackup是PostgreSQL自带的基础备份工具

这样,基础备份就完成了

然后,创建recovery.conf用于从库恢复从主库获取的数据

vi recovery.conf

然后编辑如下配置

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

primary_conninfo = ‘host=192.168.100.71 post=5432 user=guoxm password=guoxm’#从机信息和连接用户

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

保持并退出后,

复制或在移动到main文件夹中

cp recovery.conf   10/main/

或者

mv recovery.conf   10/main/

然后,exit退出到原用户

最后,配置从机的postgresql.conf文件

sudo vi /etc/postgresql/10/main/postgresql.conf

在文件末尾添加如下配置

wal_level = hot_standby #热备模式

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

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

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

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

hot_standby_feedback = on #r出现错误复制,向主机反馈

保存并退出

到这里,从机配置完成

重启数据库服务

sudo service postgresql restart

4、验证主从配置是否成功

在主机上,切换到postgres用户

sudo su – postgres

进入数据库

执行如下查询

select client_addr,sync_state from pg_stat_replication;

如果看到如下查询结果

说明192.168.100.70是从服务器,在接收流,而且是异步流复制。说明主从配置成功

注:必须切换到postgres用户下进行查询

此外,还可以查看相关进程来验证是否配置成功

在主机、从机上分别执行

ps aux | grep postgres

主机上可以看到正在向从机发送数据流

从机上可以看到正在接收数据流

到此,主从配置完成;

参考链接:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL主从复制是一种常见的高可用性和数据备份解决方案。它可以确保在主节点故障时,从节点可以接管并继续提供服务。 要配置PostgreSQL主从复制,需要进行以下步骤: 1. 确保主节点和从节点上都已安装了PostgreSQL。 2. 在主节点上修改postgresql.conf文件,启用WAL(Write-Ahead Logging)并配置适当的参数。找到并修改以下参数: ``` wal_level = replica max_wal_senders = 10 wal_keep_segments = 10 ``` 这些参数将确保主节点生成WAL日志,并允许从节点连接并接收这些日志。 3. 在主节点上修改pg_hba.conf文件,允许从节点连接。找到并添加以下行: ``` host replication <从节点用户名> <从节点IP地址>/32 md5 ``` `<从节点用户名>`是从节点连接时使用的用户名,`<从节点IP地址>`是从节点的IP地址。 4. 在主节点上重启PostgreSQL服务以使更改生效。 5. 在从节点上创建一个空的数据目录。 6. 在从节点上创建一个recovery.conf文件,指定主节点的连接信息和复制模式。将以下内容添加到recovery.conf文件中: ``` standby_mode = 'on' primary_conninfo = 'host=<主节点IP地址> port=5432 user=<从节点用户名> password=<从节点密码>' trigger_file = '/path/to/trigger/file' ``` `<主节点IP地址>`是主节点的IP地址,`<从节点用户名>`和`<从节点密码>`是用于连接主节点的凭据。 7. 启动从节点上的PostgreSQL服务。 完成上述步骤后,主节点和从节点之间的复制将开始运行。你可以通过在主节点上执行一些写操作,然后在从节点上查看数据是否同步来验证复制是否成功。 请注意,以上步骤仅适用于基本的主从复制配置。在实际部署中,你可能还需要考虑故障转移、监控、自动故障恢复等方面的配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值