如何在 Ubuntu 15.04 上使用热备安装和配置 PostgreSQL 复制如何在 Ubuntu 15.04 上使用热备安装和配置 PostgreSQL 复制如何在 Ubuntu 15.04 上使用热备安装和配置 PostgreSQL 复制如何在 Ubuntu 15.04 上使用热备安装和配置 PostgreSQL 复制
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 15.04 上使用热备安装和配置 PostgreSQL 复制

本教程适用于这些操作系统版本

  • Ubuntu 16.04(Xenial Xerus)
  • Ubuntu 15.04(Vivid Vervet)

在此页

  1. 第 1 步 - 设置主机名
  2. 第 2 步 - 在主服务器和从服务器上安装 PostgreSQL
  3. 第 3 步 - 配置主服务器
  4. 第 4 步 - 从属服务器配置
  5. 第 5 步 - 将数据从主服务器同步到从服务器
  6. 第 6 步 - 测试
  7. 参考资料

PostgreSQL 或 Postgres 是一个开源对象关系数据库管理系统 (ORDBMS),拥有超过 15 年的积极发展。它是一个功能强大的数据库服务器,可以处理高工作负载。 PostgreSQL 可以在 Linux、Unix、BSD 和 Windows 服务器上使用。

主/从数据库复制是将数据从一台服务器(主服务器)上的数据库复制(同步)到另一台服务器(从服务器)上的数据库的过程。这个过程的主要好处是将数据库分布到多台机器上,所以当主服务器出现问题时,有一台具有相同数据的备份机器可以不间断地处理请求。

PostgreSQL 提供了几种复制数据库的方法。它可用于备份目的并提供高可用性数据库服务器。在本教程中,我们将向您展示如何使用热备份模式安装和配置 PostgreSQL 复制。双机热备模式易于配置,是深入学习 PostgreSQL 的一个很好的起点。

双机热备模式需要两台数据库服务器,我们将在两台服务器上使用 Ubuntu 作为操作系统。

  1. 主服务器 - 接受来自具有读写权限的客户端的连接。
  2. 从服务器 - 备用服务器以只读权限运行来自主服务器的数据副本。

先决条件

  • 2 台 Ubuntu 服务器 - 1 台主服务器,1 台从服务器。
  • 服务器的根权限。
  • 一些关于 Ubuntu、apt 等的基础知识。

第 1 步 - 设置主机名

使用 ssh 登录到两台服务器:

ssh 

现在使用 hostnamectl 命令为两台服务器(主服务器和从服务器)设置主机名。

在主服务器上:

sudo hostnamectl set-hostname master-server

在从服务器上:

sudo hostnamectl set-hostname slave-server

接下来,使用 vim 编辑器编辑 /etc/hosts 文件:

sudo vim /etc/hosts

为主服务器粘贴此配置:

192.168.1.249   master-server

为从服务器粘贴此配置:

192.168.1.248   slave-server

保存文件并退出编辑器。

第 2 步 - 在主从服务器上安装 PostgreSQL

在我们开始安装 PostgreSQL 之前,更新 Ubuntu 存储库:

sudo apt-get update

接下来,安装 PostgreSQL 及其所有依赖项:

sudo apt-get install postgresql postgresql-client postgresql-contrib

安装 Postgres 后,为 postgres 用户提供一个新密码(安装时自动创建)。

passwd postgres

输入您的 postgres 用户密码。

现在测试 PostgreSQL:

su - postgres
psql
\conninfo

您将看到以下结果:

第 3 步 - 配置主服务器

在此步骤中,我们将配置 IP 地址为 192.168.1.249 的主服务器。我们将创建一个具有特殊权限的新用户/角色来执行复制,然后我们编辑 PostgreSQL 配置文件以启用热备份复制模式。

从 root 权限,使用 su 命令切换到 PostgreSQL 用户:

su - postgres

使用 psql 命令访问 Postgres shell 并输入此 PostgreSQL 查询以创建新用户/角色:

psql
CREATE USER replica REPLICATION LOGIN ENCRYPTED PASSWORD '';

使用以下 PostgreSQL 命令检查新的副本用户:

\du

已创建新的副本用户。

接下来进入PostgreSQL目录/etc/postgresql/9.4/main编辑配置文件。

cd /etc/postgresql/9.4/main/

用 vim 打开 postgresql.conf 文件:

vim postgresql.conf

取消注释第 59 行并添加服务器 IP 地址。

listen_addresses = 'localhost,192.168.1.249'

在 WAL(Write Ahead Log)设置第 175 行,取消注释并将值更改为 hot_standby。

wal_level = hot_standby

在检查点部分第 199 行中,取消注释 checkpoint_segments 并将值更改为 8。

checkpoint_segments = 8

在归档部分第 206 和 208 行中,打开归档选项并添加归档命令。

archive_mode = on
archive_command = 'cp -i %p /var/lib/postgresql/9.4/main/archive/%f'

在复制部分第 224 和 226 行中,将值更改为 WAL 发送进程的最大数量。

max_wal_senders = 3
wal_keep_segments = 8

保存文件并退出 vim。

现在在主目录中为存档配置创建一个新目录 - 以 postgres 用户身份运行以下命令:

mkdir -p /var/lib/9.4/main/archive/

接下来,编辑 pg_hba.conf 文件以允许复制连接。

vim pg_hba.conf

在该行的末尾,为用户副本添加一个新配置以建立连接。

host    replication     replica      192.168.1.248/24            md5
#192.168.1.248 is slave-server ip address

保存并退出。

第 4 步 - 从属服务器配置

像主服务器一样配置从服务器。使用 su 成为 postgres 用户并转到 PostgreSQL 配置目录。

su - postgres
cd /etc/postgresql/9.4/main/

使用 vim 编辑 postgresql.conf:

vim postgresql.conf

取消注释第 59 行并添加从属服务器 IP 地址。

listen_addresses = 'localhost,192.168.1.248'

转到第 175 行并取消 wal_level 设置的注释,将值更改为 hot_standby。

wal_level = hot_standby

取消注释检查点部分的第 199 行。

checkpoint_segments = 8

取消注释行 224 和 226 以配置 max_wal_sender 进程。

max_wal_senders = 3
wal_keep_segments = 8

取消注释行 245 以在从属服务器上启用 hot_standby 模式。

hot_standby = on

保存并退出。

第 5 步 - 将数据从主服务器同步到从服务器

在这一步中,我们将 PostgreSQL 数据目录 /var/lib/postgresql/9.4/main 移动到一个备份文件夹,然后使用 pg_basebackup 命令将其替换为最新的主数据。

仅在从服务器上运行以下所有命令!

在从服务器上停止 PostgreSQL:

systemctl stop postgresql

现在登录到 postgres 用户并将主目录重命名为 main_original 作为备份。

su - postgres
mv 9.4/main 9.4/main_original

运行以下命令将数据从主服务器复制到从服务器:

pg_basebackup -h 192.168.1.249 -D /var/lib/postgresql/9.4/main -U replica -v -P

笔记:

  • 192.168.1.249 是主服务器 IP 地址。
  • 系统将提示您输入复制用户副本的密码。

转到新的主目录并使用 vim 创建新的恢复文件 recovery.conf:

cd /var/lib/postgresql/9.4/main/
vim recovery.conf

粘贴下面的配置:

standby_mode = 'on'
primary_conninfo = 'host=192.168.1.249 port=5432 user=replica '
restore_command = 'cp //var/lib/postgresql/9.4/main/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'

现在使用 exit 返回到 root 用户并使用 systemctl 命令启动 PostgreSQL:

exit
systemctl start postgresql

运行启动命令后确保没有错误。

第 6 步 - 测试

转到主服务器并登录到 postgres 用户,然后运行以下命令以查看复制信息。

su - postgres
psql -x -c "select * from pg_stat_replication;"

您将在下面看到复制信息:

接下来,测试从主服务器创建一个新的数据库,然后检查该数据库是否存在于从服务器上。

su - postgres
psql
create database howtoforge;

现在登录从服务器,查看howtoforge数据库是否已经自动镜像到从服务器。

su - postgres
psql
\list

数据库已从主服务器复制到从服务器。

参考

    <李>
  • https://cloud.google.com/solutions/setup-postgres-hot-standby

©2015-2025 艾丽卡 support@alaica.com