hg_rman 功能说明文档

目录
文档用途
详细信息
相关文档
文档用途
本文旨在介绍瀚高数据库产品的 hg_rman 功能及使用示例。

详细信息
为了防止数据库丢失数据以及在数据丢失后重建数据库,数据库备份与恢复工具对于数据库生产运维来说是不可缺少的。

目前大多数企业级数据库常规容量普遍都已达到TB 级,日增上百GB 的数据变化量属于常态,这对日常的数据库备份恢复性能和可靠性提出了更高的要求。

瀚高数据库使用pg_basebackup来实现数据库的备份与恢复.pg_basebackup可以对数据库进行基础备份。pg_basebackup 使用流复制协议来建立对数据库的连接,通过与pg_start_backup()和pg_stop_backup 底层类似的机制来备份数据。在备份过程中不会影响到数据库的正常使用,也不需要通过文件系统访问来传输数据文件。但是pg_basebackup 也存在一些限制,例如对备份的结果集没有管理,无法做物理块级和增量备份,缺少并行机制等。从性能和日常管理的角度来看,pg_basebackup 很难满足企业级数据库的备份需求。

瀚高备份恢复工具RMAN 是一个用于执行备份和恢复操作的数据库组件。使用它可执行一致性备份或非一致性备份,执行增量备份或完全备份,也可备份整体数据库或数据库的一部分(单个数据文件)。如果为了快速恢复,RMAN 可将备份存储在磁盘上;如果为了长期存储,也可将备份放置在磁带上。

使用hg_rman 前数据库必须开启归档,并且保证归档日志可以正常归档。

alter system set wal_level = archive; 保证wal级别在archive以上即可。

alter system set archive_mode = on; 开启归档

alter system set archive_directory = ‘/hgdbbak/archive/’; 设置归档路径

hg_rman特有的块跟踪机制默认不开启(开启该机制会造成性能损耗,但是可以减少增量备份的时间),需要修改数据库参数以开启。

hg_db_block_change_tracking = on (开启块跟踪设置)

hg_db_bct_file_buffers = 32MB (与bct进行交互的区域大小)

hg_db_bct_cache_size = 128MB (暂时存储块信息的缓冲区)

bctwriter_delay = 200ms (BctWriter 进程转化块信息&写入磁盘的时间间隔)

注意:Windows 平台数据库不支持块跟踪机制,请将hg_db_block_change_tracking 参数设置为 off

hg_rman init:
hg_rman OPTION init

init 命令支持的OPTION 参数如下:

-D, --pgdata=PATH 数据库存储路径

-A, --arclog-path=PATH 归档日志存储路径

-B, --backup-path=PATH 备份存储路径

Example:

[highgo@localhost conf]$ hg_rman init -D /opt/HighGo5.6.4/data -A /hgdbbak/archive -B /home/highgo/backup

INFO: PGDATA is set to ‘/opt/HighGo5.6.4/data’

INFO: BACKUP_PATH is set to ‘/home/highgo/backup’

INFO: ARCLOG_PATH is set to ‘/hgdbbak/archive’

hg_rman config
hg_rman OPTION config

config 命令支持的OPTION 参数如下:

–list 列出配置项

此参数只能从命令行指定

Example:

[highgo@localhost conf]$ hg_rman --list config

=============================================================================================

ArguName Source Value

=============================================================================================

pgdata CONFFILE /opt/HighGo5.6.4/data

arclog-path CONFFILE /hgdbbak/archive

backup-path CONFFILE /home/highgo/backup

backup-mode CONFFILE FULL

compress-data CONFFILE NO

smooth-checkpoint CONFFILE YES

keep-data-days CONFFILE 7

keep-arclog-files CONFFILE -1

hgdb_home ENVIRONMENT /opt/HighGo5.6.4

dbname DEFAULT highgo

=====================================================================

也可通过hg_rman 配置文件来查看:

[highgo@localhost conf]$ cat $HGDB_HOME/conf/hg_rman.ini

PGDATA=’/opt/HighGo5.6.4/data’

BACKUP_PATH = ‘/home/highgo/backup’

ARCLOG_PATH=’/hgdbbak/archive’

BACKUP_MODE=full

COMPRESS_DATA=NO

SMOOTH_CHECKPOINT=YES

KEEP_ARCLOG_FILES=-1

KEEP_DATA_DAYS=7

hg_rman backup

hg_rman OPTION backup

backup 命令支持的OPTION 参数如下:

-B, --backup-path=PATH 备份文件将会保存到此目录

-d, --dbname=DBNAME 备份连接的数据库名称

-h, --host=HOSTNAME 备份连接的数据库的IP

-p, --port=PORT 备份连接的数据库的端口

-U, --username=USERNAME 备份连接数据库的用户

-w, --no-password 备份不需要用户密码

-W, --password 强制输入用户密码

-b, --backup-mode=MODE 备份模式full, incremental, or archive

-X, --with-arclog 全备或增备模式时,是否同时备份wal 日志.

-Z, --compress-data 备份数据是否压缩

-C, --smooth-checkpoint 是否执行smooth checkpoint

-F, --full-backup-on-error 增备模式时,当前时间线没有找到合适的全备备份,将此次备份转为全备备份

–standby-host=HOSTNAME 从备机备份时,备机的IP

–standby-port=PORT 从备机备份时,备机的端口

如果在执行命令时,未指定option 参数,程序会获取配置文件或环境变量(配置文件优先级高于环境变量)的值作为命令参数

Example:

[highgo@localhost conf]$ hg_rman backup -b full -d highgo -h localhost -p 5866 -U highgo -F -X

INFO: copying database files

INFO: hg_db_block_change_tracking is on ,incremental backup after this full backup will depend on bct files

INFO: set_bctfile_status success.

INFO: copying archived WAL files

INFO: backup complete

[highgo@localhost conf]$ ll /home/highgo/backup

总用量 0

drwx------ 4 highgo highgo 96 6月 10 14:17 1_TAG20200610T141729

drwx------ 4 highgo highgo 96 6月 10 14:19 2_TAG20200610T141907

drwx------ 4 highgo highgo 96 6月 10 14:21 3_TAG20200610T142138

drwx------ 4 highgo highgo 96 6月 15 14:59 4_TAG20200615T145904

drwx------ 4 highgo highgo 119 6月 15 15:03 5_TAG20200615T150027

drwx------ 4 highgo highgo 119 6月 16 11:15 6_TAG20200616T111504

hg_rman show

hg_rman OPTION show [backup BK_key]

hg_rman OPTION show detail [backup BK_key]

show 命令支持的OPTION 参数如下:

-a, --show-all deleted 的备份集也可显示

如果在执行命令时,未指定option 参数,程序会获取配置文件或环境变量(配置文件优先级高于环境变量)的值作为命令参数。

Example:

[highgo@localhost conf]$ hg_rman show -a

=========================================================================================================================

BK_key Tag ElapsedTime EndTime Mode Size TLI chkpt Status

=========================================================================================================================

6 TAG20200616T111504 00:00:20 2020-06-16 11:15:24 FULL 619MB 25 2/AC0000D0 OK

5 TAG20200615T150027 00:03:32 2020-06-15 15:03:59 FULL 5334MB 25 2/AA0000D0 OK

4 TAG20200615T145904 00:00:14 2020-06-15 14:59:18 FULL 586MB 25 2/A80000D0 ERROR

3 TAG20200610T142138 00:00:22 2020-06-10 14:22:00 FULL 586MB 25 2/A60000D0 ERROR

2 TAG20200610T141907 00:00:04 2020-06-10 14:19:11 INCR 16kB 25 2/A4000060 OK

1 TAG20200610T141729 00:00:21 2020-06-10 14:17:50 FULL 586MB 25 2/A2000108 OK

[highgo@zx ~]$ hg_rman show detail -a

==========================================================================================================================================

BK_key Tag ElapsedTime EndTime Mode Data ArcLog Total Compressed CurTLI ParentTLI chkpt Status

==========================================================================================================================================

8 TAG20200616T134059 00:00:17 2020-06-16 13:41:16 FULL 255MB 520MB 776MB false 25 24 2/CC0000D0 OK

7 TAG20200616T133404 00:00:22 2020-06-16 13:34:26 FULL 585MB 67MB 653MB false 25 24 2/AF0000D0 OK

hg_rman validate
hg_rman validate backup BK_key 校验指定备份集.

Example:

[highgo@localhost conf]$ hg_rman validate backup 1

INFO: validate: “1” backup and archive log files by CRC

INFO: backup “1” is valid

[highgo@localhost conf]$ hg_rman validate backup 2

INFO: validate: “2” backup and archive log files by CRC

INFO: backup “2” is valid

[highgo@localhost conf]$ hg_rman validate backup 3

INFO: validate: “3” backup and archive log files by CRC

^[[AERROR: could not open “/home/highgo/backup/3_TAG20200610T142138/file_arclog.txt”: 没有那个文件或目录

[highgo@localhost conf]$ hg_rman validate backup 4

INFO: validate: “4” backup and archive log files by CRC

ERROR: could not open “/home/highgo/backup/4_TAG20200615T145904/file_arclog.txt”: 没有那个文件或目录

[highgo@localhost conf]$ hg_rman validate backup 5

INFO: validate: “5” backup and archive log files by CRC

INFO: backup “5” is valid

hg_rman delete
hg_rman OPTION delete backup BK_key

hg_rman OPTION delete arclog

delete 命令支持的OPTION 参数如下:

-n, --noprompt 删除时无需确认

–keep-data-generations=NUM (保留策略)保留全备的数量,仅delete backup 使用

–keep-data-days=NUM (保留策略)备份保留的天数,仅delete backup 使用

–keep-arclog-files=NUM (保留策略)保留归档文件的数量,仅delete arclog 使用

–keep-arclog-days=DAY (保留策略)归档文件保存的天数,仅delete arclog 使用

Example:

[highgo@localhost conf]$ hg_rman --keep-data-generations=1 delete backup 6

ERROR: The backup with ID ‘6’ can not be deleted.

[highgo@localhost archive]$ hg_rman --keep-data-generations=1 delete backup 5

=========================================================================================================================

BK_key Tag ElapsedTime EndTime Mode Size TLI chkpt Status

=========================================================================================================================

5 TAG20200615T150027 00:03:32 2020-06-15 15:03:59 FULL 5334MB 25 2/AA0000D0 OK

Do you want to delete the backups above? (‘Yes’ or ‘No’):yes

INFO: delete the backup with ID: “5”

[highgo@localhost conf]$ hg_rman --keep-data-generations=1 delete backup 4

=========================================================================================================================

BK_key Tag ElapsedTime EndTime Mode Size TLI chkpt Status

=========================================================================================================================

4 TAG20200615T145904 00:00:14 2020-06-15 14:59:18 FULL 586MB 25 2/A80000D0 ERROR

Do you want to delete the backups above? (‘Yes’ or ‘No’):yes

INFO: delete the backup with ID: “4”

[highgo@localhost conf]$ hg_rman --keep-data-generations=1 delete backup 1

=========================================================================================================================

BK_key Tag ElapsedTime EndTime Mode Size TLI chkpt Status

=========================================================================================================================

1 TAG20200610T141729 00:00:21 2020-06-10 14:17:50 FULL 586MB 25 2/A2000108 OK

2 TAG20200610T141907 00:00:04 2020-06-10 14:19:11 INCR 16kB 25 2/A4000060 OK

Do you want to delete the backups above? (‘Yes’ or ‘No’):yes

INFO: delete the backup with ID: “1”

INFO: delete the backup with ID: “2”

[highgo@localhost conf]$ hg_rman show -a

=========================================================================================================================

BK_key Tag ElapsedTime EndTime Mode Size TLI chkpt Status

=========================================================================================================================

6 TAG20200616T111504 00:00:20 2020-06-16 11:15:24 FULL 619MB 25 2/AC0000D0 OK

5 ---- ---- ---- FULL 5334MB 25 2/AA0000D0 DELETED

4 ---- ---- ---- FULL 586MB 25 2/A80000D0 DELETED

3 ---- ---- ---- FULL 586MB 25 2/A60000D0 DELETED

2 ---- ---- ---- INCR 16kB 25 2/A4000060 DELETED

1 ---- ---- ---- FULL 586MB 25 2/A2000108 DELETED

[highgo@localhost conf]$ hg_rman --keep-arclog-days=2 delete arclog

……

/hgdbbak/archive/0000000B.history

/hgdbbak/archive/0000000B0000000000000026

/hgdbbak/archive/0000000A0000000000000026.partial

/hgdbbak/archive/00000009.history

/hgdbbak/archive/000000090000000000000024

/hgdbbak/archive/000000080000000000000024.partial

/hgdbbak/archive/000000010000000000000003

Do you want to delete the arclogs above? (‘Yes’ or ‘No’):yes

……

INFO: delete “0000000B.history”

INFO: delete “0000000B0000000000000026”

INFO: delete “0000000A0000000000000026.partial”

INFO: delete “00000009.history”

INFO: delete “000000090000000000000024”

INFO: delete “000000080000000000000024.partial”

INFO: delete “000000010000000000000003”

hg_rman purge
hg_rman purge 将被标记为删除的备份集彻底删除

Example:

[highgo@localhost conf]$ hg_rman purge

INFO: DELETED backup “5” is purged

INFO: DELETED backup “4” is purged

INFO: DELETED backup “3” is purged

INFO: DELETED backup “2” is purged

INFO: DELETED backup “1” is purged

[highgo@localhost archive]$ hg_rman show -a

=========================================================================================================================

BK_key Tag ElapsedTime EndTime Mode Size TLI chkpt Status

=========================================================================================================================

6 TAG20200616T111504 00:00:20 2020-06-16 11:15:24 FULL 619MB 25 2/AC0000D0 OK

hg_rman catalog

hg_rman OPTION catalog [backup BK_key_TAG]

catalog 命令支持的OPTION 参数如下:

–pgdata 在rebuild时需要指定pgdata

–upgrade 备份 catalog 升级

–rebuild 重建备份 catalog

如果在执行命令时,未指定option 参数,程序会获取配置文件或环境变量(配置文件优先级高于环境变量)的值作为命令参数。

Example:

前提:

   当数据库出现问题,例如误删除数据等情况时,可以使用hg_rman功能做异机恢复。准备好另外一台服务器B与现有的数据库服务器A 网络互通,然后正常安装数据库,保证所有数据库相关目录、参数均与服务器A相同。将 hg_rman 的最近的一次全备(本例中为7_TAG20200616T133404),拷贝到服务器B,同时将A服务器上的数据库conf文件夹拷贝到服务器B上的相同目录并进行覆盖(建议做好原conf文件夹的备份)。

上面的准备工作完成后,在B服务器上进行备份的注册:

[highgo@localhost HighGo5.6.4]$ hg_rman catalog backup 7_TAG20200616T133404

INFO: validate: “7” backup and archive log files by SIZE

INFO: backup “7” is valid

INFO: backup “7_TAG20200616T133404” has been cataloged into hg_rman.ctl successfully

hg_rman restore

命令格式:

hg_rman OPTION restore

restore 命令支持的OPTION 参数如下:

-D, --pgdata=PATH 数据库恢复到的目录

-A, --arclog-path=PATH 归档目录

–recovery-target-time 恢复到的时间

–recovery-target-xid 恢复到的xid

–recovery-target-inclusive 是否包含条件项

–recovery-target-timeline 目标时间线

如果在执行命令时,未指定option 参数,程序会获取配置文件或环境变量(配置文件优先级高于环境变量)的值作为命令参数,环境变量和参数值的对应关系:

参数非参数指定情况

-D, --pgdata=PATH PGDATA

-A, --arclog-path=PATH ARCLOG_PATH

–recovery-target-time RECOVER_TARGET_TIME

–recovery-target-xid RECOVER_TARGET_XID

–recovery-target-inclusive RECOVER_TARGET_INCLUSIVE

–recovery-target-timeline RECOVER_TARGET_TIMELINE

命令用途:

恢复数据库到-D 指定的位置

Example:

[highgo@localhost HighGo5.6.4]$ hg_rman restore -D /opt/HighGo5.6.4/restoredata/

WARNING: pg_controldata file “/opt/HighGo5.6.4/restoredata/global/pg_control” does not exist

INFO: backup “7” is valid

INFO: the recovery target timeline ID is not given

INFO: backup “7” is valid

INFO: use timeline ID of latest full backup as recovery target: 25

INFO: calculating timeline branches to be used to recovery target point

INFO: searching latest full backup which can be used as restore start point

INFO: found the full backup can be used as base in recovery: “2020-06-16 13:40:59”

INFO: validate: “7” backup and archive log files by CRC

INFO: backup “7” is valid

INFO: copying online WAL files and server log files

INFO: restoring database files from the full mode backup “7”

Processed 1037 of 1037 files, skipped 29

INFO: searching incremental backup to be restored

INFO: searching backup which contained archived WAL files to be restored

INFO: backup “7” is valid

INFO: restoring WAL files from backup “7”

INFO: restoring online WAL files and server log files

INFO: generating recovery.conf

INFO: restore complete

HINT: Recovery will start automatically when the PostgreSQL server is started.

[highgo@localhost HighGo5.6.4]$ pg_ctl start -D /opt/HighGo5.6.4/restoredata/

等待服务器进程启动 …2020-06-16 14:06:01.965 CST [1281] WARNING: 01000: gdb version should large than 7.10

2020-06-16 14:06:01.965 CST [1281] WARNING: 01000: coredump function is off

2020-06-16 14:06:01.979 CST [1281] LOG: 00000: listening on IPv4 address “0.0.0.0”, port 5866

2020-06-16 14:06:01.979 CST [1281] LOG: 00000: listening on IPv6 address “::”, port 5866

2020-06-16 14:06:01.992 CST [1281] LOG: 00000: listening on Unix socket “/tmp/.s.PGSQL.5866”

2020-06-16 14:06:02.051 CST [1281] LOG: 00000: redirecting log output to logging collector process

2020-06-16 14:06:02.051 CST [1281] HINT: Future log output will appear in directory “hgdb_log”.

完成

服务器进程已经启动

[highgo@localhost HighGo5.6.4]$ psql

psql (5.6.5)

PSQL: Release 5.6.5

Connected to:

HighGo Database V5.6 Enterprise Edition Release 5.6.5 - 64-bit Production

输入 “help” 来获取帮助信息.

highgo=#

highgo=# select * from t1 limit 1;

id | name

----±-------

1 | test1

(1 rows)

hg_rman blockrecover
命令格式:

hg_rman OPTION blockrecover

backup 命令支持的OPTION 参数如下:

-B, --backup-path=PATH 备份文件将会保存到此目录

-d, --dbname=DBNAME 备份连接的数据库名称

-h, --host=HOSTNAME 备份连接的数据库的IP

-p, --port=PORT 备份连接的数据库的端口

-U, --username=USERNAME 备份连接数据库的用户

-w, --no-password 备份不需要用户密码

-W, --password 强制输入用户密码

–datafile=spcid/dbid/relnode 需要执行块恢复的relfilenode

–block=nnn[,nnn,nnn] 需要执行恢复的块号

如果在执行命令时,未指定option 参数,程序会获取配置文件或环境变量(配置文件优先级高于环境变量)的值作为命令参数,环境变量和参数值的对应关系:

-B, --backup-path=PATH BACKUP_PATH

-d, --dbname=DBNAME PGDATABASE>PGUSER>当前用户名

-h, --host=HOSTNAME 只支持命令行指定

-p, --port=PORT 只支持命令行指定

-U, --username=USERNAME 只支持命令行指定

-w, --no-password 只支持命令行指定

-W, --password 只支持命令行指定

–datafile=spcid/dbid/relnode 只支持命令行指定

–block=nnn[,nnn,nnn] 只支持命令行指定

命令用途:

如果硬盘上的一个块发生损坏,在备份集和wal 日志完备的情况下,可以在线执行损坏块的恢复。

Example:

[highgo564@zx hgdb_log]$ psql

psql (5.6.4)

PSQL: Release 5.6.4

Connected to:

HighGo Database V5.6 Enterprise Edition Release 5.6.4 - 64-bit Production

Type “help” for help.

highgo=# select * from t1;

ERROR: XX001: invalid page in block 324 of relation base/13864/24625

highgo=# select oid,* from pg_tablespace ;

oid | spcname | spcowner | spcacl | spcoptions

------±-----------±---------±-------±-----------

1663 | pg_default | 10 | |

1664 | pg_global | 10 | |

(2 rows)

highgo=# \q

[highgo564@zx hgdb_log]$ hg_rman blockrecover -d highgo --datafile 1663/13864/24625

ERROR: blockrecover command must given ‘datafile’ and ‘block’ argument

[highgo564@zx hgdb_log]$ hg_rman blockrecover -d highgo --datafile 1663/13864/24625 --block=324

INFO: recover tablespace is ‘pg_default’

INFO: recover database is ‘highgo’

INFO: recover relation is ‘t1’

INFO: backup “1” is valid

INFO: found full backup BK_KEY: “1” can be used

INFO: validate: “1” backup and archive log files by CRC

INFO: backup “1” is valid

INFO: backup “1” is valid

INFO: restoring WAL files from backup “1”

INFO: checking backup BK_KEY:1

INFO: (warning) Does not find block ‘324’ in backup

INFO: block “324” has been recoverd

[highgo564@zx hgdb_log]$ psql

psql (5.6.4)

PSQL: Release 5.6.4

Connected to:

HighGo Database V5.6 Enterprise Edition Release 5.6.4 - 64-bit Production

Type “help” for help.

highgo=# select * from t1 limit 1;

id | name

-------±----------

 1 | test1                

highgo=# select count(*) from t1;

count


60000

(1 row)

更多详细信息请登录【瀚高技术支持平台】查看https://support.highgo.com/#/index/docContent/fe349309040981ce


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部