-
什么是数据迁移?
- 定义:在不同存储类型、格式和计算机系统之间的数据转换
- 迁移时机:
- 一个企业机构决定使用新的数据库系统
- 不同版本迭代替换需要移植数据
- 特点:
- 繁锁而又单调的工作
- 一般采用半自动化/自动化方式进行
- 举例:
- 把oracle数据库移植到金仓数据库上
- 把低版本的金仓数据库移植到高版本的金仓数据库上
-
DTS迁移工具概述
- 跨平台 、图形化、可定制的通用数据迁移工具
- 允许动态加载新的数据库插件(迁移数据源):
- 插件存放在install dir\plugins目录下
- 插件的内容:
plugin.xml:系统通过识别该文件进行加载
mapping.xml:类型映射文件,用来描述从迁移数据源(插件)到目的的类型的映射关系
- 迁移方式:采用数据类型映射匹配+向导式执行进行数据迁移
- 容错能力:提供二次迁移的能力,发生各错误时,DTS仍可继续迁移
-
DTS迁移工具体系结构
- Extract Data:通过JDBC数据源抽取源端数据库各类对象的定义以及数据
- Transform Data:表和列名的大小写、 数据类型等转换
- Load Data:SQL语句、COPY命令、批量提交、单条提交等
-
DTS迁移工具功能介绍
- 部署平台:支持Linux、WindowsX86以及国产龙芯、飞腾、兆芯、申威等平台部署;
- 迁移数据源:
- 同构数据源:
- 数据迁移工具支持KES V7版本->KESv8r3版本、KES V7版本->KES V8R3版 本、 KESV8R3版本->KESV8R6的数据迁移
- (支持迁移的对象:表、约束、注释、索引、触发器、视图、物化视图、函数、 存储过程、序列、程序包、同义词)
- 异构数据源:
- 1.支持Oracle9i、10g、11g、12c、19c到KingbaseES V8R6 的数据库迁移
- (支持迁移的对象:表、约束、注释、索引、触发器、视图、物化视图、函数、 存储过程、序列、程序包、同义词)
- (支持迁移oracle11g、12c的分区表到V8R6数据库)
- 2.支持mysql5.1,mysql5.7,mysql8.0, dm7.1,神通7、sybase15.7、sybase12.5、DB2、gbase8s 到KingbaseES V8R6 的数据库迁移。
- (支持迁移的对象有表、约束、索引、注释)
- (不支持视图、物化视图、函数、存储过程、包、同义词、序列、触发器)
- 3.支持sqlserver2000、2005、2008、2012、2014、2016、2017到KingbaseES V8R6 的 数据库迁移
- (支持迁移的对象有表、约束、索引、注释)
- (不支持视图、物化视图、函数、存储过程、包、同义词、序列、触发器)
- 4.反向迁移:支持KingbaseES V8R6到Oracle11g的数据迁移(仅支持表对象)
- 同构数据源:
- 迁移场景:
- KingbaseES 数据迁移工具支持全量数据迁移、支持修改列映射关系、支持修改数据类型映射关系、支持自动转换对象名、支持表列名大小写转换、支持数据迁移条件过滤等
-
DTS迁移工具目录结构
- configuration:源库驱动配置文件以及启动工具后生成的缓存文件;
- dts:二进制工具用于启动工具
- dts.ini:工具相关的配置文件
- plugins:插件库
- static-kingbase2oracle.properties:反向迁移的依赖文件
- .kingbase:启动工具后会在安装目录生成此隐藏文件夹
- connection:工具中新建源端目标端的连接信息都会存在connection.xml中
- Results:迁移结果存储目录,以任务名称以及时间做区分
- transfer:存储新建迁移任务后生成的.kbt文件
-
DTS迁移工具启动方式
- 方式一:Windows界面
--选择『开始』|『程序』|『KingbaseES V8』|『数据迁移工具』,启动数据迁移工具。
- 方式二:Linux图形化界面
--选择应用程序---KingbaseEs V8---ClientTools---数据迁移工具,启动迁移工具。
- 方式三:命令行模式
--cd切换到KingbaseEs V8的DtsTools目录下,如:cd /home/xx/v8/DtsTools,执行./dts
-
数据迁移工具布局及迁移主流程
工具主界面
- 步骤1:数据库连接管理
- 采用JDBC方式配置数据库连接
- 支持JDBC URL参数配置
- 可以在资源管理器上对数据库连接进行删除或者编辑操作
- 数据库连接信息持久化本地,迁移时不需要重复配置连接
- 步骤2:需要选择步骤1中已建立连接的源端目标端数据库完成任务创建
- 通过图形化向导方式勾选迁移的模式及对象
- 目标库不存在该模式会自动去创建
- 支持按模式及类型筛选具体对象
- 支持搜索框只显示对象
- 步骤3:迁移配置管理,根据不同的需求可供用户随意配置
- 线程设置包含最大并发数、写缓冲大小以及数据提交量
- 最大并发数:执行迁移任务的线程数
- 写缓冲大小:迁移数据时单个线程一次写入目标库的数据量大小
- 数据提交量:迁移数据时,在目标库中一次提交的记录数
- 支持迁移表对象时设定不同的处理方式
- 重建表并导入数据:删除表后重建,导入数据
- 删除已存在表数据后导入数据:保留目标库中的同名表,删除表中数据再迁移数据---数据类型是目标表的类型,表中数据是源表数据
- 追加数据:保留目标库中表以及数据,进行数据追加
- 迁移方式默认为copy方式,暂不支持fdw
- 迁移出错处理
- 出错终止迁移:任务中出现任意一个表记录出错,工具立即结束迁移,适用于对数据准确率要求很高的场景
- 出错继续执行:当前任务中迁移出错不会影响其他任务执行
- 非对象设置:支持用户自定义非表对象迁移
- 快速迁移:只针对迁移Oracle11g,当源库包含大量对象场景下,能显著提高迁移速度
- 步骤4:完成迁移后自动显示迁移结果及生成报告
迁移结束后会自动跳转至结果界面:
1.迁移结果确认:采用提示框方式,统计此次迁移任务耗时情况
2.迁移报告:迁移对象比对
(1)分为文本报告以及柱状图报告
(2)统计各类对象迁移总数、创建成功数以及创建失败数
3.迁移报告:表数量比对
(1)统计各个表中数据量、迁移成功数量
(2)当源库表中数据量同迁移后表中数据量一致,显示Y,不一致则显示N
4.控制台输出信息:按照对象类型划分模块来显示迁移结果及耗时情况
- 步骤5:迁移日志管理
- 迁移完成后用户可以在资源管理器中找到本次迁移的日志文件:
- 文件中包含创建表的sql、迁移过程、创建主键sql和所有非表对象创建的sql语句;还包括迁移异常信息
- 在迁移过程中一旦某个对象创建失败,DTS会将该对象的创建sql保留到本次迁移任务文件夹下的ErrorScripts目录中,用户可以手动修改后通过ksql或者对象管理工具手动执行
注:迁移日志可以持久化本地,存放的位置在数据库安装路径下的.kingbase目录中
- 步骤6:二次迁移
- 数据迁移工具支持迁移出错的对象进行二次迁移,步骤如下:
- 当首次迁移时对象出错,生成迁移报告后点击出错对象,弹出二次迁移界面
- 双击出错对象,右侧在显示错误SQL以及编辑SQL框中会显示改对象的创建语句
- 在编辑SQL界面中修改为正确的语句,点击保存
- 点击确定,完成二次迁移
- 二次迁移完成后控制台输出日志显示迁移成功,且再次点击出错对象后不会该表的相关记录
-
迁移常见问题
- 数据库连接时报错:Error: Connection to 127.0.0.1:50021 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
A:排查数据库服务是否启动、连接参数:IP、端口等是否正确
- 2.源库为MYSQL,执行迁移后,中文表报错:找不到创建表的sql语句
A:在新建MySQL连接的时候,增加两个参数,useUnicode=true,characterEncoding=utf-8, 否则会报错找不到创建表的sql语句
- 3.迁移Oracle时,报错网络适配器无法建立连接>The network adapter could not establish the connection
A:排查思路:防火墙是否关闭? sqlplus是否能连接数据库? 是否开启监听服务?
- 4.执行第一次迁移报错关系不存在,执行二次迁移仍然报错?
A:部分源库的数据是迁移至非public模式下,因为服务器search_path默认为public, 导致select语句中对象查询不到,需要在二次迁移之前手动在select语句中增加模式名
【本文正在参与炫“库”行动-人大金仓有奖征文】
活动链接:https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb