我的环境中有server1和server2,都安装了db2 v11.1。
我已经对数据库GS_DB进行了在线表空间(TS1,TS2,TS3)增量备份,并获得了以下3张图像。
Image1 at timestamp1: 20190215162151 (full online backup of TS1,TS2,TS3)
Image2 at timestamp2: 20190215162254 (incremental online backup of TS1,TS2,TS3)
Image3 at timestamp3: 20190215162725 (incremental online backup of TS1,TS2,TS3)
在server1中,假设我要将数据库还原到image2(20190215162254),我可以这样做:
db2ckrst -d GS_DB -t 20190215162254 -r tablespace
Suggested restore order of images using timestamp 20190215162254 for database gs_db.
====================================================================
restore db gs_db tablespace ( TS1, TS2, TS3 ) incremental taken at 20190215162254
restore db gs_db incremental taken at 20190215162151
restore db gs_db incremental taken at 20190215162254
====================================================================
如果我按照命令恢复到server1中的现有GS_DB,它就可以正常工作。
现在我将3张图像传输到server2,并在server2中创建了一个空数据库GS_DB,然后尝试使用上述命令将表空间TS1,TS2,TS3还原到server2中的GS_DB:
db2 restore db gs_db2 tablespace ( TS1, TS2, TS3 ) incremental taken at 20190215162254
SQL2560N The table space restore operation failed because the target database is not identical to the source database.
已经被第一个命令卡住了,这是否意味着我们无法跨两个不同的数据库还原表空间备份映像?有什么办法吗?
谢谢!
答案 0 :(得分:1)
每个数据库都有一个唯一的内部标识符,称为Seed
。您不能使用与现有数据库相同的Seed
创建另一个数据库,即使您使用相同的名称创建该数据库也是如此。这些数据库与DB2的观点不同。
Restoring to an existing database文章的引文:
创建数据库时,数据库管理器会分配种子。
Db2®始终使用备用图片中的种子。
仅当表空间存在并且表空间相同时,才可以将表空间还原到现有数据库中,这意味着您没有删除 表空间,然后在备份和 恢复操作。
磁盘上和备份映像中的数据库必须 一样。
因此,是的,您无法通过尝试的方式在两个不同的数据库之间还原表空间备份映像。
了解Database schema transporting功能。