暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在 PostgreSQL 中创建热备

原创 CiciLee 2022-08-27
243

在今天的帖子中,我将向您展示在 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/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论