文档首页 > > 用户指南> PostgreSQL用户指南> 备份与恢复>

通过备份文件恢复到自建数据库(PostgreSQL)

通过备份文件恢复到自建数据库(PostgreSQL)

分享
更新时间:2021/04/23 GMT+08:00

您可根据业务需要,参考下载全量备份文件下载备份文件,并通过备份文件进行本地存储备份或者数据恢复。

华为云在2020年7月21日~2020年11月3日期间,对PostgreSQL备份文件的解压功能进行了优化,由原先的使用工具解压优化为可以直接解压。在使用过程中需要注意以下几点:

  • 2020年7月21日前生成的备份文件包,请使用PostgreSQL工具解压备份文件包,请参见操作步骤(工具解压)
  • 2020年11月3日后生成的备份文件包,支持直接解压备份文件包,请参见操作步骤(直接解压)
  • 在2020年7月21日~2020年11月3日期间生成的备份文件包,由于华为云各区域支持直接解压功能的时间有差异,建议您直接解压备份文件包,如果无法使用该方法,使用PostgreSQL工具解压备份文件包。
  • 如果您有支持直接解压功能时间的疑问,您可以在管理控制台右上角,选择“工单 > 新建工单”,提交申请。

前提条件

工具解压:

  1. 需要在类unix系统上使用,系统上需要安装tar解压工具。
  2. 使用python2.7或者python3均可执行。
  3. 需要安装的三方包:lz4、gzip和shutil。

操作步骤(直接解压)

  1. 准备一个本地存放表空间的目录。
  2. 停止数据库服务器。
  3. 保存本地目标数据库data目录下的三个配置文件(“postgresql.conf”、“pg_hba.conf”和“recovery.done”)。
  4. 清空本地数据库的data目录。
  5. 执行如下命令,将备份解压到一个临时目录下。

    tar -zxf src_file -C target_dir

    参数说明如下:

    “src_file”: pg全量备份文件的目录。

    “target_dir”:需要恢复到的目录,即1中准备的目录。注意:该目录必须是空目录,如果不存在该目录,则系统会创建该目录。

    解压后会在当前目录下产生以下目录:

    • 一个base目录,存放全量文件。
    • 一个pg_wal目录(如果PostgreSQL版本为9.x,则为pg_xlog目录),增量文件目录。
    • N个以数字命名的表空间目录(如果原备份存在表空间文件)。

  6. 5中的文件拷贝到本地数据库指定目录下。

    1. 将解压出来的base目录下的文件,全部拷贝到本地数据库data目录,然后用3中保存的配置文件,覆盖本地数据库data目录下的三个文件。
    2. 将解压出来的pg_wal目录(如果PostgreSQL版本为9.x,则为pg_xlog目录)下的文件,拷贝到本地数据库data下的pg_wal目录(如果PostgreSQL版本为9.x,则为pg_xlog目录)。
    3. 如果原备份存在表空间文件,修改“data\tablespace_map”中对应的表空间软链接信息,如图所示:

  7. 重新启动数据库,等待数据库恢复完成。

操作步骤(工具解压)

  1. 准备一个本地存放表空间的目录。
  2. 停止数据库服务器。
  3. 保存本地目标数据库data目录下的三个配置文件(“postgresql.conf”、“pg_hba.conf”和“recovery.done”)。
  4. 清空本地数据库的data目录。
  5. 下载解压工具
  6. 使用提供的解压脚本,执行如下命令,将备份解压到一个临时目录下。

    python restore_obs_file.py src_file target_dir

    参数说明如下:

    “src_file”: pg全量备份文件的目录。

    “target_dir”:需要恢复到的目录,即1中准备的目录。注意:该目录必须是空目录,如果不存在该目录,则系统会创建该目录。

    解压后会在当前目录下产生以下目录:

    • 一个data目录,存放全量文件,其中“recovery.done”文件已被删除。
    • 一个xlog目录,增量文件目录。
    • 一个tblspc目录,表空间目录文件(如果原备份存在表空间文件)。

  7. 6中的文件拷贝到本地数据库指定目录下。

    1. 将解压出来的data目录下的文件,全部拷贝到本地数据库data目录,然后用3中保存的配置文件,覆盖本地数据库data目录下的三个文件。
    2. 将解压出来的xlog目录下的文件,拷贝到本地数据库data下的pg_xlog或pg_wal文件夹中(数据库版本不同文件夹名称不同)。
    3. 将解压出来的tblspc下的表空间文件夹(如有),移动到1建立的表空间目录下,修改“data\tablespace_map”中对应的表空间软链接信息,如图所示:

  8. 重新启动数据库,等待数据库恢复完成。
分享:

    相关文档

    相关产品