暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Halo数据库备份与恢复

Halo Tech 2022-05-05
684

备份是指对Halo数据库或事务日志进行的复制,数据库备份记录了在进行备份操作时数据库中所有数据的状态,如果数据库因意外而损坏,这些备份文件将在数据库恢复时被用来恢复数据库。


逻辑备份与恢复

逻辑备份的原理是将数据库中的对象和数据转储成对应的SQL命令。通常我们使用pg_dump/pg_restore命令来完成逻辑备份和恢复。


假设我们要备份名为halotest的数据库,我们可以使用如下命令:

    pg_dump -Fc -v -f halotest.dump halotest

    假设我们需要对halotest进行恢复,我们可以使用如下命令:

      pg_restore -v -C -d halo0root halotest.dump

      物理备份与恢复

      (一)完全备份

      1.设置归档,修改postgresql.conf文件

        archive_mode   设置为on
        archive_command 归档命令。即复制 WAL 日志的命令。
        简单的命令可参考:test ! -f data/halo/pg_archive/%f && cp %p data/halo/pg_archive/%f


        2.创建归档日志目录

          mkdir data/halo/pg_archive

          3.设置一个目录来存放备份文件,该目录需要进行初始化操作

            mkdir -p /data/halo_backup
            chown halo:halo /data/halo_backup
            ---配置环境变量
            vi /home/halo/.bash_profile  
            export BACKUP_PATH=/data/halo_backup
            ---重载
            source /home/halo/.bash_profile

            4.使用rman命令进行备份

              rman init
              rman backup -b full -d halo0root
              rman validate
              rman show detail --查看备份信息

              (二)增量物理备份

              增量备份即只备份变化的数据块和归档日志。

              使用下面的命令即可完成增量备份

                rman backup -b incremental -d halo0root

                有效性检验

                  rman validate

                  查看备份信息

                    rman show detail  

                    备份归档日志

                    顾名思义,即只备份归档日志文件。备份数据库需要消耗大量的I/O,因此我们不可能在业务时段进行数据库备份作业。通常会安排在业务低峰期,比如夜间进行数据库备份作业。但是如果只进行数据库备份,我们很可能会丢失较长一段时间内的数据,即RPO无法达到较好的值。通过合理备份归档,我们可以有效的降低RPO,这也是数据库备份很重要的一个环节。

                      rman backup -b archive -d halo0root --归档备份
                      rman validate --有效性检验
                      rman show detail --查看备份信息

                      备份恢复

                      (一)完全恢复

                      要进行数据库的完全恢复,前置条件是数据库已停止并且已完成备份。

                      1 将数据库停止运行

                        pg_ctl stop

                        2 使用rman命令将备份恢复

                          rman restore

                          3 启动数据库

                            pg_ctl start

                            (二)基于时间点的恢复

                            Halo的备份管理器也支持基于时间点的不完全恢复。前置条件需要已经做好完全备份及归档备份。例如,我们要将数据库恢复到2022-04-18 10:20:00,我们可以使用以下命令:

                              rman backup -b full -d halo0root
                              rman validate


                              rman backup -b archive -d halo0root
                              rman validate


                              pg_ctl stop
                              rman restore --recovery-target-time '2022-04-01 11:26:00'
                              pg_ctl start


                              文章转载自Halo Tech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                              评论