|
Post by account_disabled on Dec 3, 2023 4:00:55 GMT
对数据库应用突变可能会导致对文件系统进行各种操作。随之而来的一个相关问题是,在文件系统升级过程中,如果服务器因断电而发生故障,数据库如何保证原子性。当数据库启动时,它开始启动或重放进程,该进程可以读取可用的 WAL 段并将它们与存储在每个数据页上的 LSN 进行比较(每个数据页都用它涉及的最后一个 WAL 记录的 LSN 进行标记)。 基于日志传送的复制(块级) 流复制完善了日志传送过程。记录在创建时就被发送,而不是等待切换到 WAL,从而减少了复制延迟。 流式复制还超越了日志传送,因为备用服务器使用复制协议通过网络连接到主服务器。然后,主服务器可以直接通过此连接发送 WAL 记录,而不必依赖最终用户提供的脚本。 基于日志传送的复制(文件级) 日志传送被定义为将日志文件复制到另一个 PostgreSQL 服务 电话号码清单 器以生成另一个重放 WAL 文件的备用服务器。该服务器配置为在恢复模式下运行,其唯一目的是在新的 WAL 文件出现时应用它们。 然后,该辅助服务器将成为主 PostgreSQL 服务器的热备份。它还可以配置为只读副本,可以提供只读查询,也称为热备用。 WAL 存储(续) 在存储 WAL 文件的子目录以外的位置创建 WALpg_wal文件的复制称为 WAL 归档。每次创建 WAL 文件时,PostgreSQL 都会调用用户提供的脚本进行存储。 该脚本可以使用该命令scp将文件复制到一个或多个位置,例如 NFS 挂载。归档后,WAL 文件可随时用于恢复数据库。 其他基于日志的配置包括: 同步复制:在提交每个同步复制事务之前,主服务器等待备用服务器确认已收到数据。 这种配置的优点是不会因为并行写入过程而产生冲突。 多主同步复制:在这种情况下,并且在每个事务提交之前将修改的数据从原始服务器传输到所有其他服务器。它使用 2PC 协议并遵循“全有或全无”规则。 WAL 流协议的详细信息 在备用服务器上运行的称为WAL 接收器的进程利用 参数中提供的连接详细信息并使用 TCP/IP 连接连接到主服务器。 要启动流式复制,前端可以在启动消息中发送复制参数。布尔值 true、yes、1 或 ON 告诉后端它应该切换到 Walsender 物理复制模式。WAL发送器是另一个运行在主服务器上的进程,负责在生成WAL记录时将其发送到备用服务器。WAL 接收器将 WAL 记录保存在 WAL 中,就好像它们是由本地连接的客户端的活动创建的一样。 一旦WAL记录到达WAL段文件,备用服务器就会继续不断地重放WAL,以便主服务器和备用服务器都是最新的。
|
|