达梦数据库产品架构DM8 采用了独特的双存储引擎架构,行存储引擎和列存储引擎可相互配合、协同工作。同时实现了计算层和存储层的分离,同一内核既支持共享存储式集群,也支持分布式事务集群。 相较于目前主流产品架构——不同特性依靠不同内核去实现,DM8 架构为业界首创,也是未来数据库架构的发展方向。
物理备份就是把这些数据文件中的有效数据页备份起来,在出现故障时,用于恢复数据。一份完整的物理备份包括数据备份和 REDO 日志备份两部分。数据备份是拷贝数据页内容,REDO 日志备份则是拷贝备份过程中产生的 REDO 日志。参考原理图如下:
#备份保存目录mkdir -p /data/dm/dmbak/#授权chown -R dmdba:dinstall /data/dm/
命令行开启归档方法
##修改数据库为 Mount 状态ALTER DATABASE MOUNT;##开启归档模式ALTER DATABASE ARCHIVELOG;##配置本地归档ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm_arch/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';##修改数据库为 Open 状态ALTER DATABASE OPEN;##查看归档是否开启select arch_mode from v$database;
经过上面的准备,我们针对不同情况下的数据备份恢复进行实战模拟。主要包含如下三种情况:
此次情况主要模拟存在全量备份的情况,如何恢复数据。
1、创建测试表[dmdba@test bin]$ ./disqlSQL> drop table test;操作已执行已用时间: 44.893(毫秒). 执行号:105.SQL> create table test (a int );操作已执行已用时间: 50.759(毫秒). 执行号:106.SQL> insert into test values (1);影响行数 1已用时间: 2.066(毫秒). 执行号:107.SQL> commit;操作已执行已用时间: 24.325(毫秒). 执行号:108.2、执行全量备份SQL> backup database full backupset '/data/dm/dmbak/fullbak';操作已执行已用时间: 00:00:06.271. 执行号:109.3、假设此时出现故障,数据库宕机4、利用之前的全量备份进行还原[dmdba@test bin]$ ./dmrmanRMAN> restore database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/fullbak';restore database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/fullbak';[Percent:100.00%][Speed:0.00M/s][Cost:00:00:03][Remaining:00:00:00] restore successfully.time used: 00:00:03.8515、还原后恢复[dmdba@test bin]$ ./dmrmanRMAN> recover database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/fullbak';recover database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/fullbak';[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00] recover successfully!time used: 00:00:02.8266、更新数据库魔数[dmdba@test bin]$ ./dmrmanRMAN> recover database '/data/dm/data/DAMENG/dm.ini' update db_magic;recover database '/data/dm/data/DAMENG/dm.ini' update db_magic;recover successfully!time used: 00:00:01.1597、启动数据库/home/dmdba/dmdbms/bin/DmServiceDMSERVER_01 start
此次情况主要模拟存在全量备份和增量备份的情况,如何恢复数据。例如每周日全备,其余时间增量备份的情形,该情况也是生产上使用最多的备份方案。
1、创建测试表[dmdba@test bin]$ ./disqlSQL> drop table test;操作已执行已用时间: 44.893(毫秒). 执行号:105.SQL> create table test (a int );操作已执行已用时间: 50.759(毫秒). 执行号:106.SQL> insert into test values (1);影响行数 1已用时间: 2.066(毫秒). 执行号:107.SQL> commit;操作已执行已用时间: 24.325(毫秒). 执行号:108.2、执行全量备份SQL> backup database full backupset '/data/dm/dmbak/fullbak';操作已执行已用时间: 00:00:06.271. 执行号:109.3、插入数据2后执行增量备份[dmdba@test bin]$ ./disqlSQL> insert into test values (2);影响行数 1已用时间: 2.945(毫秒). 执行号:110.SQL> commit;操作已执行已用时间: 5.231(毫秒). 执行号:111.SQL> backup database increment backupset '/data/dm/dmbak/incbak_1';操作已执行已用时间: 00:00:10.950. 执行号:112.4、假设此时出现故障,数据库宕机5、还原数据库[dmdba@test bin]$ ./dmrmanRMAN> restore database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/incbak_1';recover database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/incbak_1';[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00] recover successfully!time used: 00:00:02.6636、恢复数据库[dmdba@test bin]$ ./dmrmanRMAN> recover database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/incbak_1';recover database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/incbak_1';[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00] recover successfully!time used: 00:00:02.6637、更新数据库魔数[dmdba@test bin]$ ./dmrmanRMAN> recover database '/data/dm/data/DAMENG/dm.ini' update db_magic;recover database '/data/dm/data/DAMENG/dm.ini' update db_magic;recover successfully!time used: 00:00:01.1598、启动数据库/home/dmdba/dmdbms/bin/DmServiceDMSERVER_01 start
1、创建测试表[dmdba@test bin]$ ./disqlSQL> drop table test;操作已执行已用时间: 44.893(毫秒). 执行号:105.SQL> create table test (a int );操作已执行已用时间: 50.759(毫秒). 执行号:106.SQL> insert into test values (1);影响行数 1已用时间: 2.066(毫秒). 执行号:107.SQL> commit;操作已执行已用时间: 24.325(毫秒). 执行号:108.2、执行全量备份SQL> backup database full backupset '/data/dm/dmbak/fullbak';操作已执行已用时间: 00:00:06.271. 执行号:109.3、插入数据2后执行增量备份[dmdba@test bin]$ ./disqlSQL> insert into test values (2);影响行数 1已用时间: 2.945(毫秒). 执行号:110.SQL> commit;操作已执行已用时间: 5.231(毫秒). 执行号:111.SQL> backup database increment backupset '/data/dm/dmbak/incbak_1';操作已执行已用时间: 00:00:10.950. 执行号:112.4、插入数据3,并查看时间[dmdba@test bin]$ ./disqlSQL> insert into test values (3);影响行数 1已用时间: 1.990(毫秒). 执行号:115.SQL> commit;操作已执行已用时间: 4.966(毫秒). 执行号:116.5、假设此时出现故障,数据库宕机6、还原[dmdba@test bin]$ ./dmrmanRMAN> restore database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/incbak_1' ;restore database '/data/dm/data/DAMENG/dm.ini' from backupset '/data/dm/dmbak/incbak_1';file dm.key not found, use default license![Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00] restore successfully.time used: 00:00:04.4137、恢复[dmdba@test bin]$ ./dmrmanRMAN> recover database '/data/dm/data/DAMENG/dm.ini' with archivedir '/data/dm/arch' ;recover database '/data/dm/data/DAMENG/dm.ini' with archivedir '/data/dm/arch';[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00] recover successfully!time used: 645.327(ms)8、更新数据库魔数RMAN> recover database '/data/dm/data/DAMENG/dm.ini' update db_magic;recover database '/data/dm/data/DAMENG/dm.ini' update db_magic;recover successfully!time used: 00:00:01.1599、启动数据库/home/dmdba/dmdbms/bin/DmServiceDMSERVER_01 start
袋鼠云专注于可观测运维,致力解决企业上云难、用云难、管云难三大问题。基于云数据库提供7*24小时保障服务,提供开发支持、数据库体系规范、持续优化、数据库架构支持,保障企业数据库高效稳定运行。全面提升企业的运维效率和稳定性,助力企业完成云时代的数字化转型,满足客户在数据库管理和云迁移方面的多样化需求!