第一章:产品概述
1.1 什么是KDMS?
金仓数据库迁移评估系统(Kingbase Database Migration System,简称KDMS)是一款专业的数据库迁移评估工具,专门用于将异构数据库迁移至金仓数据库KES。该系统通过智能采集、评估分析和转换改写三大核心功能,帮助用户实现高效、低风险的数据库迁移。
核心价值:
- 降低迁移风险:提前识别兼容性问题,评估迁移工作量
- 提升迁移效率:自动化采集和转换,减少人工干预
- 保障数据安全:仅采集结构信息,不接触业务数据
- 支持多种源库:Oracle、MySQL、SQL Server、DB2、Sybase等
1.2 系统架构
┌─────────────────────────────────────────────┐
│ 用户界面层 │
│ (Web管理界面/API接口/命令行工具) │
└─────────────────┬───────────────────────────┘
│
┌─────────────────▼───────────────────────────┐
│ 应用服务层 │
│ • 采集管理服务 │
│ • 评估分析服务 │
│ • 转换引擎服务 │
│ • 任务调度服务 │
└─────────────────┬───────────────────────────┘
│
┌─────────────────▼───────────────────────────┐
│ 数据处理层 │
│ • 数据采集器 (Collector) │
│ • 评估分析器 (Analyzer) │
│ • 语法转换器 (Translator) │
└─────────────────┬───────────────────────────┘
│
┌─────────────────▼───────────────────────────┐
│ 数据存储层 │
│ • 采集元数据存储 │
│ • 评估结果存储 │
│ • 转换脚本存储 │
└─────────────────────────────────────────────┘
1.3 主要功能组件
| 组件名称 | 功能描述 | 适用场景 |
|---|---|---|
| 数据库采集 | 采集源数据库结构信息(表、视图、存储过程等) | 数据库结构迁移评估 |
| 应用采集 | 采集应用程序中的SQL语句 | 应用代码迁移评估 |
| 兼容度评估 | 分析源对象与KES的兼容性 | 迁移工作量评估 |
| 智能转换 | 自动转换不兼容的语法 | 自动化迁移 |
| 报告生成 | 生成详细的迁移评估报告 | 项目决策支持 |
第二章:环境准备与部署
2.1 系统要求
2.1.1 硬件要求
| 资源类型 | 最低要求 | 推荐配置 | 说明 |
|---|---|---|---|
| CPU | 4核 | 8核及以上 | 支持x86_64或ARM架构 |
| 内存 | 16GB | 32GB | 根据采集数据量调整 |
| 磁盘空间 | 10GB | 50GB以上 | 安装目录5GB,数据目录根据需求 |
| 网络 | 千兆网卡 | 万兆网卡 | 与源数据库网络通畅 |
2.1.2 软件要求
| 软件类型 | 版本要求 | 说明 |
|---|---|---|
| 操作系统 | CentOS 7.6+、Ubuntu 18.04+、统信UOS、麒麟OS | 支持主流Linux发行版 |
| Java环境 | JDK 8或11 | 需提前安装 |
| 数据库驱动 | 根据源数据库类型准备 | Oracle、MySQL等对应驱动 |
2.2 安装部署步骤
步骤1:环境检查
# 1. 检查操作系统版本
cat /etc/os-release
# 2. 检查Java版本
java -version
# 3. 检查端口占用(默认19007端口)
netstat -tlnp | grep 19007
# 4. 检查磁盘空间
df -h /opt
# 5. 检查内存
free -h
步骤2:创建运行用户
# 创建kdms用户组和用户
groupadd kdms
useradd -g kdms -m kdms
# 设置密码
passwd kdms
# 授予sudo权限(可选)
visudo
# 添加:kdms ALL=(ALL) NOPASSWD: ALL
步骤3:安装目录准备
# 默认安装目录/opt/KDMS
mkdir -p /opt/KDMS
chown -R kdms:kdms /opt/KDMS
chmod 755 /opt/KDMS
# 或者自定义安装目录
mkdir -p /home/kdms/kdms
chown -R kdms:kdms /home/kdms/kdms
步骤4:执行安装
# 进入安装包目录
cd /path/to/installer
# 图形界面安装(需要GUI环境)
./setup.sh
# 或命令行安装
./setup.sh -console
# 安装过程步骤:
# 1. 欢迎页面 → 2. 授权许可 → 3. 安装路径设置
# 4. 服务信息配置 → 5. 安装概览 → 6. 安装 → 7. 完成
步骤5:配置修改(可选)
# 修改端口配置(如果19007端口被占用)
vi /opt/KDMS/conf/application.properties
# 修改:server.port=19008
# 修改日志级别
vi /opt/KDMS/conf/logback.xml
# 修改日志输出级别和路径
步骤6:启动服务
# 启动KDMS服务
cd /opt/KDMS/bin
./startup.sh
# 查看启动状态
ps -ef | grep kdms
tail -f /opt/KDMS/logs/startup.log
步骤7:验证安装
- 打开浏览器访问:
http://服务器IP:19007 - 使用默认账号登录:
admin/Kingbase@2024 - 确认系统首页正常显示
2.3 部署后检查
2.3.1 功能验证
# 检查服务状态
curl http://localhost:19007/health
# 预期返回:{"status":"UP"}
# 检查API接口
curl http://localhost:19007/api/v1/version
2.3.2 日志查看
| 日志文件 | 路径 | 用途 |
|---|---|---|
| 程序运行日志 | /opt/KDMS/logs/kdms-app.log |
记录系统运行状态 |
| 采集任务日志 | /opt/KDMS/logs/collector/*.log |
记录采集过程详情 |
| 评估任务日志 | /opt/KDMS/logs/analyzer/*.log |
记录评估分析过程 |
| 安装日志 | /opt/KDMS/logs/install.log |
记录安装过程 |
| 访问日志 | /opt/KDMS/logs/access.log |
记录用户访问信息 |
2.3.3 常见问题处理
问题1:端口冲突
# 解决方案:修改端口后重启
vi /opt/KDMS/conf/application.properties
# 修改server.port=其他端口(如19008)
./shutdown.sh
./startup.sh
问题2:内存不足
# 解决方案:调整JVM参数
vi /opt/KDMS/bin/startup.sh
# 修改JAVA_OPTS="-Xms4g -Xmx8g"
问题3:数据库连接失败
- 检查网络连通性:
ping 数据库IP - 检查防火墙设置
- 确认数据库服务正常运行
第三章:数据库采集指南
3.1 采集前准备
3.1.1 创建采集用户(以Oracle为例)
-- 使用SYSDBA权限账号登录
-- 创建采集用户
CREATE USER KINGBASE_USER IDENTIFIED BY kingbasePASSWORD;
-- 授予必要权限
GRANT CREATE SESSION TO KINGBASE_USER;
GRANT SELECT ANY DICTIONARY TO KINGBASE_USER;
GRANT SELECT ANY TABLE TO KINGBASE_USER;
-- 对于历史SQL采集需要额外权限
GRANT SELECT ON v_$sqlarea TO KINGBASE_USER;
GRANT SELECT ON v_$sqltext TO KINGBASE_USER;
-- 对于特定Schema采集
GRANT SELECT ON schema_name.table_name TO KINGBASE_USER;
-- 采集完成后建议删除用户
-- DROP USER KINGBASE_USER CASCADE;
3.1.2 其他数据库采集用户创建要点
MySQL采集用户:
CREATE USER 'kdms_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO 'kdms_user'@'%';
FLUSH PRIVILEGES;
-- MySQL 8.0额外需要
ALTER USER 'kdms_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
SQL Server采集用户:
-- 在目标数据库执行
CREATE LOGIN kdms_user WITH PASSWORD = 'StrongPassword123';
CREATE USER kdms_user FOR LOGIN kdms_user;
GRANT VIEW ANY DEFINITION TO kdms_user;
GRANT VIEW SERVER STATE TO kdms_user;
3.2 Oracle数据库采集
3.2.1 数据库结构采集
操作步骤:
-
登录KDMS控制台
- 访问:
http://服务器IP:19007 - 导航:数据采集 → 新建采集
- 访问:
-
选择采集类型
采集类型:数据库采集 数据库类型:Oracle 评估类型:兼容性评估(可选数据迁移工作量评估) -
填写连接信息
采集名称: Oracle-生产库-20250115 Oracle服务器IP: 192.168.1.100 Oracle端口: 1521 连接类型: SID 或 服务名(RAC环境选服务名) 服务名/SID: orcl 用户名: KINGBASE_USER 密码: ****** 数据库版本: 11g/12c/19c 待采集Schema: SCOTT,HR(注意大小写) 采集数据量大小: ☑ 是/□ 否(采集表行数和大小) -
选择对象类型
☑ TABLE(表) ☑ VIEW(视图) ☑ INDEX(索引) ☑ SEQUENCE(序列) ☑ FUNCTION(函数) ☑ PROCEDURE(存储过程) ☑ PACKAGE(包) ☑ TRIGGER(触发器) ☑ TYPE(类型) ☑ MATERIALIZED VIEW(物化视图) -
确认并开始采集
- 点击"测试连接"验证连通性
- 确认信息无误后点击"立即创建"
- 系统自动开始采集任务
采集过程监控:
-- 在Oracle端监控采集过程
SELECT sid, serial#, username, program, machine
FROM v$session
WHERE username = 'KINGBASE_USER';
-- 查看采集执行的SQL
SELECT sql_text, executions, elapsed_time
FROM v$sql
WHERE parsing_user_id = (SELECT user_id FROM dba_users WHERE username = 'KINGBASE_USER');
3.2.2 历史SQL采集
采集原理:
- 通过查询
v$sqlarea视图获取共享池中的SQL语句 - 采集字段:SQL_FULLTEXT, LOADS, LAST_ACTIVE_TIME, COMMAND_TYPE, PARSING_SCHEMA_NAME
- 支持按时间范围采集:最近1天、最近一周、最近一月
操作步骤:
- 选择采集类型:历史SQL采集
- 选择数据库类型:Oracle
- 设置采集范围:选择Schema和时间范围
- 选择对象类型(同数据库采集)
- 开始采集
注意事项:
- 历史SQL采集依赖Oracle的共享池,如果SQL已被刷出则无法采集
- 建议在业务高峰期后采集,获取更全面的SQL样本
- 对于RAC环境,需要在每个实例上采集
3.3 MySQL数据库采集
3.3.1 数据库结构采集
连接配置示例:
采集名称: MySQL-订单系统-20250115
MySQL服务器IP: 192.168.1.101
MySQL端口: 3306
数据库名: order_system
用户名: root
密码: ******
数据库版本: MySQL 5.7/8.0
特殊注意事项:
- 字符集问题:确保数据库使用UTF-8字符集
- 系统库排除:不要采集mysql、information_schema等系统库
- 权限要求:采集用户需要PROCESS和REPLICATION CLIENT权限
3.3.2 历史SQL采集(MySQL)
前置条件:
-- 1. 开启general_log
SHOW VARIABLES LIKE 'general_log';
-- 如果OFF,则开启
SET GLOBAL general_log = 'ON';
-- 2. 设置日志输出到表
SHOW VARIABLES LIKE 'log_output';
-- 如果为FILE,则改为TABLE
SET GLOBAL log_output = 'TABLE';
-- 3. 验证设置
SELECT * FROM mysql.general_log LIMIT 10;
-- 4. 采集完成后关闭(可选)
SET GLOBAL general_log = 'OFF';
性能影响说明:
- 开启general_log会对性能产生5-10%的影响
- 建议在业务低峰期开启并采集
- 采集完成后及时关闭
3.4 SQL Server数据库采集
3.4.1 常见问题处理
问题1:18456错误(登录失败)
-- 解决方案:启用混合身份验证
-- 1. 数据库属性 → 安全性 → SQL Server和Windows身份验证模式
-- 2. 重启SQL Server服务
问题2:ARITHABORT设置不正确
-- 解决方案:设置ARITHABORT为ON
ALTER DATABASE YourDatabase SET ARITHABORT ON;
-- 采集完成后恢复
ALTER DATABASE YourDatabase SET ARITHABORT OFF;
问题3:权限不足
-- 授予必要权限
GRANT VIEW ANY DEFINITION TO kdms_user;
GRANT VIEW SERVER STATE TO kdms_user;
GRANT SELECT ON sys.sql_expression_dependencies TO kdms_user;
3.5 采集任务管理
3.5.1 任务监控
在KDMS控制台可以实时监控采集任务:
- 运行状态:采集中、采集完成、采集失败
- 完成比例:实时显示采集进度
- 开始/完成时间:记录任务时间线
- 日志查看:点击"更多"查看详细日志
3.5.2 采集包下载
采集完成后生成ZIP压缩包,包含:
采集包结构:
├── COLLECTOR_META.dat # 采集元数据文件(必须)
├── SCHEMA1/ # Schema目录
│ ├── TABLES/ # 表定义
│ ├── VIEWS/ # 视图定义
│ ├── PROCEDURES/ # 存储过程
│ └── ...
├── SCHEMA2/
└── summary.json # 采集摘要信息
重要提示:
COLLECTOR_META.dat是评估的必要文件,不可丢失- 不同采集任务的采集包不能混用
- 采集包大小通常为几MB到几GB,取决于对象数量
3.5.3 立即评估功能
如果部署环境安装了评估插件,采集完成后可直接点击"立即评估":
- 评估名称默认使用采集名称
- 目标KES版本默认KES_V9
- 兼容模式根据源数据库自动选择
- 评估结果可在评估管理页面查看
本使用指南基于KDMS官方文档和实践经验编写,适用版本:KDMS V004R001C001及以上,具体操作请以实际版本为准。