DB2move命令进行全库迁移
DB2move命令进行全库迁移 点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!! 1 迁移准备 DB2版本: V9.7 准备两台虚拟机: HADR1 HADR2 2 db2move的适用情况 db2move与db2look在数据迁移中的一次实践。 适用范围: 当需要对数据库进行数据迁移时,数
来源: https://www.ucloud.cn/yun/129511.html 作者: IT那活儿 发布日期: 发布于2023-01-11 13:20
DB2move命令进行全库迁移
点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!! 1 迁移准备
**DB2版本:**V9.7
**准备两台虚拟机:**HADR1 HADR2
2
db2move的适用情况
db2move与db2look在数据迁移中的一次实践。
**适用范围:**当需要对数据库进行数据迁移时,数据迁移的首选比如是备份重定向恢复,但是部分无法进行此操作时,可以选择db2move与db2look,以及不同操作系统的数据库迁移工作等。
3
HADR1上进行的工作
首选创建一张表用于实验:
[db2inst1@HADR1 ~]$ db2 "create table cfsource2 (name varchar(10)) "DB20000I The SQL command completed successfully.
创建一个存储过程用于批量插入数据:
[db2inst1@HADR1 ~]$ db2 "CREATE PROCEDURE insert_cf () DYNAMIC RESULT SETS 1 P1: BEGIN declare a int; set a=1; loop1: LOOP if(a<=1000) then insert into cfsource2(NAME) values(f); set a=a+1; else leave loop1; end if; end loop loop1; END P1"DB20000I The SQL command completed successfully.
调用存储过程:
[db2inst1@HADR1 ~]$ db2 call insert_cfReturn Status = 0
验证数据插入结果:
[db2inst1@HADR1 ~]$ db2 "select count(*) from cfsource2"1-----------1000[db2inst1@HADR1 ~]$ db2 "select * from cfsource2 fetch first 1 rows only"NAME----------1
首先将数据库sample的表结构全部导出:
[db2inst1@HADR1 ~]$ db2look -d sample -e -l -o db2look_sample.ddl-- No userid was specified, db2look tries to use Environment variable USER-- USER is: DB2INST1-- Creating DDL for table(s)-- Output is sent to file: db2look_sample.ddl-- Binding package automatically ...-- Bind is successful-- Binding package automatically ...-- Bind is successful
将数据库sample的数据进行全库导出。
被导出的数据在没有指定目录的情况下,会被放置在当前目录。
所以最好提前创建一个目录用于放置数据:
[db2inst1@HADR1 backup]$ db2move sample exportApplication code page not determined, using ANSI codepage 1208***** DB2MOVE *****Action: EXPORTStart time: Thu Mar 4 06:18:50 2021Connecting to database SAMPLE ... successful! Server : DB2 Common Server V9.7.0EXPORT: 18 rows from table "DB2INST1"."ACT"EXPORT: 0 rows from table "DB2INST1"."CATALOG"
将存放数据的文件夹与生成的数据库表结构db2look_sample.ddl,一同传入到用于迁移恢复的目标机器HADR2中。
4
HADR2中的工作
下面,我们需要在新的DB2实例中将db2look_sample.ddl进行一些变动,变动的主要内容为如果HADR2中的数据库名与db2look_sample.ddl的数据库名不同的话,需要将db2look_sample.ddl中的数据库名进行更改,同时针对HADR2中的数据库目录对db2look_sample.ddl的数据库目录进行更改。
完成上述内容后就可以开始进行数据迁移了。
在目标库中执行db2look_sample.ddl文件:
[db2inst1@HADR1 ~]$ db2 -tvf db2look_sample.ddl
开始对sample数据库的数据进行导入:
[db2inst1@HADR1 backup]$ cd /home/db2inst1/db2inst1/backup[db2inst1@HADR1 backup]$ db2move sample load
导入完成,开始对数据进行检查:
[db2inst1@HADR1 backup]$ db2 "select * from cfsource2 fetch first 1 rows only"NAME----------11 record(s) selected.
数据存在,数据导入成功。
在进行导入的过程中,需要注意的是执行 db2move命令时的当前目录下存在被导出的数据才可以进行。
另外我们需要注意数据库的CODEPAGE编码是否相同,在执行该命令前,我们可以现使用db2set -all来查看CODEPAGE是否相同,否则数据无法进行导入。
END
本文作者:干建宇
本文来源:IT那活儿(上海新炬王翦团队)
