Din*_*ina 8 postgresql postgresql-9.3
我试图了解 PostgreSQL 复制的最佳用途及其工作原理,以便我可以在生产环境中进行故障排除。
我很难理解这 2 种复制类型在(1)配置(2)2 台服务器主/从在每种情况下如何执行方面的差异
PostgreSQL (9.2+) 上的复制本质上是 16MB 大小的 XLOG 文件(取决于创建每个文件的频率设置)在 Master 上创建并通过某种方法发送到 Slave。
我的设置(针对这个问题)
Postgresql.conf 在 Master
archive_command上的配置
= 'rsync -av %p postgres@[SlaveIP]:[wal_archive_folder]/%f'
在 Slave 上配置 Recovery.conf 以读取日志文件
restore_command = 'cp [wal_archive_folder]/%f \"%p\"'
primary_conninfo = 'host=[MasterIP] port=5432 user=postgres'
我的问题是此配置的哪一部分使这种“流式”复制与“日志传送”不同?我的主服务器配置为使用 rsync 将日志发送到从服务器(此日志是否传送?)我的从服务器配置为能够连接到 recovery.conf 中的主服务器(这是流式传输吗?)
问题的第二部分:发生了什么?我知道通过 WAL_sender 和 WAL_receiver 在 PostgreSQL 上还有另一个协议。但我不清楚这是否仅用于流式传输,如果是,那么在 Master 中如何使用 rsync?
:) 谢谢!!对不起,如果这是一个明显的问题。我一直在做一堆阅读博客/书籍,但很难理解。Postgres wiki 非常深入,需要很长时间才能通读(而且我有截止日期)
Cra*_*ger 18
“流式复制”是指通过replication
连接使用 walsender 协议,通过主服务器和副本服务器之间的 TCP/IP 连接连续发送 WAL 记录。master 从中读取自己的 WAL,pg_xlog
并根据需要将其发送到副本。它配置了一个primary_conninfo
指令 inrecovery.conf
和pg_hba.conf
master 上的条目以允许replication
连接。您还需要wal_keep_segments
以及文档中涵盖的其他一些选项。
“日志传送”是指通过文件传输协议将 WAL 记录作为整个 WAL 存档定期发送到存档位置,然后副本可以从中获取它们。它配置了一个restore_command
指令 inrecovery.conf
和一个archive_command
in 主控。PostgreSQL 不关心文件在哪里或它们如何传输,只关心archive_command
将它们放在那里并restore_command
获取所需的存档;这允许构建像 PgBarman 和 WAL-E 这样的系统。
流式复制没有那么多延迟,因为记录在生成时发送。但是,它需要主副本都在线并且能够直接通信。它还要求副本保持足够好,以便主服务器仍然具有副本所需的 WAL 的磁盘副本,并且通常需要您花费额外的pg_xlog
空间来为副本保留额外的 WAL。
日志传送复制有更多的延迟,因为副本只有在发送整个存档后才能看到 WAL。但是,即使主节点和副本节点无法使用共享存储位置直接通过 TCP/IP 通信,它也可以工作。即使副本关闭了一段时间,它也会继续工作,因为主服务器pg_xlog
只会在归档后丢弃 WAL ,因此即使主服务器无法发送 WAL,WAL 仍在存档中并且可供副本使用通过流媒体了。请注意,archive_command
永不放弃,因此pg_xlog
如果存档失败,则可以填满;出于这个原因,最好存档到一个可靠的位置,然后让副本服务器从该位置获取。
一般来说,您实际上将两者结合起来,即同时使用两者。在这种情况下,当一切顺利时,将使用流式复制。如果副本落后太多并且主节点丢弃了它需要的 xlog、出现连接问题等,那么副本将切换到读取存档的 WAL,直到它被赶上。它会定期重新尝试切换回流式传输,直到成功为止。
如果您只打算使用一种,请使用日志传送,因为没有日志传送回退的流式复制(直到 PostgreSQL 9.4)可能容易导致复制延迟,从而导致强制重新构建副本的故障。
PostgreSQL 9.4 稍微改变了这一点,因为流式复制现在可以使用“复制槽”。这让 master 可以跟踪副本需要多少 WAL,并避免在副本重放之前将其丢弃。因此,wal_keep_segments
如果您使用复制槽(不是默认值),则不再需要。
请参阅我的文章PostgreSQL 9.4 中的流式复制槽。
9.4 还介绍了流式逻辑复制的基础,这是另一种机制,设计用于逻辑复制系统,如 Lodiste、Slony-I 和新的双向异步多主复制功能。
归档时间: |
|
查看次数: |
5540 次 |
最近记录: |