YashanDB备份恢复之物理备份

本文介绍了如何在YashanDB中执行物理备份,包括使用yasql和yasrman工具进行全量、增量备份,以及备份的加密和压缩功能。对比了YashanDB与ORACLE在备份策略上的异同点。
摘要由CSDN通过智能技术生成

        数据是企业的核心资产和生命线。怎样确保在故障或极端的情况下,数据能够有效且快速地恢复,以最大限度避免或减少企业的损失。数据恢复的前提必须依赖于备份策略及有效的备份集,因此,备份重于泰山,一点都不为过。

        通常我们的备份恢复主要用于以下场景:

  • 监管要求:如金融行业,数据保存年限,有严格的要求
  • 数据保护:防止软/硬件损坏、人为误操作等对数据的破坏
  • 环境构建:如搭建备库、恢复准生产环境或开发测试环境等

        今天主要介绍YashanDB的物理备份,如果您之前有ORACLE相关备份恢复经验,那本章节内容将是得心应手。YashanDB也提供了yasrman工具(类似ORACLE的rman备份工具),以及在SQL命令中直接进行备份。

[yashan@vms71 ~]$ cd $YASDB_HOME
[yashan@vms71 23.1.1.100]$ 
[yashan@vms71 23.1.1.100]$ cd bin
[yashan@vms71 bin]$ 
[yashan@vms71 bin]$ ll
total 62612
-rwxr-xr-x 1 yashan yashan   101320 Oct 19  2023 exp
-rwxr-xr-x 1 yashan yashan    79944 Oct 19  2023 imp
-rwxrwxr-x 1 yashan yashan 19865208 Oct 19  2023 yasagent
-rwxrwxr-x 1 yashan yashan  5986112 Oct 19  2023 yasbak
-rwxrwxr-x 1 yashan yashan  9381440 Oct 19  2023 yasboot
-rwxr-xr-x 1 yashan yashan   954296 Oct 19  2023 yascs
-rwxr-xr-x 1 yashan yashan   181096 Oct 19  2023 yasdb
-rwxr-xr-x 1 yashan yashan   779640 Oct 19  2023 yasldr
-rwxr-xr-x 1 yashan yashan  1092704 Oct 19  2023 yasminer
-rwxrwxr-x 1 yashan yashan 21896816 Oct 19  2023 yasom
-rwxr-xr-x 1 yashan yashan    66072 Oct 19  2023 yaspwd
-rwxr-xr-x 1 yashan yashan   645680 Oct 19  2023 yasql
-rwxr-xr-x 1 yashan yashan   137992 Oct 19  2023 yasrepair
-rwxr-xr-x 1 yashan yashan   773256 Oct 19  2023 yasrman
-rwxr-xr-x 1 yashan yashan   120136 Oct 19  2023 yaswrap
-rwxr-xr-x 1 yashan yashan   342816 Oct 19  2023 ycsctl
-rwxr-xr-x 1 yashan yashan   590416 Oct 19  2023 yex_server
-rwxr-xr-x 1 yashan yashan   204128 Oct 19  2023 yfsbenchmark
-rwxr-xr-x 1 yashan yashan   613024 Oct 19  2023 yfscmd
-rwxr-xr-x 1 yashan yashan   220712 Oct 19  2023 yfsminer
-rwxr-xr-x 1 yashan yashan    46304 Oct 19  2023 yfssrv

        YashanDB的物理备份方式,也提供了类似ORACLE的全量备份、增量备份(包含差异备份和累积备份),同时还支持备份的加密、压缩等功能。语法也高度兼容ORACLE,可以说很大程度上降低了知识迁移的成本。


下面咱们先来体验一下YashanDB的物理备份。

方式一:在SQL命令行,进行物理备份

1、通过yasql,以管理员身份登录数据库,执行backup database full命令进行全量备份。没压缩的情况下,备份集大小约3.6GB

[yashan@vms71 ~]$ yasql / as sysdba
YashanDB SQL Personal Edition Release 23.1.1.100 x86_64

Connected to:
YashanDB Server Personal Edition Release 23.1.1.100 x86_64 - X86 64bit Linux

SQL> backup database full tag '240504_bak_full' parallelism 4;

Succeed.

SQL> set time on
SQL> select type, increment_level, path, tag, output_bytes / 1048576 size_mb from dba_backup_set;

TYPE          INCREMENT_LEVEL PATH                                                             TAG                                                                  SIZE_MB 
------------- --------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ----------- 
FULL                        0 /home/yashan/yasdb_data/db-1-1/backup/bak_2024050411071881       240504_bak_full                                                   3610.59766

1 row fetched.

Elapsed: 00:00:00.001
SQL> 

2、通过delete backupset命令,删除前面的备份集

SQL> backup database delete backupset tag '240504_bak_full';

Succeed.

Elapsed: 00:00:00.243
SQL> 

3、对数据库做一个level 0增量备份

SQL> backup database incremental level 0 tag '240504_lev0';

Succeed.

Elapsed: 00:00:08.411
SQL> 
SQL> 
SQL> select type, increment_level, path, tag, output_bytes / 1048576 size_mb from dba_backup_set;

TYPE          INCREMENT_LEVEL PATH                                                             TAG                                                                  SIZE_MB 
------------- --------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ----------- 
INCREMENTAL                 0 /home/yashan/yasdb_data/db-1-1/backup/bak_2024050411114908       240504_lev0                                                       3565.24219

1 row fetched.

Elapsed: 00:00:00.000

4、对数据库做一个level 1增量备份

SQL> backup database incremental level 1 tag '240504_lev1';

Succeed.

Elapsed: 00:00:02.084
SQL> select type, increment_level, path, tag, output_bytes / 1048576 size_mb from dba_backup_set;

TYPE          INCREMENT_LEVEL PATH                                                             TAG                                                                  SIZE_MB 
------------- --------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ----------- 
INCREMENTAL                 0 /home/yashan/yasdb_data/db-1-1/backup/bak_2024050411114908       240504_lev0                                                       3565.24219
INCREMENTAL                 1 /home/yashan/yasdb_data/db-1-1/backup/bak_2024050411133628       240504_lev1                                                         40.40625

2 rows fetched.

Elapsed: 00:00:00.000

5、开启压缩,级别为low,全备时,备份集大小约为473MB,与前面未开启压缩比对,压缩比约1:7.6

SQL> backup database compression algorithm zstd low tag '240504_full_comp';

Succeed.

Elapsed: 00:00:04.383
SQL> select type, increment_level, path, tag, output_bytes / 1048576 size_mb from dba_backup_set;

TYPE          INCREMENT_LEVEL PATH                                                             TAG                                                                  SIZE_MB 
------------- --------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ----------- 
FULL                        0 /home/yashan/yasdb_data/db-1-1/backup/bak_2024050411162384       240504_full_comp                                                  472.509277

1 row fetched.

Elapsed: 00:00:00.000

方式二:通过yasrman工具,进行物理备份

1、若未创建catalog目录(类似ORACLE的catalog。用于存放备份集、备份的元数据信息及一些配置信息等),请先执行以下命令创建catalog

[yashan@vms71 ~]$ yasrman sys/pwd666@192.168.26.71:1688 -c "create catalog" -D /home/yashan/catalog

create catalog successfully

[yashan@vms71 ~]$ 

2、配置config.ini信息,其中,命令configure DEST SERVER|CLIENT,当值为SERVER时(缺省值),代表备份集将存放于$YASDB_DATA/backup目录。若值为CLIENT,则代表备份集将存放于catalog/backup目录下

[yashan@vms71 ~]$ yasrman sys/pwd666@192.168.26.71:1688 -c 'configure DEST SERVER' -D /home/yashan/catalog

configure successfully

[yashan@vms71 ~]$ 

3、执行backup database full,对数据库进行全备,由于前面DEST设置为SERVER,因此,可以看到备份集最终存放在 $YASDB_DATA/backup目录

[yashan@vms71 ~]$ more catalog/config.ini 
DEST = SERVER
[yashan@vms71 ~]$ 
[yashan@vms71 ~]$ ll catalog/backup/
total 0
[yashan@vms71 ~]$ 
[yashan@vms71 ~]$ yasrman sys@192.168.26.71:1688 -c "backup database full tag '20240504_full_bak_rman' " -D /home/yashan/catalog
[Node 0]YAS-02143 invalid username/password, login denied 
[yashan@vms71 ~]$ yasrman sys/pwd666@192.168.26.71:1688 -c "backup database full tag '20240504_full_bak_rman' " -D /home/yashan/catalog

backup successfully

[yashan@vms71 ~]$ ll catalog/backup/
total 0
[yashan@vms71 ~]$ ls $YASDB_DATA/backup/bak_2024050412050152 
arch0_0_67_0.bak  data_1_0_0.bak   data_4_0_12.bak  data_4_0_18.bak  data_4_0_23.bak  data_4_0_7.bak  data_6_0_0.bak
backup_filelist   data_2_0_0.bak   data_4_0_13.bak  data_4_0_19.bak  data_4_0_2.bak   data_4_0_8.bak  data_6_1_0.bak
backup_profile    data_3_0_0.bak   data_4_0_14.bak  data_4_0_1.bak   data_4_0_3.bak   data_4_0_9.bak  data_6_2_0.bak
bucket_4_0_0.bak  data_4_0_0.bak   data_4_0_15.bak  data_4_0_20.bak  data_4_0_4.bak   data_5_0_0.bak  data_6_3_0.bak
ctrl_0_0_0.bak    data_4_0_10.bak  data_4_0_16.bak  data_4_0_21.bak  data_4_0_5.bak   data_5_0_1.bak  data_6_4_0.bak
data_0_0_0.bak    data_4_0_11.bak  data_4_0_17.bak  data_4_0_22.bak  data_4_0_6.bak   data_5_0_2.bak
[yashan@vms71 ~]$

4、通过show all命令,查看yasrman的一些配置,如:并行度、压缩算法、压缩级别、备份集存储位置等

[yashan@vms71 ~]$ yasrman sys/pwd666@192.168.26.71:1688 -c 'show all' -D /home/yashan/catalog
+---------------------------+-----------+----------------+
|           NAME            |  DEFAULT  |      VALUE     |
+---------------------------+-----------+----------------+
| PARALLELISM               | 2         | 2              |
| SECTION SIZE              | 134217728 | 134217728      |
| COMPRESSION ALGORITHM     | NONE      | NONE           |
| COMPRESSION LEVEL         | LOW       | LOW            |
| DEST                      | SERVER    | SERVER         |
+---------------------------+-----------+----------------+
[yashan@vms71 ~]$ 

小结:通过上面两种物理方式备份,我们可以看到YashanDB与ORACLE的兼容性相对较高,但细节上与ORACLE还是存在一些差距(如下所示)。Anyway,我相信,只有经过不同场景的打磨,国产数据库将变得越来越好。

  • show all命令,YashanDB提供的配置项较少,只有5个,而ORACLE提供的内容很丰富,如备份窗口的保留策略、备份集的冗余策略、参数文件/控制文件自动备份等等
  • 执行备份时,没有实时的备份信息输出,这让终端用户搞不清楚备份作业是否存在卡死或备份进展等
  • yasrman工具每次执行一条命令,都需要进行登录认证(不能像ORACLE一样,直接通过rman / target进行认证后,可以执行各种命令),且需要在命令行上输入明文密码,这是不符合安全合规要求

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值