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