写点什么

YashanDB SQL 命令备份恢复

作者:YashanDB
  • 2025-03-21
    广东
  • 本文字数:2522 字

    阅读完需:约 8 分钟

本文内容来自 YashanDB 官网,原文内容请见 https://doc.yashandb.com/yashandb/23.3/zh/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86/%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D/SQL%E5%91%BD%E4%BB%A4%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D/00SQL%E5%91%BD%E4%BB%A4%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D.html


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


操作示例


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


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


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


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


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


3.执行数据全量备份。


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


Caution

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


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


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
复制代码


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


$ cd /YashanDB/backup/full_20211212181530 $ ls -rlttotal 504232-rw-r-rw-r-rw-r-rw-r-rw-r-rw-r-rw-r-rw-r-rw-rdrwx-rw-r-rw-r
复制代码


其中:


  • ctrl_*文件为备份的控制文件。

  • data_*文件为备份的数据文件。

  • arch_*文件为备份的归档文件。

  • redo_*文件为备份的在线日志文件,仅在备库执行备份生成的备份集中存在 。

  • 当业务中存在 LSC 表时,bucket_4_0_0.bak/下存放 LSC 表的可变数据文件。

  • backup_profile 文件为备份集元数据文件,用于备份集和数据库版本的校验,备份集恢复关键信息等。

  • backup_filelist 文件用于校验备份集数据的完整性正确性。


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


Warn

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



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


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


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
复制代码


归档文件备份恢复



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


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

# 备份示例

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


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


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


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


CREATE TABLE backuptable (b1 INT,b2 INT);  INSERT INTO backuptable VALUES (2,3); COMMIT;

ALTER SYSTEM SWITCH LOGFILE;
复制代码


SELECT SEQUENCE
复制代码


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


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';
复制代码


Note

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


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


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
复制代码


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


$ cd /YashanDB/backup/SEQUENCE_2_5 $ ls -rlttotal 16960-rw-r-rw-r-rw-r-rw-r-rw-r-rw-r
复制代码


其中:


  • arch*为独立的归档文件,arch{instanceId}{resetId}{asn}_{secId},分别表示节点的 ID,resetlogs 的 id,归档文件的序列号 ASN,归档文件的分片序列号。

  • backup_profile 文件为备份集元数据文件,用于备份集和数据库版本的校验,备份集恢复关键信息等。

  • backup_filelist 文件用于校验备份集数据的完整性正确性。

# 恢复示例

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


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


$ cd /YASDATA/archive $ ll -rlttotal 23296-rw-r-rw-r-rw-r-rw-r-rw-r

$ rm arch_0_3.ARC arch_0_5.ARC
$ ll -rlttotal 23272-rw-r-rw-r-rw-r

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


$ ll -rlttotal 23284-rw-r-rw-r-rw-r-rw-r
复制代码


发布于: 刚刚阅读数: 3
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB SQL命令备份恢复_数据库_YashanDB_InfoQ写作社区