YashanDB SQL命令备份恢复

本文内容来自YashanDB官网,原文内容请见 doc.yashandb.com/yashandb/23...

SQL命令方式的备份恢复操作适用于单机/共享集群部署的数据库。

操作示例

以下为对单机部署的数据库执行备份恢复的模拟场景:

1.通过yasql连接数据库,将数据库切换到归档模式,归档模式必须在数据库MOUNT状态下才能开启。

shell 复制代码
$ yasql sales/sales
 
SQL> ALTER DATABASE ARCHIVELOG;

Copied!

2.模拟业务场景,在数据库中创建表并插入数据。

sql 复制代码
CREATE TABLE backuptable (b1 INT,b2 INT); 
 
INSERT INTO backuptable VALUES (2,3);
 
COMMIT;

Copied!

3.执行数据全量备份。

sql 复制代码
BACKUP DATABASE FULL FORMAT '/YashanDB/backup/full_20211212181530';

Copied!

Caution

确保"/YashanDB/backup"目录存在且YashanDB安装用户具有读写权限,如果指定的数据备份目录已存在,则会触发 YAS-00318 错误。

4.使用具有DBA权限的用户查询DBA_BACKUP_SET视图,检查备份详情。

sql 复制代码
SELECT RECID

 
      RECID

           1 2023-06-19                       2023-06-19                       FULL                        0             0 /YashanDB/backup/full_20211212181530                      bak_2023061902151684                                                             53767 NONE                       516325376             516325376             8                 51469            8                 51471 NONE          NONE        
                    

Copied!

5.检查生成的备份集物理文件。

diff 复制代码
$ cd /YashanDB/backup/full_20211212181530 
$ ls -rlt
total 504232
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
drwx
-rw-r
-rw-r

Copied!

其中:

  • ctrl_*文件为备份的控制文件。
  • data_*文件为备份的数据文件。
  • arch_*文件为备份的归档文件。
  • redo_*文件为备份的在线日志文件,仅在备库执行备份生成的备份集中存在 。
  • 当业务中存在LSC表时,bucket_4_0_0.bak/下存放LSC表的可变数据文件。
  • backup_profile文件为备份集元数据文件,用于备份集和数据库版本的校验,备份集恢复关键信息等。
  • backup_filelist文件用于校验备份集数据的完整性正确性。

6.模拟灾难场景,删除数据库文件。

Warn

以下操作只能在测试环境上执行,请勿直接在生产环境上测试。

shell 复制代码
$ cd $YASDB_DATA/dbfiles
$ rm -rf ./*
$ ls -rlt
total 0

Copied!

7.重启数据库到NOMOUNT状态,执行恢复,然后检查新增数据是否恢复。

sql 复制代码
SHUTDOWN IMMEDIATE;
exit;
 
$ yasboot cluster start -c yashandb -m nomount
 
$ yasql sales/sales
 
SQL> RESTORE DATABASE FROM '/YashanDB/backup/full_20211212181530';
 
RECOVER DATABASE;
 
ALTER DATABASE OPEN;
 
SELECT b1,b2 FROM backuptable;

          B1           B2 

           2            3

Copied!

归档文件备份恢复


归档日志备份恢复的SQL命令操作方式适用于单机/共享集群部署的数据库。

以下为对单机部署的数据库执行归档备份和恢复的模拟场景:

# 备份示例

使用本方式执行备份时,要求数据库运行于OPEN状态且归档模式开启。

1.通过yasql连接数据库,将数据库切换到归档模式,归档模式必须在数据库MOUNT状态下才能开启。

shell 复制代码
$ yasql username/password
 
SQL> ALTER DATABASE ARCHIVELOG;

Copied!

2.模拟业务场景,在数据库中创建表并插入数据,并执行多次切换LOGFILE生成多个归档。

sql 复制代码
CREATE TABLE backuptable (b1 INT,b2 INT); 
 
INSERT INTO backuptable VALUES (2,3);
 
COMMIT;


ALTER SYSTEM SWITCH LOGFILE;

Copied!

sql 复制代码
SELECT SEQUENCE

Copied!

3.指定归档的SEQUENCE区间备份。

sql 复制代码
SELECT SEQUENCE

   SEQUENCE

           1    525940019749924864    525940036244176896
           2    525940036244176896    525940261064138752
           3    525940261064138752    525940261064138752
           4    525940261064138752    525940261064138752
           5    525940261064138752    525940400603951104



BACKUP ARCHIVELOG SEQUENCE BETWEEN  2 AND 5  FORMAT '/YashanDB/backup/SEQUENCE_2_5';

Copied!

Note

因为上述示例中在切日志期间并未做任何业务,所以部分归档的SCN起始是一样的,实际生产环境中表现正常。

4.使用具有DBA权限的用户查询DBA_ARCHIVE_BACKUPSET视图,检查备份详情。

sql 复制代码
SELECT RECID

               RECID

                    1                1 2024-01-26                                       2024-01-26                                       ARCHIVE       /YashanDB/backup/SEQUENCE_2_5                                       bak_2024012611380123                                             NONE          NONE           NONE                      17362944              17362944               2             5    525940036244176896    525940400603951104                                                 

Copied!

5.检查生成的备份集物理文件。

diff 复制代码
$ cd /YashanDB/backup/SEQUENCE_2_5 
$ ls -rlt
total 16960
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r

Copied!

其中:

  • arch*为独立的归档文件,arch{instanceId}{resetId}{asn}_{secId},分别表示节点的ID,resetlogs的id,归档文件的序列号ASN,归档文件的分片序列号。
  • backup_profile文件为备份集元数据文件,用于备份集和数据库版本的校验,备份集恢复关键信息等。
  • backup_filelist文件用于校验备份集数据的完整性正确性。

# 恢复示例

使用本方式执行恢复时,要求当前数据库实例处于执行完RESTORE且未执行RECOVER的MOUNT状态,然后检查归档文件是否恢复到指定目录。

除指定SEQUENCE区间外,也可指定为时间、SCN区间,详见BACKUP ARCHIVELOG

diff 复制代码
$ cd /YASDATA/archive 
$ ll -rlt
total 23296
-rw-r
-rw-r
-rw-r
-rw-r
-rw-r


$ rm arch_0_3.ARC arch_0_5.ARC

$ ll -rlt
total 23272
-rw-r
-rw-r
-rw-r


SQL> RESTORE ARCHIVELOG SEQUENCE BETWEEN 2 AND 4 FROM SEARCHDIR '/YashanDB/backup';



$ ll -rlt
total 23284
-rw-r
-rw-r
-rw-r
-rw-r

Copied!

相关推荐
卡皮巴拉爱吃小蛋糕13 分钟前
MySQL的MVCC【学习笔记】
数据库·笔记·mysql
农民也会写代码14 分钟前
dedecms织梦arclist标签noflag属性过滤多个参数
开发语言·数据库·sql·php·dedecms
m0_7482329220 分钟前
你还在手动画ER图吗?让SQL自动生成ER图,轻松解决作业难题!
数据库·sql·oracle
清流君23 分钟前
【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作
数据库·人工智能·笔记·mysql·ue5·数字孪生
邂逅岁月23 分钟前
MySQL表的增删改查初阶(下篇)
数据库·sql·mysql
Python_金钱豹24 分钟前
Text2SQL零代码实战!RAGFlow 实现自然语言转 SQL 的终极指南
前端·数据库·sql·安全·ui·langchain·机器人
静听夜半雨26 分钟前
CANoe入门——3、新建LIN工程及LIN DataBase(LDF文件)的创建
网络·数据库·c++·编辑器
DarkAthena1 小时前
【ORACLE】记录一些ORACLE的merge into语句的BUG
数据库·oracle·bug
大新新大浩浩2 小时前
arm64适配系列文章-第三章-arm64环境上mariadb的部署
数据库·arm·mariadb
聪明的墨菲特i2 小时前
SQL进阶知识:九、高级数据类型
xml·数据库·sql·mysql·json·空间数据类型