- 物理备份和还原
物理备份指的是将数据库中的相关物理文件转存储到指定的备份文件中,KES支持sys_rman、sys_basebackup、cp等多种物理备份方法。
一、物理备份类型
1、冷备
(1)冷备也叫文件系统级别备份。
(2)备份时需要关闭实例,然后利用操作系统命令将整个集簇主数据目录备份到指定的被备份路径。
(3)还原时也必须关闭实例,然后将备份文件复制到原始数据文件路径中。
(4)冷备不支持对象级备份和还原,只能备份和还原整个数据库集簇。
2、热备
(1)热备也叫在线备份。
(2)热备依赖于数据文件备份和WAL日志的连续归档,因此数据库必须运行在归档模式下。
(3)备份时不需要关闭实例,还原时需要关闭实例。
(4)可以使用工具sys_basebackup、sys_raam backup来执行备份和还原。
(5)这种备份还原时支持读取WAL归档日志执行完全恢复和PITR恢复。
二、sys_rman概述
1、sys_rman功能。
(1)是用于数据库物理备份。
(2)是联机备份,数据库服务关闭状态下执行sys_rman会失败。
(3)操作简单,单个命令即可完成备份和恢复。
(4)支持全量备份、差异备份和增量备份。
全量备份:无论之前是否存在备份,都完整备份整个数据库集簇中的内容。
差异备份:每次的备份只需备份与前一次备份相比增加或者修改的内容。
增量备份:每次的备份只需备份与前一次全量、差异、增量备份相比增加或者被修改的内容。
- 根据保留策略自动删除已过期的备份文件。
- 可以自动读取所需的备份集、在线日志、归档日志来实现完全恢复和不完全恢复。
完全恢复:无论之前是否存在备份,都会完整备份整个数据库集簇中的内容。
不完全恢复:可选择使用time、xid选项,将数据库恢复到误操作之前。
- 是基于文件块级别的备份,备份速度快。
2、使用场景
(1)可用于数据库文件损坏等物理错误场景下的数据恢复。
(2)可用于基于时间点或事物号的数据恢复(PITR)。
(3)可用于在大型系统中执行整个库级的数据恢复。
(4)可用于将整个数据库集簇恢复到另一个新的数据库实例中。
3、进行初始化操作
sys_rman工具需要使用sys_backup.sh脚本初始化后才能使用,初始化会做如下设置:
(1)自动配置归档参数,启动归档。
(2)自动创建并初始化备份目录。
创建备份目录,存放备份文件。
创建归档目录,存放归档文件。
自动生成sys_rman.conf配置文件,设置数据库集簇所在目录,监听端口,数据库备份的用等配置信息。
- 设置定时任务。
sys_backup.sh会自动设置定时备份任务,包括全量备份和增量备份,备份的频率需要在sys_backup.sh脚本的配置文件中指定。
- 自动完成一次全量备份。
三、备份初始化
sys_backup.sh的配置文件是sys_backup.conf,位于“安装目录/Server/share”,目录中,在执行sys_backup.sh脚本时,会优先寻找“安装目录下的/Server/bin/sys_backup.conf”,如果找不到,则会去这个目录”/Server/share/sys_backup.conf“寻找,因此可以把share目录中的配置文件复制到bin目录中进行修改。
- 复制配置文件到Server/bin目录下
2.修改配文件
/KingbaseES/V8/Server/bin/sys_backup.conf
3、设置system用户免密登录
/KingbaseES/V8/data/sys_hba.conf
3、修改归档参数
添加下列参数到/KingbaseES/V8/data/kingbase.conf文件末尾,重启数据库,在初始化过程中archive_command参数会被自动赋值。
初始化前:
4、执行初始化命令
5、查看备份目录,初始化过程会自动创建备份目录结构
- 查看sys_rman.conf配置文件。
初始化过程会自动在备份目录中创建sys_rman.conf配置文件,并且依照sys_backup.conf文件中的设置对sys_rman.conf的参数进行设置,后续sys_rman命令将使用这个文件中配置的参数。
注意:配置文件中关于并行和压缩相关参数可以用来提升系统备份的性能。
- 查看归档参数。
去掉archive_command参数的注释,初始化过程会自动为archive_command参数赋值。
- 查看备份集
初始化过程中会自动做一次全量备份
- sys_backup.sh其他选项
- start:启动定时备份任务,系统会定时自动添加定时备份任务。
- pause:暂停定时备份任务
- unpause:恢复定时备份任务
- stop:取消定时备份任务
注意:
如果sys_backup.conf中关于数据库的信息有所修改,执行sys_backup.sh init重新初始化备份功能。
如果sys_backup.conf中关于备份周期和时间点的信息有所修改,执行sys_backup.sh start重新配置自动备份周期。
- 执行备份
- 全量备份
全量备份参数解析
--config=/backup/rman/sys_rman.conf #指定初始化时生成的sys_rman.conf 配置文件
--stanza=kingbase #指定标签,通过标签可以在配置文件中找到对应的参数配置
--archive-copy #指定备份时同时备份恢复所需的WAL段文件
--type=full backup #指定备份类型为全量备份
- 差异备份
创建测试表t01
执行差异备份
--type=diff 指定备份类型为差异备份,只备份上次全量备份以来改变过的数据。
- 增量备份
--type=incr 指定备份类型为增量备份,只备份上次全量、差异、增量备份以来改过的数据库
- 查看备份集
六、执行完全恢复
1、模拟数据灾难
先关闭数据库,删除主数据目录下的所有文件,然后尝试启动数据库会显示启动失败
注意:删除隐藏文件
2、执行完全恢复
执行恢复
恢复后启动数据库实例
- 恢复结果验证
使用system用户登录test数据库
查看表t01和t02(数据都恢复成功)
注意:恢复整个集簇后时间先会发生变化,建议立即做一次全量物理备份。
七、执行不完全恢复
1、基于时间的不完全恢复
执行一次全量备份后,查看备份集信息
模拟误删除操作并执行不完全恢复
- 查看时间戳。
2023-01-03 18:11:58.541452+08
- 删除t01表。
- 正常停止数据库,删除/data目录下的所有文件。
执行不完全恢复至误删表之前的时间点(恢复到上一次正常使用的时间点)
注意:
1、如果不指定--target-action=promote选项,系统会默认使用--target-action=pause选项,此时系统处于只读状态,需要执行”select pg_wal_replay_resume()”命令是数据库切换时间线,并进入读写状态。
2、在实际工作中,往往不清楚准确的误删时间,一般需要多次恢复到、失误删除的损失降到最低。
然后启动还有登录数据库,并查看回复结果
2、基于事务ID的不完全恢复
(1)执行全备后,查看备份集信息。
(2)模拟误删操作并执行不完全恢复
开启事务,查看并记录事务ID
创建t03表、录入数据、结束事务
删除t03表
正常停止数据库,删除数据库安装目录下/data/下的所有文件
执行不完全恢复至创建t03表的事务ID
注意:
基于事务的不完全恢复需要通过 --set 参数指定需要使用的备份集,这里选择了最近一次的备份集进行恢复。
(3)恢复结果验证
启动数据库,并查看t03表及数据(t03表被成功)
- 恢复物理备份到新的目录
- 在原库创建表空间和对象
创建目录并授权
创建表空间
在新建表空间中创建表并插入2行数据。
- 在原库执行物理备份
(1)执行全量备份
(2)查看备份集
- 恢复备份到新的集簇目录中
(1)创建恢复所需要的目录并授权
(2)恢复备份到新目录中
- 修改新集簇下的监听端口并启动实例
- 修改安装目录下/data/中主配置文件的监听端口
- 执行新的数据库目录启动实例
- 登录并查看当前数据库和表空间所在目录。
- 管理和维护备份集
- 使用临时保存策略删除过期备份
- 多次全量备份后,查看当前备份集
- 使用保留策略删除备份集,保留最近两次全量备份。
- 再次查看备份集
注意:
expire #删除过期备份集
--repo1-retention-full=2 #指定保留最近两次的全量备份
可以在使用sys_rman的backup命令进行全量备份时,使用repol-retention-full临时保留策略,系统在备份的同时自动删除过期备份。
- 配置永久保留策略并删除过期备份
- 多次全量备份后,查看当前备份集。
- 在sys_rman.conf中配置永久保留策略,保留最近3次全量备份。
- 删除过期的备份集并查看当前备份集
删除过期备份集
查看删除过期备份集后剩余的备份集
- 手动删除指定备份集
使用expire命令的set选项删除指定的备份集
查看已删除
- 检查备份和归档配置可用性
使用sys_rman的check命令验证备份和归档的配置是否可用,如果配置不正确,导致系统无法正常备份和归档时,则会做出相应警告和提示。
总结
物理备份优缺点
- 优点。
- 备份速度快,是生产系统首选的备份方式。
- 支持完全恢复和不完全恢复。
- 支持读取归档日志和在线日志进行数据恢复。
- 缺点。
- 无法实现跨平台恢复,移植性较差。
- 只能在集簇级备份,不够灵活,无法选择细粒度对象备份。
- 针对数据库逻辑错误的数据恢复时不够高效和便利。