Windows平台下HighgoDB 备份恢复指导手册

文档用途

在Windows平台下,若HGDB数据库故障,需要恢复。那么本手册可以帮您完成数据恢复的目的。


详细信息

备份概述

备份简介

防止数据丢失的第一道防线就是备份。一个严谨的数据库备份策略,可以在数据库发生故障或误操作的情况下,将损失降到最低,甚至于将数据恢复到与发生故障前一模一样。

    数据库备份有多种方式,如逻辑备份和物理备份。HighgoDB提供了pg_dump及pg_dumpall命令进行数据库的逻辑备份,但由于在恢复时,介于逻辑备份与故障时间点之间的数据难以恢复,故一般不采取逻辑备份方式进行数据库备份;物理备份包含冷备份和热备份,冷备份需要停数据库,这在正常的业务应用中是不现实的,故一般采用的是物理备份的热备份。

    物理备份一般又包含两种,一类是使用文件系统或块设备级别的快照功能完成备份,但此类备份方法,当出现故障时,难以将数据恢复到需求的时刻;另一类是使用数据库的PITR方法进行热备份,这是较常使用的数据库数据备份方式,接下来即介绍此方法。

PITR物理备份相关概念

WAL日志:用于记录数据库数据文件的每次改变,在数据目录的pg_xlog子目录中,当数据库崩溃后,可以通过重放最后一次checkpoint点之后的日志文件,将数据库推到一致状态。

 

PITR:基于时间点的备份(Point-In-Time Recovery),通过不停地重放WAL日志就可以将数据推到备份结束后的任意一个时间点。

 

WAL归档:即将在线的WAL日志备份出来。

备份脚本示例

以下在HighgoDB3.0.2测试通过。

部署方法

脚本需要使用python环境,需要安装:

python-2.7.13.amd64.msi

脚本中需要使用psycopg2 来连接数据库,需要安装:psycopg2-2.6.2.win-amd64-py2.7-pg9.5.3-release.exe

因为使用psycopg连接数据库,因此需要设置pg_hba.conf中

# IPv4 local connections:下面添加

host    all             all             127.0.0.1/32            md5

将HGDB安装bin目录添加至PATH环境变量。

部署脚本

运行脚本为hgbackup.bat。

修改py脚本内的变量部分:

其中num=6 表示保留最近的6份全备。

另外注意文件夹路径的 / 不是 \ 。

Windows平台下HighgoDB 备份恢复指导手册

添加操作系统计划任务调用hgbackup.bat。

建议数据库安装时的归档日志和备份放在同一目录下,当出现数据磁盘损坏时可以最大限度的恢复数据,实现数据零丢失。

如:postgresql.conf参数中archive_command = 'copy  "%p" C:\\hgbackup\\archivelog\\%f'

其中C:\\hgbackup 是脚本中备份存放的路径。

恢复过程示例

在Windows平台下,若HGDB数据库故障,需要恢复。那么以下步骤可以帮您完成数据恢复的目的。

以下示例中,WAL归档路径为:C:\hgbackup\archivelog。数据库备份路径为:C:\hgbackup。HGDB的data路径为:C:\highgodb\data。

          i.        备份HGDB的data路径(如果可以的话):

直接对该路径进行压缩后复制粘贴到另一个安全的地方,比如远端的机器上。

        ii.        如果可以的话,将data路径下pg_xlog中最新的WAL日志与归档路径C:\hgbackup\archivelog下的最新WAL归档进行比较,若pg_xlog中有未归档的日志,将该日志复制到C:\hgbackup\archivelog路径下。

       iii.        删除data下的所有文件:

到C:\highgodb\data下,右键删除所有文件。

       iv.        假设当前最新的备份为C:\hgbackup\3,将该路径下所有备份文件复制到C:\highgodb\data下。

        v.        清空C:\highgodb\data下pg_xlog中所有文件,并重新创建archive_status目录。

       vi.        在C:\highgodb\data下创建recovery.conf文件。

进入C:\highgodb\data,创建recovery.conf文件,并将以下信息粘贴到recovery.conf文件中(路径为WAL日志归档路径):

restore_command = 'copy C:\\hgbackup\\archivelog\\%f "%p"'

     vii.        启动数据库。

此时,数据库会自动应用WAL日志进行恢复,恢复完成后,recovery.conf文件会变为recovery.done文件。

这样,就完成了数据的恢复。


      欢迎登录【瀚高技术支持平台】查看更多资料。

      https://support.highgo.com/#/