金仓数据库迁移评估系统(KDMS)使用指南(一)

第一章:产品概述

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:验证安装
  1. 打开浏览器访问:http://服务器IP:19007
  2. 使用默认账号登录:admin / Kingbase@2024
  3. 确认系统首页正常显示

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 数据库结构采集

操作步骤

  1. 登录KDMS控制台

    • 访问:http://服务器IP:19007
    • 导航:数据采集 → 新建采集
  2. 选择采集类型

    复制代码
    采集类型:数据库采集
    数据库类型:Oracle
    评估类型:兼容性评估(可选数据迁移工作量评估)
  3. 填写连接信息

    复制代码
    采集名称: Oracle-生产库-20250115
    Oracle服务器IP: 192.168.1.100
    Oracle端口: 1521
    连接类型: SID 或 服务名(RAC环境选服务名)
    服务名/SID: orcl
    用户名: KINGBASE_USER
    密码: ******
    数据库版本: 11g/12c/19c
    待采集Schema: SCOTT,HR(注意大小写)
    采集数据量大小: ☑ 是/□ 否(采集表行数和大小)
  4. 选择对象类型

    复制代码
    ☑ TABLE(表)
    ☑ VIEW(视图)
    ☑ INDEX(索引)
    ☑ SEQUENCE(序列)
    ☑ FUNCTION(函数)
    ☑ PROCEDURE(存储过程)
    ☑ PACKAGE(包)
    ☑ TRIGGER(触发器)
    ☑ TYPE(类型)
    ☑ MATERIALIZED VIEW(物化视图)
  5. 确认并开始采集

    • 点击"测试连接"验证连通性
    • 确认信息无误后点击"立即创建"
    • 系统自动开始采集任务

采集过程监控

复制代码
-- 在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天、最近一周、最近一月

操作步骤

  1. 选择采集类型:历史SQL采集
  2. 选择数据库类型:Oracle
  3. 设置采集范围:选择Schema和时间范围
  4. 选择对象类型(同数据库采集)
  5. 开始采集

注意事项

  • 历史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

特殊注意事项

  1. 字符集问题:确保数据库使用UTF-8字符集
  2. 系统库排除:不要采集mysql、information_schema等系统库
  3. 权限要求:采集用户需要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及以上,具体操作请以实际版本为准。

相关推荐
@土豆1 小时前
ETCD集群部署指导(复制粘贴即可完成构建)
服务器·数据库·etcd
白叔King2 小时前
支付中 同步回调和异步回调的区别与作用!
数据库
如意机反光镜裸2 小时前
excel怎么快速导入oracle
数据库·oracle·excel
卤炖阑尾炎2 小时前
MySQL 数据库操作从入门到精通
数据库·mysql
茶本无香2 小时前
Greenplum全面解析:架构、优缺点与同类产品对比
数据库
来一杯热Java2 小时前
【MyBatis-Plus】Spring Boot + MyBatis-Plus 进行各种数据库操作(附完整 CRUD 项目代码示例)
数据库·sql
light blue bird2 小时前
MES/ERP的Web多页签报表系统
数据库·node.js·ai大数据·mes/erp·web报表
九章-2 小时前
医疗系统数据库选型技术指南:从合规性到高性能的全方位考量
数据库·信创·医疗信创
Predestination王瀞潞2 小时前
4.1.1 存储->数据库:MongoDB
数据库·mongodb