达梦数据库利用归档恢复的方法测试

📅 发布时间:2026/9/7 20:46:25
达梦数据库利用归档恢复的方法测试 第一种情况一号机配置归档后将实例目录拷贝二号机器启动数据库删除自己产生的归档只用一号库的归档1号机 创建实例1号机注册服务启动重启1号机器的归档文件目录为空1号机器配置归档ALTER DATABASE MOUNT;ALTER DATABASE ARCHIVELOG;ALTER DATABASE ADD ARCHIVELOG DEST/data/dmarch, TYPELOCAL, FILE_SIZE2048, SPACE_LIMIT51200;ALTER DATABASE OPEN;归档已经开启。二号机器的情况 目录下没有任何数据停掉一号机器的服务将一号机器的实例目录拷贝到二号机一号机器进行建表插入数据刷盘CREATE TABLE test_archive (id INT PRIMARY KEY,name VARCHAR(20));INSERT INTO test_archive VALUES (1, A);INSERT INTO test_archive VALUES (2, B);INSERT INTO test_archive VALUES (3, C);INSERT INTO test_archive VALUES (4, D);INSERT INTO test_archive VALUES (5, E);COMMIT;查看生成的归档文件将生成的归档文件进行scp传输到二号机器的/data/dmarch目录下。已经传到二号机器下二号机数据库可以正常启动二号机启动停掉之后会产一个归档日志删掉多余的那个日志dmrman执行RESTORE DATABASE /data/dmdata/DAMENG/dm.ini FOR RECOVER;RECOVER DATABASE /data/dmdata/DAMENG/dm.ini WITH ARCHIVEDIR /data/dmarch;RECOVER DATABASE /data/dmdata/DAMENG/dm.ini UPDATE DB_MAGIC;出现问题第二种情况在一号机配置归档前将实例目录拷贝二号机器恢复之前不进行任何操作一号机器没有数据二号机器没有数据一号机器进行初始化启停数据库将实例目录scp到二号机上二号机接收无误一号机器开启归档进行归档配置一号机器进行建表插入并刷盘的操作CREATE TABLE test_archive (id INT PRIMARY KEY,name VARCHAR(20));INSERT INTO test_archive VALUES (1, A);INSERT INTO test_archive VALUES (2, B);INSERT INTO test_archive VALUES (3, C);INSERT INTO test_archive VALUES (4, D);INSERT INTO test_archive VALUES (5, E);COMMIT;一号机器产生一个归档进行scp传输归档文件二号库收到二号机进行恢复RESTORE DATABASE /data/dmdata/DAMENG/dm.ini FOR RECOVER;RECOVER DATABASE /data/dmdata/DAMENG/dm.ini WITH ARCHIVEDIR /data/dmarch;RECOVER DATABASE /data/dmdata/DAMENG/dm.ini UPDATE DB_MAGIC;二号机任何操作都没有进行又出现如下问题第三种情况一号机配置归档后将实例目录拷贝二号机器恢复之前不进行任何操作一号机二号机都没有数据一号机进行数据库实例创建一号机开启归档停掉服务将一号机的实例目录scp到二号机下‘二号机器收到一号机器进行建表插入并刷盘的操作CREATE TABLE test_archive (id INT PRIMARY KEY,name VARCHAR(20));INSERT INTO test_archive VALUES (1, A);INSERT INTO test_archive VALUES (2, B);INSERT INTO test_archive VALUES (3, C);INSERT INTO test_archive VALUES (4, D);INSERT INTO test_archive VALUES (5, E);COMMIT;一号机器将归档文件scp到二号机器二号库收到二号库不启动直接执行恢复操作RESTORE DATABASE /data/dmdata/DAMENG/dm.ini FOR RECOVER;RECOVER DATABASE /data/dmdata/DAMENG/dm.ini WITH ARCHIVEDIR /data/dmarch;RECOVER DATABASE /data/dmdata/DAMENG/dm.ini UPDATE DB_MAGIC;成功了。第四种情况一号机配置归档后将实例目录拷贝二号机器启动数据库用拷贝的和自己产生的归档进行恢一号机器二号机器初始没有任何数据一号机器进行初始化实例一号机器配置归档停掉一号机器的服务将实力目录scp到二号机器二号机器收到一号机器进行建表插入并刷盘的操作CREATE TABLE test_archive (id INT PRIMARY KEY,name VARCHAR(20));INSERT INTO test_archive VALUES (1, A);INSERT INTO test_archive VALUES (2, B);INSERT INTO test_archive VALUES (3, C);INSERT INTO test_archive VALUES (4, D);INSERT INTO test_archive VALUES (5, E);COMMIT;一号机器将生成的归档scp到二号机器二号机器成功收到二号机器启动服务命令行成功启动二号机器停库之后多了一个归档文件直接通过归档恢复不动新生成的归档。RESTORE DATABASE /data/dmdata/DAMENG/dm.ini FOR RECOVER;RECOVER DATABASE /data/dmdata/DAMENG/dm.ini WITH ARCHIVEDIR /data/dmarch;RECOVER DATABASE /data/dmdata/DAMENG/dm.ini UPDATE DB_MAGIC;归档日志重叠了。第五种情况当我用快照的方式还原到另一台服务器上 服务注册的是mount状态启动。目的是不让他产生日志停掉服务进行归档还原。通过归档恢复成功了第六种情况通过一个系统过程进行联机恢复SP_APPLY_ARCH_UNTIL_TIME() 联机进行恢复这个方法是备库去手动归档同时也可以实现通过归档去恢复。建议通过拍快照的方式还原拍快照时数据库必须mount状态拍完快照后open源库新库想要恢复到拍快照后的某一时刻可以通过系统过程SP_APPLY_ARCH_UNTIL_TIME()来进行恢复。总结通过归档去恢复数据库被恢复的库不能产生自己的归档否则恢复时就会报归档重复或归档不连续的错误。了解达梦更多信息eco.dameng.com