• postgresql使用pg_basebackup备份与恢复


        postgresql可以使用pg_dump,pg_restore等命令来进行备份与恢复,那种情况不用停止pgsql服务,只需要执行备份恢复命令即可。

        今天介绍的这种备份方式,类似于文件系统的备份与恢复,它需要使用pg_basebackup命令来进行备份,这个命令可以将pgsql的数据文件备份为两个压缩文件:base.tar pg_wal.tar。本别是数据文件和归档文件,恢复的时候,需要设置按照归档文件来恢复。

        这种恢复,需要先把备份的压缩文件替换当前的数据文件,然后修改postgresql.conf,因为这个配置文件在data文件夹中,所以只能是在把base.tar解压到数据库当前数据位置,也就是我们默认初始化指定的数据保存位置data文件夹中,才能修改配置,在配置好归档设置以后,可以启动pgsql服务,进行启动恢复。

        在恢复过程中,会拷贝归档文件,进行数据恢复。

        恢复成功,也就是数据库服务启动成功。这个时候我们访问数据库,它是作为归档状态存在的,所以只能读,不能写操作。

       为了恢复数据库写操作,我们需要在命令行下执行切换数据库状态的指令。切换成功之后,才可以进行读写操作。

        下面实际演示这些流程:

        1、准备数据

        2、数据备份

        数据备份使用命令pg_basebackup -D backup -Ft -Pv

        其中-D指定数据备份的位置。这里指定的是当前文件夹下的backup,也可以指定绝对路径。

        -F表示备份文件格式,这里t表示是tar压缩文件格式。

        -Pv表示显示备份过程。

        因为是本机数据库,所以这里省略了-U -h -p等数据库连接相关的设置。

        生成的备份文件:

     

        3、停止数据库服务

    bin\pg_ctl stop

        4、清空当前数据目录

     

        5、解压备份文件到指定位置

        解压数据文件base.tar到当前数据目录data中,解压归档文件pg_wal.tar到一个指定位置,这里指定到d:\\tools\\pgsql\\archive目录。

        6、修改postgresql.conf配置文件,指定restore_command,recovery_target

        restore_command命令在linux下拷贝是cp命令,在windows下是copy命令,最后注意一下windows下的路径需要使用 \\ 来表示目录分隔符。

        这里的archive目录就是我们在前面第5步中解压归档文件pg_wal.tar 到的目录。

        restore_command,recovery_target两个配置在postgresql.conf配置文件中是注释掉的。这两个变量设置在pg12以后是合并到了postgresql.conf中,在老的版本中,需要新建recovery.conf并设置。

        为了配合恢复,我们需要在data目录中新建一个recovery.signal的空文件。 

        7、启动恢复

        恢复成功之后,可以验证数据是否恢复成功,但是这时候,只能读,不能写。

        这个时候数据库是归档状态,可以通过pg_controldata命令查看数据库簇状态:

        8、切换数据库状态

        执行pg_ctl promote命令即可。

        9、验证读写

         当数据库状态切换到正在运行中之后,数据库就不再是只读了。

  • 相关阅读:
    女生适不适合干软件测试这一行?“钱”程如何?适合长期发展不?
    马上2023年了,学一下gradle(Gradle)安装及配置
    scrapy返回400
    树莓派系统压缩备份实操
    元宇宙“新基建”时代与不赚快钱的Cocos
    《算法竞赛进阶指南》差分约束 区间
    VMware与CentOS8-stream的配置教程【2022-9-5】
    单链表的介绍和内存布局 [数据结构][Java]
    java内嵌浏览器CEF-JAVA、jcef、java chrome
    k8s运维管理
  • 原文地址:https://blog.csdn.net/feinifi/article/details/128107293