PostgreSQL 主从复制方案

news/2024/9/23 4:38:20/

PostgreSQL 主从复制方案是一种常见的数据库高可用性方案,它允许在主服务器上进行写入操作,而从服务器则复制主服务器上的数据,并可以承担读取操作的负载。

以下是一个基本的 PostgreSQL 主从复制方案:

  1. 配置主服务器:在主服务器上设置 wal_level 参数为 logical 或者 hot_standby,并启用 archive_mode 参数。这些设置可以通过修改 PostgreSQL 的配置文件 postgresql.conf 进行。

  2. 配置从服务器:在从服务器上设置 standby_mode 参数为 on,并指定主服务器的 IP 地址和端口号。这些设置可以通过修改 PostgreSQL 的配置文件 postgresql.conf 进行。

  3. 启动主服务器:在主服务器上启动 PostgreSQL 数据库服务。

  4. 创建备份:在主服务器上创建一个备份文件,它将用于初始化从服务器。

  5. 初始化从服务器:在从服务器上使用 pg_basebackup 工具从主服务器上复制数据,并将其初始化为从服务器。

  6. 启动从服务器:在从服务器上启动 PostgreSQL 数据库服务。

  7. 验证主从复制:在主服务器上执行写入操作,在从服务器上查询数据以验证是否同步。

请注意,这只是一个基本的 PostgreSQL 主从复制方案。如果需要更高级的功能和灵活性,可以考虑使用第三方工具或框架,例如 Patroni、pgpool-II 或者 repmgr。此外,在实施主从复制方案之前,应该详细了解 PostgreSQL 主从复制的原理和注意事项,以确保数据的一致性和可靠性。

一 、在基本的 PostgreSQL 主从复制方案中,我们需要先对主服务器进行配置。具体步骤如下:

  1. 打开 PostgreSQL 的配置文件 postgresql.conf。

  2. 查找并编辑 wal_level 参数。wal_level 是指 WAL 日志的详细程度,可设置为 minimal、replica 或 logical。在主从复制场景中,应将 wal_level 设置为 replica 或 logical,以保证从服务器可以正确复制主服务器上的数据变更。如果使用了逻辑复制,则应将其设置为 logical。

  3. 查找并编辑 archive_mode 参数。archive_mode 是指是否启用归档模式,即将 WAL 日志存档到别处。在主从复制场景中,应启用归档模式以确保从服务器可以通过归档日志来恢复主服务器丢失的数据。

  4. 保存并关闭配置文件。

需要注意的是,在修改配置文件后,需要重启 PostgreSQL 服务以使配置生效。

二、在基本的 PostgreSQL 主从复制方案中,要在从服务器上设置 standby_mode 参数为 on,并指定主服务器的 IP 地址和端口号。这些设置通常可以通过编辑 PostgreSQL 的配置文件 postgresql.conf 在从服务器上进行。

具体来说,您需要在从服务器上编辑 postgresql.conf 文件,将以下参数设置为所需的值:

# 指定主服务器的 IP 地址和端口号 
primary_conninfo = 'host=<主服务器IP地址> port=<主服务器端口号>'# 启用从服务器作为备用节点 
standby_mode = on

请注意,上述示例仅为参考,请根据您的环境和需求进行适当修改。

完成以上步骤后,重新启动从服务器,它将开始连接到主服务器并接收来自主服务器的 WAL 日志,以使数据保持同步。

三、您需要在主服务器上启动 PostgreSQL 数据库服务。

通常,您可以通过运行以下命令来启动 PostgreSQL 服务:

$ sudo systemctl start postgresql

请注意,上述命令假定您的系统使用 systemd 管理程序来管理服务。如果您的系统使用其他服务管理器,请相应地调整命令。

完成以上步骤后,主服务器将开始接受来自客户端的连接,并将 WAL 日志发送给任何已配置成从服务器的节点,以便它们可以保持数据同步。

四、您需要在主服务器上创建一个备份文件,它将用于初始化从服务器。

通常,您可以使用以下命令在主服务器上创建 PostgreSQL 数据库的备份:

$ pg_basebackup -D /path/to/backup/directory -Ft -z -P -R

该命令包括以下选项:

  • -D /path/to/backup/directory:指定备份文件存储路径。请将此路径设置为对从服务器可用的位置。
  • -Ft:指定备份文件格式为 tar 归档文件。
  • -z:启用压缩以减少备份文件大小。
  • -P:显示进度信息。
  • -R:启用备份文件中的流复制数据。

运行该命令后,PostgreSQL 将在指定的目录下生成一个备份文件,其中包含了主服务器的所有数据和 WAL 日志。这个备份文件可以通过拷贝到从服务器并解压来初始化从服务器。

请注意,备份文件可能会非常大,具体取决于主服务器上的数据量和活动负载。因此,您应该密切关注备份过程中的磁盘空间和网络使用情况,并确保足够的存储空间和带宽可用。

 五、使用 pg_basebackup 工具可以将主服务器上的数据复制到从服务器,并初始化从服务器。以下是在从服务器上使用 pg_basebackup 工具完成初始化的步骤:

  1. 在从服务器上创建一个目录来存放备份文件。例如,您可以在 /var/lib/postgresql/12/main 目录下创建一个名为 backup 的子目录:

    $ sudo mkdir /var/lib/postgresql/12/main/backup
  2. 使用如下命令从主服务器复制数据到从服务器:

    $ pg_basebackup -h 主服务器 IP 地址 -U 复制用户名 -D /var/lib/postgresql/12/main/backup -P --wal-method=stream

    上述命令包括以下选项:

    • -h 主服务器 IP 地址:指定主服务器的 IP 地址。
    • -U 复制用户名:指定用于从主服务器复制数据的 PostgreSQL 用户名。
    • -D /var/lib/postgresql/12/main/backup:指定用于存放备份文件的目录路径。
    • -P:显示进度信息。
    • --wal-method=stream:启用流式 WAL 日志复制方式。
  3. 复制完成后,在从服务器上修改 recovery.conf 文件以启用从服务器的恢复过程。打开 recovery.conf 文件并添加以下内容:

    standby_mode = 'on' 
    primary_conninfo = 'host=主服务器 IP 地址 user=复制用户名 password=密码 port=5432' trigger_file = '/var/lib/postgresql/12/main/trigger'
    

    上述内容包括以下选项:

    standby_mode = 'on':启用从服务器的恢复模式。
    primary_conninfo:指定主服务器的连接信息,其中包括主服务器 IP 地址、复制用户名、密码和端口号。
    trigger_file:指定一个触发文件的路径,当该文件存在时,从服务器将停止恢复过程并转为只读模式。

  4. 重启从服务器的 PostgreSQL 服务以使配置生效:

    $ sudo systemctl restart postgresql@12-main.service

完成上述步骤后,从服务器即可开始从主服务器中复制数据并进行恢复过程。您可以通过检查 PostgreSQL 日志文件来确保复制和恢复过程均已成功完成。

 六、要在从服务器上启动 PostgreSQL 数据库服务以进行主从复制,您需要执行以下步骤:

  1. 确保从服务器已经安装了 PostgreSQL 数据库软件。如果没有安装,请先安装。

  2. 修改从服务器的 PostgreSQL 配置文件(postgresql.conf),以便它能够连接到主服务器并启用复制功能。找到以下几行配置:

# The IP address(es) of the master server(s). 
# If there are multiple masters, separate them with commas. 
# Example: '192.168.0.101,192.168.0.102' 
# (change requires restart) 
#replication_target = '' 
#external_master = '' 
# Enable read-only mode for the slave and 
# start streaming replication from the master. 
# (change requires restart) 
#hot_standby = off

replication_target 的值设置为主服务器的 IP 地址或主服务器的 DNS 名称。将 hot_standby 的值设置为 on,以启用从服务器的只读模式和流复制。

  1. 修改从服务器的 pg_hba.conf 文件,以允许主服务器连接到从服务器。找到以下一行:
# "local" is for Unix domain socket connections only 
local all all peer

将其修改为:

# "local" is for Unix domain socket connections only 
local replication all trust

这样就是允许来自主服务器的复制用户使用 trust 方法来认证。

  1. 启动从服务器的 PostgreSQL 数据库服务。您可以使用以下命令启动数据库服务:
$ sudo systemctl start postgresql
  1. 检查从服务器的 PostgreSQL 日志文件,确保它已经连接到了主服务器并开始了复制过程。您可以使用以下命令查看日志:
$ sudo tail -f /var/log/postgresql/postgresql-X.Y-main.log

其中 X.Y 是 PostgreSQL 版本号。

以上是启动从服务器的基本步骤。如果您遇到任何问题,请参考 PostgreSQL 文档或咨询相关技术支持人员。

七、要设置基本的 PostgreSQL 主从复制方案,您可以按照以下步骤启动从服务器:

  1. 在从服务器上安装 PostgreSQL 软件和所有必要的库。

  2. 在从服务器上编辑 PostgreSQL 配置文件 postgresql.conf,并确保以下参数设置与主服务器相同:

    listen_addresses = '*' 
    archive_mode = on 
    archive_command = 'cp %p /path/to/archive/%f' 
    max_wal_senders = 5 
    wal_level = replica 
    hot_standby = on 
    primary_conninfo = 'host=<primary_server_ip> port=5432 user=<replication_user> password=<password> application_name=<name>' 
    restore_command = 'cp /path/to/archive/%f "%p"'

注意:请根据您的环境修改以上参数。

  1. 在从服务器上创建一个用于复制的用户,并将其添加到主服务器中的 pg_hba.conf 文件中。该用户需要具有在主服务器上复制 WAL 日志的权限。

  2. 在从服务器上创建一个空目录来存储 WAL 日志备份。

  3. 启动从服务器。

  4. 使用 pg_basebackup 工具从主服务器复制初始数据到从服务器。例如:

    pg_basebackup -h <primary_server_ip> -D /path/to/standby/pgsql/data -U <replication_user> -v -P --xlog-method=stream

    注意:请根据您的环境修改以上参数。

  5. 在从服务器上编辑 PostgreSQL 配置文件 postgresql.auto.conf,并添加以下参数:

    standby_mode = on 
    primary_conninfo = 'host=<primary_server_ip> port=5432 user=<replication_user> password=<password> application_name=<name>' 
    recovery_target_timeline = 'latest'
  6. 启动从服务器。

完成上述步骤后,您可以验证主从复制是否正常工作。在主服务器上执行写入操作,然后在从服务器上查询数据以验证是否同步。

 


http://www.ppmy.cn/news/334444.html

相关文章

什么是AOC?

AOC&#xff08;即Active Optical Fiber有源光纤&#xff09;有源光缆&#xff0c;是指通信过程中需要光收发器件&#xff0c;将电信号转换成光信号&#xff0c;或将光信号转换成电信号的通信线缆&#xff0c;光缆两端的光收发器提供光电转换以及光传输功能。 AOC有源光缆是由多…

AOC的计算

AOC指的是PR(精度-召回)曲线的曲线下面积&#xff0c;用于评估目标检测网络的性能。 AOC的计算过程如下&#xff1a; 1、获得网络推断的pred_bbox、pred_class、pred_score和真值gt_bbox、gt_class 2、对于每个类别&#xff0c;根据iou条件&#xff0c;增加一个正例(TP)或负例(…

AOC的显示器真的很烂

也不知道能用其它的什么词来形容AOC的显示器了&#xff0c;自从上次返修后不过半年多时间&#xff0c;显示器又再度出现划痕&#xff01;也不知道是怎么出来的&#xff0c;似乎是有很多道划痕划在某个薄膜&#xff0c;但这层膜又不在外表。也罢&#xff0c;再坚持上半年&#x…

LC-显示器2297

题目描述 你的一个朋友刚买了一台新电脑。 到目前为止&#xff0c;他曾经使用过的最强大的计算机是袖珍计算器。 现在&#xff0c;看着他的新电脑&#xff0c;他有点失望&#xff0c;因为他非常喜欢他的计算器的LC显示器。 所以你决定编写一个程序&#xff0c;在他的计算机上以…

睡眠脑电中的神经跨频率耦合函数

导读 人类大脑是一个紧密连接的复杂系统。虽然其结构比较固定&#xff0c;但它可以实现很多不同的功能。其中一个重要的功能是自然睡眠过程&#xff0c;这个过程可以改变意识和随意肌肉活动。在神经层面上&#xff0c;这些改变会伴随着大脑连接的变化。为了揭示这种与睡眠相关…

AOC1952 显示屏 输入不支持

选择对应的模式即可修正错误提示

固态硬盘Ghost安装Windows 10无法引导的问题

机器配置如下: 电脑型号 技嘉 B360M POWER 台式电脑操作系统 Windows 10 64位 ( DirectX 12 )处理器 英特尔 Core i7-8700 @ 3.20GHz 六核主板 技嘉 B360M POWER ( 英特尔 PCI 标准主机 CPU 桥 - CannonLake - A308 )显卡 …

计算机网络开荒3-传输层

文章目录 一、传输层概述1.1 网络层 vs 传输层 二、多路复用 多路分用三、UDP3.1 RDT3.1.1 Rdt3.1.1.1 Rdt1.03.1.1.2 Rdt2.03.1.1.3 Rdt2.13.1.1.4 Rdt2.23.11.5 Rdt 3.0 四、滑动窗口协议4.1 流水线机制4.1.2 滑动窗口协议GBNSR 五、TCP5.1 可靠数据传输5.1.1 RTT和超时 5.2 …