人大金仓KESV8R6物理备份与还原

本文详细介绍了sys_rman工具在物理备份中的应用,包括冷备和热备的概念,sys_rman的功能、使用场景和初始化步骤。接着阐述了执行全量、差异和增量备份的流程,以及如何进行完全恢复和不完全恢复。此外,还讨论了备份集的管理和维护,以及检查备份和归档配置的可用性。最后,总结了物理备份的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

 一、物理备份类型

1、冷备

2、热备

 二、sys_rman工具介绍

1、sys_rman 功能

2、使用场景

3、sys_rman 工具需要使用

三、备份初始化

1、准备工作

2、sys_backup.conf配置文件部分参数解析

3、设置 system 用户免密登录

4、修改归档参数

5、执行初始化脚本

6、sys_backup 脚本使用参数

7、sys_backup 脚本注意事项

四、执行物理备份

1、执行全量备份

2、执行差异备份

3、执行增量备份

4、查看备份集信息显示备份文件的类型

五、执行完全恢复

1、模拟数据库灾难损坏

2、开始进行完全恢复

3、验证恢复结果

六、执行不完全恢复

1、基于时间的不完全恢复

2、基于事务 ID的不完全恢复

七、恢复物理备份到新的目录

1、在原库创建表空间和对象

2、在原库执行物理备份

3、恢复备份到新的集簇目录中

4、修改新集簇下的监听端口并启动实例

八、管理和维护备份集

1、使用临时保留策略删除过期备份

2、配置永久保留策略并删除过期备份

3、手动删除指定备份集

九、检查备份和归档配置可用性

总结:

物理备份的优点和缺点

1、优点

2、缺点


前言

物理备份指的是将数据库中的相关物理文件转储到指定的备份存储中,KES 支持 sys_rman、sys_basebackup、cp 等多种物理备份方法。这里介绍最常用的物理备份工具 sys_rman 的使用方法。

 一、物理备份类型

1、冷备

(1) 冷备也叫文件系统级别备份
(2) 备份时需要关闭实例,然后利用操作系统命令将整个集簇主数据目录备份到指定的备份路径
(3) 还原时也必须关闭实例,然后将备份文件复制到原始数据文件路径中
(4) 冷备不支持对象级备份和还原,只能备份和还原整个数据库集簇

2、热备

(1) 热备也叫在线备份
(2) 热备依赖于数据文件备份和 WAL 日志的连续归档,因此数据库必须运行在归档模式下
(3) 备份时不需要关闭实例,还原时需要关闭实例
(4) 可以使用工具 sys basebackup、sys rman backup 来执行备份和还原

(5) 这种备份还原时支持读取 WAL 归档日志执行完全恢复和 PITR 恢复 

 二、sys_rman工具介绍

1、sys_rman 功能

(1) 用于数据库物理备份和还原以及管理备份集的工具
(2) 联机备份,数据库服务关闭状态下执行 sys rman 会失败
(3) 操作简单,单个命令即可完成备份和恢复
(4) 支持全量备份、差异备份和增量备份
    全量备份:无论之前是否存在备份,都完整备份整个数据库集簇中的内容
    差异备份:每次的备份只需备份与前一次全量备份相比增加或者被修改的内容
    增量备份: 每次的备份只需备份与前一次全量、差异、增量备份相比增加或者被修改的内

(5) 根据保留策略自动删除已过期的备份文件
(6) 可以自动读取所需的备份集、在线日志、归档日志来实现完全恢复和不完全恢复

(7) 是基于文件块级别的备份,备份速度快

 2、使用场景

(1) 可用于数据库文件损坏等物理错误场景下的数据恢复
(2) 可用于基于时间点或事务号的数据恢复(PITR)
(3) 可用于在大型系统中执行整库级的数据恢复
(4) 可用于将整个数据库集簇恢复到另一个新的数据库实例中

3、sys_rman 工具需要使用

sys_backup.sh 脚本初始化后才能使用,初始化会做如下设置:

参数说明
archive_mode

 
archive_mode 参数只能在服务器启动时设置,当 wal level=minimal 时,无法启动归档此参数可设置的值有 off、on、always。
archive_ command
 
这个参数指定了将在线 WAL 文件转储到归档文件的方法。
此参数可设置的值有 minimal、replica (默认)、logical。
wal_level
 
sys_rman 要求数据库参数 wal_level 不能配置为 minimal

(1) 自动创建并初始化备份目录。
     创建备份目录,存放备份文件。
     创建归档目录,存放归档文件。
     自动生成 sys_rman.conf 配置文件,设置数据库集簇所在目录,监听端口,数据库备份的用户等配置信息。

(2)设置定时备份任务。
sys_backup.sh 会自动设置定时备份任务,包括全量备份和增量备份,备份的频率需要在sys backup.sh 脚本的配置文件中指定。

(3)自动完成一次全量备份。

三、备份初始化

1、准备工作

sys_backup.sh 的配置文件是 sys_backup.conf,位于“安装目录/Server/share”目录中,在执行 sys_backup.sh 脚本时,会优先寻找“安装目录/Server/bin/sys_backup.conf”,如果找不到,则会去找“安装目录/Server/share/sys_backup.conf”,因此可以把 share 目录中的配置文件复制到 bin目录中进行修改。

2、sys_backup.conf配置文件部分参数解析

(1)_target_db_style="single":表示备份单机环境,而非集群环境。
(2)_one_db_ip="127.0.0.1": 设置要备份的主机的 IP,本例中为本机 IP
(3)_repo_ip="127.0.0.1": 设置备份文件的目标存放位置的 IP。
(4)_stanza_name="kingbase": 设置标签为 kingbase。
(5)_os_user_name="kingbase": 指定运行 kes 的主机上的 os 用户
(6)_repo_path="/backup/rman": 指定存放备份文件和归档日志文件的目录。
(7)_repo_retention_full_count=5:指定备份集保留策略,本例中为保留 5份
(8)_crond_ful1_days=7: 指定全量备份的频率,本例中是每 7 天做一次全量备份。
(9)_crond_diff_days=0: 指定差异备份的频率,本例中0表示不做备份。
(10)_crond_incr_days=1:指定增量备份的频率,本例中是每天备份。
(11)_crond_full hour=2: 指定全量备份的时间,本例中是凌晨 2 点。
(12)_os_ip_cmd="/usr/sbin/ip":操作系统 ip 命令的路径。
(13)_single_data_dir="/data":数据库目录的路径。
(14)_single_bin_dir="/KingbaseES/V8/Server/bin": 数据库软件的 bin 目录。
(15)_single_db_user="system": 登录数据库的用户名称。
(16) single_db_port=54321":数据库监听的端口。

3、设置 system 用户免密登录

在 sys_hba.conf 文件中添加以下内容
all  host  system   127.0.0.1/32    trust

4、修改归档参数

将以下参数设置添加到 kingbase.conf 文件的末尾,并重启数据库使参数生效,在初始化过程中 archive command 参数会被自动赋值
archive_mode = on
archive_command = ' '

5、执行初始化脚本

1、执行 sys_backup.sh init 命令,按要求输入 root 用户密码

 sys_backup.sh init

2、查看备份目录,初始化过程会自动创建备份目录结构
ls -l /backup/rman/

3、查看 sys_rman.conf 配置文件
cat /backup/rman/sys_rman.conf

4、登录数据库查看归档参数

ksql test system

show archive_mode

5、查看备份集,初始化过程会自动做一次全量备份
sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase  info

6、sys_backup 脚本使用参数

1、start:启动定时备份任务,系统会自动添加定时备份任务

sys_backup.sh start

2、pause: 暂停定时备份任务
sys_backup.sh pause

3、unpause:恢复定时备份任务

sys_backup.sh unpause

4、stop:取消定时备份任务
sys_backup.sh stop

7、sys_backup 脚本注意事项

1、如果 sys_backup.conf 中关于数据库的信息有所修改,执行 sys_backup.sh init 重新初始化备份功能

2、如果 sys_backup.conf 中关于备份周期和时间点的信息有所修改,执行 sys_backup.sh start 重新配置自动备份周期

四、执行物理备份

1、执行全量备份

sys_rman --config=/backup/rman/sys_rman.conf \
--stanza=kingbase \
--archive-copy \
--type=full backup

参数解析:
(1)--config=/backup/rman/sys_rman.conf: 指定配置文件
(2)--stanza=kingbase: 指定标签,通过标签可以在配置文件中找到对应的参数配置
(3)--archive-copy: 指定备份时同时备份恢复所需的 WAL 段文件
(4)--type=full backup: 指定备份类型为全量备份

2、执行差异备份

1、在 test 库中创建测试表 t01 并插入 2 行数据

CREATE TABLE t01(id int,name text);
INSERT INTO t01 VALUES(1,'abc'),(2,'def');

2、手工切换日志

SELECT sys_switch_wal();

3、执行差异备份

sys_rman --config=/backup/rman/sys_rman.conf \
--stanza=kingbase \
--archive-copy \
--type=diff backup

4、参数解析

--type=diff 指定备份类型为差异备份,只备份上次全量备份以来改变过的数据

3、执行增量备份

1、在 test 库中创建测试表 t02 并插入 2 行数据
CREATE TABLE t02(id int,name text);
INSERT INTO t02 VALUES(1,'xyz'),(2,'opq');

2、手工切换日志

SELECT sys_switch_wal();

3、执行增量备份
sys_rman --config=/backup/rman/sys_rman.conf \
--stanza=kingbase \
--archive-copy \
--type=incr backup

4、参数解析

--type=incr backup指定备份类型为增量备份,只备份上次全量、差异、增量备份以来改变过的数据

4、查看备份集信息显示备份文件的类型

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase info

五、执行完全恢复

1、模拟数据库灾难损坏

1、正常关闭数据库

sys_ctl stop -D /data

2、删除主数据目录下的所有文件

rm -rf /data/*
rm -rf /data/.*

3、尝试启动数据库 (失败)

sys_ctl start -D /data

2、开始进行完全恢复

1、执行完全恢复

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase restore 

2、启动数据库

sys_ctl start -D /data

3、验证恢复结果

1、使用 system 用户登录 test 数据库

kingbase test system

2、查看表 t01 和 t02(数据都恢复成功)

SELECT * FROM t01;
SELECT * FROM t02;

六、执行不完全恢复

1、基于时间的不完全恢复

1、查看备份信息

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase info

2、查看时间戳,并记录

SELECT now();

3、删除T01表

DROP TABLE t01;

4、正常停止数据库,并删除/data目录下的所有文件

sys_ctl stop -D /data
rm -rf /data/*
rm -rf /data/.*

5、执行不完全恢复至误删除表之前的时间点

sys_rman --config=/backup/rman/sys_rman.conf \
--stanza=kingbase --type=time --target='2023-05-12 11:01:25' \
--target-action=promote restore

6、启动数据库实例

sys_ctl start -D /data

7、恢复结果验证
使用 system 用户登录 test 数据库

ksql test system

查看 t01 表及数据(t01 表被成功恢复)

SELECT * FROM t01;

备注:如果不指定--target-action=promote 选项,系统默认会使用--target-action=pause 选项,此时系统处于只读状态,需要执行“select pg_wal_replay_resume(”命令使数据库切换时间线,并进入读写状态。


实际工作中,往往不清楚准确的误删时间,一般需要多次恢复、使误删除的损失降到最低。

2、基于事务 ID的不完全恢复

1、执行全备后,查看备份集信息

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase info

2、模拟误删除操作并执行不完全恢复;开启事务,查看并记录事务 ID
 begin;
SELECT txid_current();

3、创建 t03 表、录入数据、结束事务

CREATE TABLE t03(id int,name text);
INSERT INTO t03 VALUES(1,'rfv'),(2,'ujm');

end;

4、删除 t03 表。

DROP TABLE t03;

SELECT * FROM t03;

5、正常停止数据库,删除/data 目录下的所有文件

sys_ctl stop -D /data
rm -rf /data/*
rm -rf /data/.* 

6、执行不完全恢复至创建 t03 表的事务 ID

sys_rman --config=/backup/rman/sys_rman.conf \
--stanza=kingbase --type=xid --target='2486' \
--set='20230512-103032A' \
--target-action=promote restore

7、启动实例登录并验证结果

sys_ctl start -D /data

ksql test system

SELECT * FROM t03;

备注:基于事务的不完全恢复需要通过--set 参数指定需要使用的备份集,这里选择了最近一次的备份集进行恢复。

七、恢复物理备份到新的目录

1、在原库创建表空间和对象

1、创建目录并授权

mkdir /home/kingbase/tbs01
chmod 700 /home/kingbase/tbs01

2、创建表空间

ksql test system
CREATE TABLESPACE tbs01 LOCATION '/home/kingbase/tbs01';

3、在新建表空间中创建表并插入 2 行数据

CREATE TABLE t04(id int,name text) TABLESPACE tbs01;
INSERT INTO t04 VALUES(1,'ert'),(2,'vbn');

2、在原库执行物理备份

1、执行全量备份

sys_rman --config=/backup/rman/sys_rman.conf \
--stanza=kingbase \
--archive-copy \
--type=full backup

2、查看备份集信息

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase info

3、恢复备份到新的集簇目录中

1、创建所需要的目录并授权

mkdir /home/kingbase/data01
mkdir /home/kingbase/tbs02
chmod 700 /home/kingbase/data01
chmod 700 /home/kingbase/tbs02

2、恢复备份到新目录中

sys_rman --config=/backup/rman/sys_rman.conf \
--stanza=kingbase \
--kb1-path=/home/kingbase/data01 \
--tablespace-map=tbs01=/home/kingbase/tbs02 \
restore

4、修改新集簇下的监听端口并启动实例

1、修改/data1 中主配置文件的监听端口

echo 'port=5555'>>/home/kingbase/data01/kingbase.conf

2、指定新的数据库目录启动实例sys_ctl start -D /home/kingbase/data01

3、测试使用 system 用户登录到新的实例中,并查看当前数据库和表空间所在目录

ksql test system -p 5555
show data_directory; 

八、管理和维护备份集

1、使用临时保留策略删除过期备份

 1、多次全量备份后,查看当前备份集

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase info

2、使用保留策略删除备份集,保留最近两次全量备份

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase \
--repo1-retention-full=2 expire

3、再次查看备份集

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase info

2、配置永久保留策略并删除过期备份

1、多次全量备份后,查看当前备份集

ys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase info

2、在 sys_rman.conf 中配置永久保留策略,保留最近 3 次全量备份

vi /backup/rman/sys_rman.conf
cat /backup/rman/sys_rman.conf |grep retention|grep -v grep

3、删除过期的备份集并查看当前备份集

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase expire

4、再次查看备份集

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase info

3、手动删除指定备份集

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase \
--set='20220126-095932F' expire 

九、检查备份和归档配置可用性

使用 sys_rman 的 check 命令验证备份和归档的配置是否可用,如果配置不正确,导致系统无法正常备份和归档时,则会做出相应警告和提示

sys_rman --config=/backup/rman/sys_rman.conf --stanza=kingbase check

总结:

物理备份的优点和缺点

1、优点

(1)备份速度快,是生产系统首选的备份方式
(2)支持完全恢复和不完全恢复
(3)支持读取归档日志和在线日志进行数据恢复
(4)支持并行备份

2、缺点

(1)无法实现跨平台恢复,移植性较差
(2)只能在集簇级备份,不够灵活,无法选择细粒度对象备份
(3)针对数据库逻辑错误的数据恢复时不够高效和便利 

### 如何使用金仓数据库的图形化界面进行备份还原操作 #### 图形化工具概述 Kingbase 提供了一个名为 `KDBMS` 的图形化管理工具,该工具支持通过直观的操作完成数据库备份恢复功能。此工具不仅简化了命令行操作流程,还提供了可视化的配置选项。 --- #### 启动 KDBMS 并连接到目标数据库 启动 KDBMS 客户端后,在登录窗口输入服务器地址、用户名(如 `system`)、密码以及端口号(默认为 54321 或其他自定义端口)。成功连接至目标数据库实例后,可以进入主界面并找到备份恢复的相关菜单项[^1]。 --- #### 数据库备份操作 在 KDBMS 主界面上: 1. **导航路径**: 转至左侧树状结构中的 “对象浏览器”,展开当前已连接的目标数据库节点。 2. **右键菜单**: 右击目标数据库名称,选择 “备份” 功能。 3. **设置参数**: - 配置文件保存位置:指定本地磁盘上的存储目录。 - 文件命名规则:可手动填写或采用系统推荐格式。 - 压缩级别:调整压缩比例以优化空间占用率。 - 日志记录:启用日志以便后续排查问题。 执行完成后,将在设定好的路径下生成 `.bak` 扩展名的备份文件。 --- #### 数据库还原操作 同样基于 KDBMS 界面实现数据恢复过程如下所示: 1. **定位目标**: 在左侧面板中选中待恢复的具体数据库实体。 2. **触发动作**: 利用鼠标点击弹出快捷方式列表里的 “恢复” 条目。 3. **导入源选取**: - 浏览按钮加载之前创建成功的备份档案。 - 如果存在多个版本,则需确认选用最新有效的一版。 4. **高级选项校验**: - 替代模式:决定覆盖现有表还是仅追加新条目。 - 错误容忍度:允许一定程度上忽略非致命错误继续处理下去。 最终提交指令之后等待进度条结束即可验证整个事务是否顺利完成。 --- ```bash # 示例脚本补充说明 (非GUI方法对比) ./ksql -Usystem -p53217 -dtest -a < test_new.sql > check2.out 2>&1 ``` 上述代码片段展示了一种替代性的非交互式批量作业形式,适用于无人值守场景下的自动化运维需求[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值