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

基于BRM的zcloud mogdb资料库备份恢复

原创 由迪 2023-10-27
147

原作者:凌宇骥

适用范围

mogdb交付/运维人员、zcloud交付/运维人员

问题概述

本文总结了基于BRM(Backup and Recovery Manager)的mogdb全库备份和恢复操作流程

问题原因

由于硬件故障、软件错误、人为操作失误,甚至自然灾害不可完全避免,为降低数据丢失风险,保障数据安全,客户现场通常需要有相应的备份措施。

BRM备份恢复工具的全称为:Backup and Recovery Manager。它主要设计目的是为了应对MogDB数据库集中式备份和恢复管理工作。支持数据库全量备份和WAL增量备份,可按时间点恢复数据库。

解决方案

  1. 安装配置BRM

    创建brm目录

    $ mkdir -p /tmp/brm/

    解压压缩包

    $ cd /tmp/brm

    $ unzip brm_1.0.6_linux_amd64.zip

    配置brm初始化参数文件

    在/zcloud下创建目录.brm并将配置文件复制到/zcloud/.brm目录下

    $ mkdir -p /zcloud/.brm

    $ cp /tmp/brm/conf/brm.yaml /zcloud/.brm/

    修改配置文件brm.yaml,指定备份文件存放的路径和日志存放路径,

    备份数据文件存放路径

    backup_home: /tmp/bkp_dir/data

    备份日志存放路径

    log_file: /tmp/bkp_dir/log

    注:所写路径需要zcloud****用户具有创建目录权限。

    **
    添加备份实例**

    $ /tmp/brm/brm add-server --instance=zcloud_bkp --pgdata=/zcloud/dbaas/soft-install/soft/mogdb/data --pgdatabase=zcloud --pgport=26000 --pguser=zcloud --retention-redundancy=7 --retention-window=0 --archive-dir=/zcloud/dbaas/soft-install/soft/mogdb/archive_log

    参数说明:

    选项 说明
    –instance brm中定义的备份策略实例名
    –pgdata 源数据库data目录
    –pgport 源数据库mogdb服务端口,默认26000
    –pguser 连接源数据库所用的用户
    –retention-redundancy 保留备份的份数
    –retention-window 保留备份的天数,0为不限制
    –archive-dir 源数据库的归档日志目录

    输出:

    time="2023-05-30 16:52:25.027146" level=info msg="Using config file:/zcloud/.brm/brm.yaml"

    time="2023-05-30 16:52:25.027616" level=info msg="add server begin"

    time="2023-05-30 16:52:25.027696" level=info msg="the gs_probackup path /zcloud/dbaas/soft-install/soft/mogdb/app/bin/gs_probackup"

    time="2023-05-30 16:52:25.043943" level=info msg="the gs_probackup version 3.0.2"

    time="2023-05-30 16:52:25.044212" level=info msg="the gs_ctl path /zcloud/dbaas/soft-install/soft/mogdb/app/bin/gs_ctl"

    time="2023-05-30 16:52:25.062431" level=info msg="gs_ctl version "

    time="2023-05-30 16:52:25.073876" level=info msg="Instance 'zcloud_bkp' version 3.0.2"

    time="2023-05-30 16:52:25.087411" level=info msg="Instance 'zcloud_bkp' XLogSegSize 16777216"

    time="2023-05-30 16:52:25.170743" level=info msg="Check params archive_dest"

    time="2023-05-30 16:52:25.1736" level=info msg="add server end "

    列出备份实例

    $ ./brm list-instance

    time="2023-05-30 17:00:12.322426" level=info msg="Using config file:/zcloud/.brm/brm.yaml"

    time="2023-05-30 17:00:12.322993" level=info msg="the gs_probackup path /zcloud/dbaas/soft-install/soft/mogdb/app/bin/gs_probackup"

    time="2023-05-30 17:00:12.363816" level=info msg="the gs_probackup version 3.0.2"

    time="2023-05-30 17:00:12.382605" level=info msg="the gs_ctl path /zcloud/dbaas/soft-install/soft/mogdb/app/bin/gs_ctl"

    time="2023-05-30 17:00:12.407647" level=info msg="gs_ctl version "

    instance PgData PgUser PgDatabase PgVersion

    zcloud_bkp /zcloud/dbaas/soft-install/soft/mogdb/data zcloud zcloud 3.0.2

    查看备份实例相应的配置信息

    $ ./brm list-server --instance=zcloud_bkp

    time="2023-05-30 17:02:03.768617" level=info msg="Using config file:/zcloud/.brm/brm.yaml"

    time="2023-05-30 17:02:03.769306" level=info msg="the gs_probackup path /zcloud/dbaas/soft-install/soft/mogdb/app/bin/gs_probackup"

    time="2023-05-30 17:02:03.902033" level=info msg="the gs_probackup version 3.0.2"

    time="2023-05-30 17:02:03.902179" level=info msg="the gs_ctl path /zcloud/dbaas/soft-install/soft/mogdb/app/bin/gs_ctl"

    time="2023-05-30 17:02:03.920218" level=info msg="gs_ctl version "

    [

    {

    "name": "zcloud_bkp",

    "pg_data": "/zcloud/dbaas/soft-install/soft/mogdb/data",

    "system_identifier": "22613152296509354",

    "pgDatabase": "zcloud",

    "pgPort": 26000,

    "pgUser": "zcloud",

    "retention_redundancy": 7,

    "remote_proto": "ssh",

    "remote_port": 22,

    "ssh_options": "-i",

    "unixSocket": "/zcloud/dbaas/soft-install/soft/mogdb/tmp",

    "openGaussVersion": "3.0.2",

    "xLogSegSize": 16777216,

    "brmServerWalConfig": {

    "nodeName": "",

    "archiveDir": "/zcloud/dbaas/soft-install/soft/mogdb/archive_log",

    "archiveWal": false,

    "streamingArchiver": false,

    "streamingArchiverName": "brm_receive_wal",

    "slotName": "brm",

    "autoCreateSlot": true,

    "streamingArchiverBatchSize": 50,

    "walRetentionRedundancy": -1,

    "primaryHost": "zcloud",

    "primaryHostPrvFile": "/zcloud/.ssh/id_rsa"

    },

    "pgpassword": ""

    }

    ]

  2. 备份数据库

    备份前检查

    命令:

    $ ./brm check --instance=zcloud_bkp

    输出:

    全为OK表明可进行备份

    开始备份

    备份数据文件

    命令:

    $ ./brm backup --instance=zcloud_bkp --backup-mode=full --backup-pg-log --delete-expired --delete-wal --no-validate --expire-time='2024-01-01 00:00:00+03' --merge-expired --no-sync --note='test' --skip-block-validation --smooth-checkpoint --stream --temp-slot --threads=1 --progress

    参数说明:

    选项 说明
    –instance brm中定义的备份策略实例名
    –backup-mode 备份模式(FULL|PTRACK),默认为FULL
    –backup-pg-log 备份pg-log目录,在备份实例中有设置
    –delete-expired 备份完成后,根据保留策略删除已过期的备份
    –delete-wal 删除WAL归档中的冗余文件
    –no-validate 备份后不做验证
    –expire-time 为生成的备份设置过期时间
    –merge-expired 备份完成后,根据保留策略合并过期备份
    –no-sync 不把备份文件同步到磁盘
    –skip-block-validation 跳过块级别校验, 只做文件级别校验
    –smooth-checkpoint 备份前做平滑checkpoint
    –stream 流式获取事务日志,并保存在备份中
    –temp-slot 使用临时复制槽
    –threads 并发线程数
    –progress 输出备份进度

    输出:

    time="2023-05-30 17:08:47.369956" level=info msg="INFO: Progress: (5739/5748). Process file "base/15940/16669""

    time="2023-05-30 17:08:47.553531" level=info msg="INFO: Progress: (5740/5748). Process file "base/15940/16753""

    time="2023-05-30 17:08:47.70586" level=info msg="INFO: Progress: (5741/5748). Process file "base/15940/16711""

    time="2023-05-30 17:08:47.892151" level=info msg="INFO: Progress: (5742/5748). Process file "base/16767/18204""

    time="2023-05-30 17:08:48.081235" level=info msg="INFO: Progress: (5743/5748). Process file "base/16767/28368""

    time="2023-05-30 17:08:48.267624" level=info msg="INFO: Progress: (5744/5748). Process file "undo/undometa""

    Progress字段可以查看完成进度。

    备份WAL文件(增量备份)

    命令:

    ./brm backup-wal --instance=zcloud_bkp --delete-wal --threads=1

    输出:

    time="2023-05-30 17:28:42.781513" level=info msg="Using config file:/zcloud/.brm/brm.yaml"

    time="2023-05-30 17:28:42.793568" level=info msg="the gs_probackup path /zcloud/dbaas/soft-install/soft/mogdb/app/bin/gs_probackup"

    time="2023-05-30 17:28:43.052996" level=info msg="the gs_probackup version 3.0.2"

    time="2023-05-30 17:28:43.059321" level=info msg="the gs_ctl path /zcloud/dbaas/soft-install/soft/mogdb/app/bin/gs_ctl"

    time="2023-05-30 17:28:43.097604" level=info msg="gs_ctl version "

    time="2023-05-30 17:28:43.122982" level=info msg="Instance zcloud_bkp backup wal by local archive dir"

    time="2023-05-30 17:28:43.123101" level=info msg="Instance zcloud_bkp backup wal from /zcloud/dbaas/soft-install/soft/mogdb/archive_log"

    time="2023-05-30 17:28:43.123497" level=info msg="Download file /zcloud/dbaas/soft-install/soft/mogdb/archive_log/00000001000000000000008E"

    time="2023-05-30 17:28:43.30109" level=info msg="Download file /zcloud/dbaas/soft-install/soft/mogdb/archive_log/00000001000000000000008F"

    time="2023-05-30 17:28:43.459153" level=info msg="Download file /zcloud/dbaas/soft-install/soft/mogdb/archive_log/000000010000000000000090"

    time="2023-05-30 17:28:43.618387" level=info msg="Download file /zcloud/dbaas/soft-install/soft/mogdb/archive_log/000000010000000000000091"

    参数说明:

    选项 说明
    –instance brm中定义的备份策略实例名
    –delete-wal 删除WAL归档中的冗余文件
    –threads 并发线程数
  3. 数据库恢复

    停止zcloud微服务和mogdb

    命令:

    $ cd /zcloud/dbaas/soft-install

    $ ./stop.sh --name ALL

    备份当前mogdb data目录

    命令:

    $ cd /zcloud/dbaas/soft-install/soft/mogdb

    $ mv data data.bkp

    查看备份集

    命令:

    $ ./brm show-backup

    输出:img

    其中ID用于恢复时制定备份集

    查看WAL备份集

    命令:

    $ ./brm show-wal

    输出:

    img

    恢复数据库数据

    命令:

    ./brm restore --instance=zcloud_bkp --pgdata=/zcloud/dbaas/soft-install/soft/mogdb/data --backup-id=RVGS21

    参数说明:

    选项 说明
    –instance brm中定义的备份策略实例名
    –pgdata 执行恢复的目标data目录
    –backup-id 备份ID,与show-backup中的ID对应
    –recovery-target-lsn 以lsn作为恢复目标点
    –recovery-target-name 以已命名的恢复点为目标点
    –recovery-target-time 以指定的备份名为目标点
    –recovery-target-xid 以事务ID为目标点

    输出:

    time="2023-05-30 19:52:58.702392" level=info msg="INFO: Restore incremental ratio (less is better): 101% (2576MB/2560MB)"

    time="2023-05-30 19:52:58.702415" level=info msg="INFO: Syncing restored files to disk"

    time="2023-05-30 19:53:02.893734" level=info msg="INFO: Restored backup files are synced, time elapsed: 4s"

    time="2023-05-30 19:53:02.894161" level=info msg="INFO: Restore of backup RVGS21 completed."

    time="2023-05-30 19:53:02.895574" level=info msg="Instance zcloud_bkp restore completed."

    time="2023-05-30 19:53:02.895716" level=info msg="Instance zcloud_bkp begin write recovery.conf"

    time="2023-05-30 19:53:02.895808" level=info msg="Instance zcloud_bkp no need recovery"

    time="2023-05-30 19:53:02.895871" level=info msg="Instance zcloud_bkp begin start"

    time="2023-05-30 19:53:02.896655" level=info msg="new instance post 26000"

    time="2023-05-30 19:53:05.034095" level=info msg="Instance zcloud_bkp begin recover"

    time="2023-05-30 19:53:05.034371" level=info msg="Instance zcloud_bkp recover completed"

    蓝色内容表示恢复完成

    启动mogdb与zcloud微服务

    命令:

    $ cd /zcloud/dbaas/soft-install/

    $ ./start.sh –name ALL

    登录平台,确认数据恢复完成

参考文档

BRM工具使用说明

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论