在 PostgreSQL 中创建热备

在今天的帖子中,我将向您展示在 PostgreSQL 中创建热备份。

PostgreSQL 社区 13 安装:

https://dbtut.com/index.php/2022/03/13/postgresql-community-13-installation-on-oracle-linux-7/

要创建 Stanby,我们需要两台安装了 Postgresql Community 13 的服务器。

如果您还没有安装,您可以从上面的链接安装。

主服务器和备用服务器都需要执行一些操作。

我们将从需要在主服务器上完成的操作开始。

主服务器IP:192.168.1.12

备用服务器IP:192.168.1.14

在主服务器上采取的行动:

1.我们检查主数据库是否处于归档模式。

postgres=# show archive_mode;
 archive_mode 
--------------
 off
(1 row)
  1. 由于数据库没有处于归档模式,我们将数据库置于归档模式。

我们确保使用archive_command 参数将我们的档案发送到备用数据库。

使用 vi,我们将 postgresql.conf 文件的内容更改如下。

bash-4.2$ vi /var/lib/pgsql/13/data/postgresql.conf
archive_mode = on
archive_command = 'rsync -a %p postgres@192.168.1.14:/var/lib/pgsql/13/ARCHIVELOG/%f'

3.由于后面会创建stanby,所以我们也在postgresql.conf文件中设置了如下参数。

bash-4.2$ vi /var/lib/pgsql/13/data/postgresql.conf
wal_level = replica
max_wal_senders = 3
max_replication_slots = 4

4、我们必须重启postgresql服务才能使我们在postgresql.conf文件中所做的更改生效。

$ systemctl restart postgresql-13.service

  1. 创建复制用户。
bash-4.2$ psql postgres
postgres# CREATE ROLE replication WITH REPLICATION PASSWORD 'pass' LOGIN

  1. 外部访问数据库,监听地址设置如下,pg_hba.conf中进行如下修改。
bash-4.2$ vi /var/lib/pgsql/13/data/postgresql.conf
listen_addresses = '*'
-bash-4.2$ vi /var/lib/pgsql/13/data/pg_hba.conf
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5

  1. 将以下行添加到 pg_hba.conf 文件中。 (我们设置备用服务器的IP。)
-bash-4.2$ vi /var/lib/pgsql/13/data/pg_hba.conf
host  replication     replication     192.168.1.14/32         md5

8、修改完成后,我们重启服务。

$ systemctl restart postgresql-13.service

在备用服务器上采取的措施:

1.我们停止服务。

$ systemctl stop postgresql-13.service

2.我们备份第二个数据目录。

-bash-4.2$ mv /var/lib/pgsql/13/data/ /var/lib/pgsql/13/data_old
  1. 我们连接到主服务器,进行备份并恢复它。
bash-4.2$ pg_basebackup -h 192.168.1.12 -U postgres -D /var/lib/pgsql/13/data -U replication -v -P --wal-method=stream --write-recovery-conf
  1. 我们创建standby.signal 文件。
bash-4.2$ touch /var/lib/pgsql/13/data/standby.signal
  1. 我们启动服务。
$ systemctl start postgresql-13.service

当我们完成上述步骤后,我们将拥有备用数据库。

如果要测试,可以在备服务器上查询主服务器上的一张表,也可以用下面的查询来查备。

select now(),pg_last_xact_replay_timestamp();

我希望这对您来说是一份有用的文件。

原文标题:Creating A Hot Standby In PostgreSQL
原文作者:Melek Durdu
原文地址:https://dbtut.com/index.php/2022/04/06/creating-a-hot-standby-in-postgresql/


免责声明:

1、本站资源由自动抓取工具收集整理于网络。

2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

5、如果您喜欢本资源,请您支持作者,购买正版内容。

6、资源失效,请下方留言,欢迎分享资源链接

文章评论

0条评论