Oracle 和 PostgreSQL 中,Redo 相关概念 类别

1、类比Oracle

redo log buffer -> online redo log files -> archived redo log file
在这里插入图片描述

在 Oracle 和 PostgreSQL 中,Redo 相关概念的对比如下:

  1. Redo Log Buffer (重做日志缓冲区):

    • Oracle:Redo Log Buffer是一个内存区域,用于存储正在进行的事务操作的重做日志记录(Redo Log)。在事务提交之前,相关的Redo Log记录会被写入Redo Log Buffer。
    • PostgreSQL:PostgreSQL没有单独的Redo Log Buffer概念。相应的功能在Shared Buffer(共享缓冲区)中完成,其中包含了对数据库操作的临时修改。
  2. Online Redo Log Files (在线重做日志文件):

    • Oracle:Online Redo Log Files是一组物理文件,用于持久化存储正在进行的事务操作的Redo Log记录。它们用于数据库的恢复和故障恢复,并以循环方式使用。
    • PostgreSQL:PostgreSQL没有名为"Online Redo Log Files"的概念。WAL (Write-Ahead Log) 文件在 PostgreSQL 中类似于 Oracle 的Redo Log文件,用于持久化存储事务操作的日志。
  3. Archived Redo Log Files (归档重做日志文件):

    • Oracle:Archived Redo Log Files是已经被切换出当前Online Redo Log组的Redo Log文件。这些归档的Redo Log文件被保留在外部存储介质(例如磁盘、磁带)中,以供故障恢复、备份和数据恢复使用。
    • PostgreSQL:PostgreSQL使用归档(Archiving)来将WAL文件复制到外部存储,以进行长期保存和备份。归档的WAL文件在需要时用于数据库的恢复和还原。

虽然Oracle和PostgreSQL在术语和实现上有所不同,但它们都使用了类似的原理,即将事务操作的日志记录持久化存储,以确保数据库的持久性和恢复能力。在Oracle中,Redo Log用于记录事务操作的重做日志,而PostgreSQL使用WAL文件来实现类似的功能。

请注意,上述只是Oracle和PostgreSQL中Redo相关概念的简要对比。具体的实现和配置可能会因数据库版本、设置和需求而有所不同。在实际使用中,建议参考相应数据库的官方文档和最佳实践,以正确配置和管理Redo(Oracle)或WAL(PostgreSQL)日志。

在这里插入图片描述
在这里插入图片描述

在 PostgreSQL 中,WAL(Write-Ahead Log)是一种事务日志,用于确保数据库的持久性和一致性。归档是将这些WAL日志文件复制到外部存储以进行长期保存和备份的过程。与WAL和归档相关的一些重要进程和概念包括:

  1. WAL Writer(WAL写进程):WAL Writer是一个后台进程,负责将缓冲区中的修改写入WAL日志文件。它定期将WAL缓冲区的内容刷新到磁盘,以确保事务的持久性。WAL Writer的工作减轻了主数据库进程的负担,提高了性能。

  2. Archiver(归档进程):归档进程是一个后台进程,负责将WAL日志文件复制到归档目标。它通过读取活动的WAL日志文件,并将其复制到指定的归档目录中,以便进行备份和长期存储。归档进程可以根据配置的归档模式自动触发归档操作,例如基于时间、基于大小或基于特定条件。

  3. 归档命令(archive_command):这是一个 PostgreSQL 的配置选项,用于指定归档进程在进行归档时要执行的命令或脚本。归档命令可以自定义,例如使用外部工具或脚本来处理归档文件的复制、压缩、存储等操作。在归档命令中,可以使用变量来表示要归档的WAL文件的路径。

  4. 归档目标(archive destination):归档目标是指归档进程复制WAL文件的目标位置。它可以是本地文件系统的特定目录,也可以是远程存储(例如网络共享、对象存储等)。归档目标应该具备足够的可靠性和容量,以确保WAL文件的长期保存和可用性。

通过使用WAL和归档,PostgreSQL可以提供高可靠性和灾难恢复能力。WAL日志文件记录了数据库的每个事务操作,使得在故障发生时可以进行恢复。归档则将WAL文件复制到外部存储,以便在需要时进行恢复和备份。

请注意,WAL和归档的配置和管理涉及到一些复杂的概念和技术,如归档模式、保留期限、基于时间点的恢复等。在实际部署中,建议仔细阅读 PostgreSQL 官方文档并遵循最佳实践,以确保正确配置和管理WAL和归档。

2、archive_command

 postgres=# show archive_command ;
                 archive_command                  
--------------------------------------------------
 /home/postgres/bin/pgbackrest_archive_push.sh %p
(1 row)

postgres=# exit
[postgres@postgres-62f50dbe-0-0 pg_wal]$ cat /home/postgres/bin/pgbackrest_archive_push.sh
#!/bin/bash

PROCESS_MAX="${NUM_WORKERS:-2}"

if /home/postgres/bin/pre_archive_push.sh $1; then
    pgbackrest archive-push --archive-async=y --process-max=$PROCESS_MAX --log-level-console=info $1
else
    exit_code=$?
    if [ $exit_code -eq 110 ]; then
        echo "backup storage interface not set, $1 skkipped and not archived."
        exit 0
    else
        exit $exit_code
    fi
fi

上述是一个 PostgreSQL 数据库中的示例命令和脚本。让我来解释一下这些内容:

  1. show archive_command;: 这是一个 PostgreSQL 的命令,用于显示当前配置的归档命令。归档命令用于将 WAL (Write-Ahead Log) 文件归档到外部存储,以实现数据备份和恢复。

  2. /home/postgres/bin/pgbackrest_archive_push.sh %p: 这是设置的归档命令。它指定了一个自定义的脚本 pgbackrest_archive_push.sh,并将 %p 作为参数传递给该脚本。%p 表示要归档的 WAL 文件的路径。

  3. /home/postgres/bin/pgbackrest_archive_push.sh: 这是一个自定义的归档脚本。根据脚本的内容,它执行以下操作:

    a. 检查是否存在名为 /home/postgres/bin/pre_archive_push.sh 的脚本,并将 %p 作为参数传递给它。这可能是在执行归档之前执行一些预处理操作的脚本。

    b. 如果 pre_archive_push.sh 脚本执行成功,则使用 pgbackrest archive-push 命令执行归档操作。其中,--archive-async=y 表示以异步模式进行归档,--process-max 指定归档进程的最大数量,--log-level-console=info 设置控制台日志级别为 info。

    c. 如果 pre_archive_push.sh 脚本执行失败,并且返回值为 110,则输出一条相应的信息,并退出脚本。这个特定的退出代码 110 可能用于表示备份存储接口未设置,因此跳过归档。

该示例中的脚本显示了在归档过程中执行某些自定义操作的方法,例如在归档之前运行预处理脚本。pgbackrest 是一个备份和恢复工具,用于管理 PostgreSQL 数据库的备份和归档。您可以根据自己的需求和环境来自定义归档脚本和使用适当的归档工具。

pgbackrest archive-push

pgbackrest archive-pushpgBackRest 工具的命令之一,用于将 PostgreSQL WAL (Write-Ahead Log) 文件归档到外部存储。下面是对该命令中的选项和参数的详细介绍:

--archive-async=y:这个选项用于指定归档操作以异步方式执行。异步归档意味着 pgbackrest 在将 WAL 文件复制到归档目标时不会等待操作完成,而是立即返回控制权。这样可以加快归档速度并提高性能。

--process-max=$PROCESS_MAX:这个选项用于指定归档进程的最大数量。$PROCESS_MAX 是一个变量,表示可以并行执行归档操作的最大进程数。通过增加归档进程的数量,可以加快归档操作的速度,特别是在高负载的情况下。

--log-level-console=info:这个选项用于设置控制台输出的日志级别。在这里,日志级别被设置为 info,表示只输出信息级别的日志消息。这可以帮助您在控制台上获得关于归档操作的信息。

$1:这是归档脚本接收的参数,代表要归档的 WAL 文件的路径。pgbackrest 使用该参数来确定要归档的文件。

通过使用以上选项和参数,pgbackrest archive-push 命令将会执行归档操作。它会将 WAL 文件复制到配置好的归档目标,以确保数据库的持久性和备份。该命令还允许并行处理归档操作,并提供了控制台日志级别的设置。

请注意,这只是对 pgbackrest archive-push 命令的简要介绍,具体的用法和配置取决于您的环境和需求。建议查阅 pgBackRest 的官方文档,以获取更详细的信息和指导。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值