• 金仓数据库 KingbaseES V8.3至V8.6迁移最佳实践(3. KingbaseES移植能力支撑体系)


    3. KingbaseES移植能力支撑体系

    本章节包含以下内容:

    3.1. 迁移工具

    KingbaseES 支持应用系统处于离线状态的数据迁移(以下简称离线迁移)和应用系统处于在线状态的数据迁移(以下简称在线迁移)。

    离线迁移是指,应用系统在离线状态下,源数据库服务器持续提供服务时,通过KingbaseES 的迁移工具将源数据库的对象定义和数据搬迁到目的数据库。

    在线迁移是指,应用系统处于在线状态下,源数据库服务器持续提供服务时,通过KingbaseES 的迁移工具完成对象和数据的搬迁。

    3.1.1. 数据迁移工具

    KingbaseES 提供了KDTS-PLUS 和 KFS 2个工具可以完成迁移数据任务。 KDTS-PLUS 可以用于离线迁移,可以完成数据库中所有所有对象定义的迁移和数据的迁移。 KFS 可以应用于数据的同步,主要应用于表结构和表数据的初始搬迁,以及之后的数据的实时同步。 KDTS-PLUS和KFS 一起部署,可以完成一个大型系统的在线迁移。

    工具特性对比

    KDTS-PLUS

    KFS

    是否支持迁移存储过程等对象定义迁移

    支持所有对象定义的迁移

    支持表结构和主键的定义的迁移

    同步一次,还是持续同步

    一次同步

    持续同步

    是否需要初始状态同步

    不需要

    需要

    跨平台

    支持

    支持

    迁移部分表

    支持

    支持

    迁移一个表的部分数据

    支持

    支持

    断点续传

    不支持

    支持

    KDTS-PLUS的核心任务是将 V8.3 中的数据迁移到KingbaseES V8.6。它完整支持了数据迁移过程中需要的各种特性,包括自定义数据类型映射,并行迁移数据,迁移失败后统计,支持第二次迁移,迁移结束后支持源和目的数据库的数据对比。这个产品是迁移任务中必须使用的工具。

    人大金仓提供数据同步产品KFS。进行数据同步的第一步是完成初始数据同步,之后将利用日志分析技术增量同步数据。KFS可以用于V8.3和 V8.6 之间的数据同步,数据集中,包括同步部分数据,同步策略灵活,支持断点续传。

    3.1.2. 手动迁移调试工具

    KingbaseES 提供了2个工具可以完成手动迁移过程中的调试工作:

    • 命令行SQL交互工具 ksql

    • 图形界面SQL交互工具 Kstudio

    工具特性对比

    ksql

    Kstudio

    执行SQL

    支持

    支持

    直接编辑数据

    需要写SQL语句

    支持,通过图形界面直接编辑

    执行存储过程

    支持

    支持

    查看SQL执行计划

    支持

    支持

    调试plsql

    支持

    支持

    数据库状态分析

    不支持

    不支持

    慢SQL分析

    不支持

    不支持

    ksql是命令行的SQL交互工具,轻巧速度快。

    Kstudio工具是图形界面的SQL交互工具,易用性较好,同时包含了plsql的调试功能。

    3.1.3. 系统割接后的数据同步工具

    KingbaseES 提供了2个数据同步工具:

    • KingbaseES 内置的物理同步功能

    • V8.3 和 |version|之间的数据库同步 KFS 产品

    工具特性对比

    KignbaseES物理同步功能

    KFS

    跨CPU

    支持

    支持

    断点续传

    支持

    支持

    同步部分对象

    不支持

    支持

    同步所有操作

    支持

    支持

    KingbaseES 内置物理同步,主要是针对2个KingbaseES产品之间的同步。同步的单位是2个data,不支持同步部分对象。物理同步可以同步所有用户操作,可以执行断点续传,支持重放。

    KFS 产品是为了解决 V8.3 和 V8.6 之间的同步,或者同步数据源之间部分对象的同步,同步粒度更加灵活。

    若应用系统割接后,用户需要双轨运行,可以视情况选择物理同步或者KFS产品。

    3.1.4. 系统割接后系统备份工具

    KingbaseES 提供了2个备份工具:

    • 逻辑备份sys_dump

    • 物理备份 sys_rman

    工具特性对比

    sys_dump

    sys_rman

    异构数据源

    不支持

    不支持

    支持增量

    不支持

    支持

    支持根据日志恢复到指定时间点

    不支持

    支持

    备份单个表

    支持

    不支持

    可以不备份指定表

    支持

    不支持

    逻辑备份sys_dump,支持备份对象在某一个执行状态中的定义和数据。不支持增量备份,备份对象选择灵活,可以支持单个表,单个函数等的备份。逻辑备份无法和redo日志一起使用。

    物理备份sys_rman备份整个实例的数据,不支持备份单个数据库或者单个表,但是支持增量备份。

    3.2. KingbaseES应用能力概述

    V8.3的移植的工作较少,这些工作量主要来源于两方面:

    1. 应用开发移植需求:在数据对象类型、SQL语言、PL/SQL语言、客户端应用编程接口和开发框架等诸多方面对两个数据库所进行的、大量的语法或功能的对齐处理。同时,源应用系统使用的第三方产品或者组件,目标数据库同样需要支持。

    2. 应用系统运行需求:高可用方案是否支持,性能是否满足需求。

    3.2.1. 支持的模式对象

    KingbaseES支持数据库、表空间、模式、用户和角色。同时支持模式下的如下对象。

    表 3.2.18 支持的模式对象

    序号

    模式下对象

    1

    表和分区

    2

    视图(包含force view)

    3

    可更新视图

    4

    触发器

    5

    规则

    6

    约束

    7

    索引

    8

    数据库连接 dblink

    9

    函数

    10

    存储过程

    11

    操作符

    12

    13

    序列

    14

    同义词

    15

    外部数据源

    16

    数据类型

    17

    标记和策略

    18

    规则rule

    19

    域domain

    20

    扩展包

    21

    全局临时表

    22

    DUAL表

    23

    Oracle兼容视图

    24

    ROWNUM, LEVEL等伪列

    25

    匿名块

    26

    表达式,包括条件表达式等

    表 3.2.19 内置数据类型

    序号

    KingbaseES数据类型

    数值型

    1

    smallint

    2

    integer

    3

    bigint

    4

    decimal

    5

    numeric

    6

    number

    7

    real

    8

    float

    9

    double precision

    10

    double

    11

    smallserial

    12

    serial

    13

    bigserial

    字符型

    1

    character(n[char | byte]), char(n[char | byte])

    2

    character varying(n[char | byte]),

    varchar(n[char | byte]), varchar2(n[char | byte])

    3

    nvarchar(n[char | byte])

    4

    text

    大对象型

    1

    clob, nclob

    2

    blob

    日期时间型

    1

    timestamp [ (p) ] [ without time zone ]

    2

    timestamp [ (p) ] with time zone

    3

    date

    4

    time [ (p) ] [ without time zone ]

    5

    time [ (p) ] with time zone

    6

    interval year

    7

    interval month

    8

    interval day

    9

    interval hour

    10

    interval minute

    11

    interval second

    12

    interval year to month

    13

    interval day to second

    布尔型

    1

    boolean

    二进制型

    1

    bit(n)

    2

    bit varying(n)

    XML型

    1

    xml

    数组型

    1

    array

    枚举型

    1

    enum

    JSON型

    1

    json

    2

    jsonb

    UUID型

    1

    uuid

    GIS型

    1

    point

    2

    line

    3

    box

    4

    path

    5

    circle

    6

    polygon

    7

    geometry

    KingbaseES 支持的函数和视图,请参见 KingbaseES SQL 参考手册和KingbaseES 数据库参考手册。

    3.2.2. SQL

    在KingbasES支持的SQL中,除了3.2.1 中提到的对象的CREATE/ALTER/DROP之外,还提供了其他SQL访问接口:

    数据操作

    • INSERT | UPDATE | DELETE

    • TRUNCATE

    • MERGE INTO

    • INSERT FIRST/ALL

    • COPY

    • CLUSTER

    数据查询

    • SELECT

    • 层次查询CONNECT BY

    • LATERAL 子句

    • 外连接操作符(‘+’)

    • WITH [ RECURSIVE ] 子句

    • PREPARE, EXECUTE

    • VALUES 子句

    • EXPLAIN

    数据整理

    • ANALYZE

    • VACUUM

    • REINDEX

    事务控制语句

    • BEGIN,START TRANSACTION

    • COMMIT

    • ROLLBACK

    • SAVEPOINT | RELEASE SAVEPOINT | ROLLBACK TO SAVEPONIT

    • SET TRANSACTION { READ ONLY | READ WRITE }

    • PREPARE TRANSACTION

    权限语句

    • GRANT

    • REVOKE

    3.2.3. PL/SQL

    KingbaseES支持如下 PL/SQL的常用语法:

    • 赋值语句

    • IF-THEN-ELSE语句

    • CASE语句

    • 多种循环语句,如LOOP语句、WHILE-LOOP语句和FOR LOOP语句

    • %TYPE属性和%ROWTYPE属性

    • REF CUSOR游标

    • 预定义异常和自定义异常

    • %NOTFOUND、%FOUND、%ISOPEN 和 %ROWCOUNT游标属性

    • RETURNING INTO语句

    • EXECUTE IMMEDIATE语句

    • 动态SQL

    • BULK COLLECT

    • 消息输入RAISE

    • PL/SQL支持集合类型(关联数组、嵌套表、可变数组)

    KingbaseES 支持如下 PL/SQL 常用对象:

    • 触发器(行级触发器,列级触发器,事件触发器)

    • 函数,嵌套函数

    • 存储过程

    • 匿名块

    • Package

    • OBJECT TYPE

    3.2.4. 客户端编程

    KingbaseES 支持如下编程接口和开发框架。

    表 3.2.20 编程接口

    序号

    编程语言

    KingbaseES对应支持

    1

    JAVA

    JDBC

    2

    .Net

    .Net Data Provider

    3

    C/C++

    Pro*C

    4

    DCI

    5

    ODBC

    6

    OCCI

    7

    Php

    pdo

    8

    Perl

    pdi

    9

    Python

    ksycopg2

    10

    golang

    gokb

    11

    Node.js

    kb

    表 3.2.21 开发框架

    序号

    开发框架

    KingbaseES对应支持

    1

    Hibernate

    支持

    2

    Activiti

    支持

    3

    Mybatis

    支持

    4

    Mybatis-Plus

    支持

    5

    Flyway

    支持

    6

    Liquibase

    支持

    7

    Dbunit

    支持

    8

    Hibernate- Spatial

    支持

    9

    Qt

    支持

    10

    Ef6

    支持

    11

    Efcore

    支持

    12

    Django

    支持

    13

    SQLAlchemy

    支持

    表 3.2.22 连接池

    序号

    连接池

    KingbaseES对应支持

    1

    C3P0

    支持

    2

    DBCP

    支持

    3

    Druid

    支持

    4

    HikariCP

    支持

    3.2.5. 第三方产品和组件

    KingbaseES目前已经和超过1200家的软硬件产品完成适配,涵盖CPU、存储、操作系统、中间件、备份软件、办公OA、报表、安全邮件、流版签、信息安全、地理信息等多类的主流产品都已覆盖。

    支持POSTGIS 组件。

    3.2.6. 高可用

    KingbaseES支持完善的高可用方案,为客户提供的一系列产品和方案能够解决无法预测的停机及计划停机造成的常见问题,并且能以最低的成本进行部署。

    支持多种物理备份和逻辑备份,支持多种集群,支持物理同步,支持逻辑同步。具体请参见 高可用 。

    3.2.7. 性能

    随着企业业务数据量呈爆炸式增长,数据库性能问题变得越来越突出。通常,数据库性能优化是一个系统工程。而不同的场景下,对性能的关注点也会有所不同,KingbaseES分别采用更有针对性的优化技术来保证用户的各种应用均可得到高性能的支撑。

    KingbaseES 在数据装载,事务性应用场景,分析性应用场景都有针对性的性能优化,具体请参见《KingbaseES数据库性能调优指南》 。

    3.2.8. 相关技术资源

    本指南重点从语句兼容特性、迁移工具、迁移场景和应用程序移植等几方面描述移植的关键技术和实现方式。在每项技术和实现方式的描述上,本指南只提供有限的内容介绍,并未提供全面的细节说明。所以,用户若需了解某些技术的实现细节还请参照相关的技术资料,这些资料诸如:

    • KingbaseES 数据库管理指南:详尽和全方位地介绍如何高效管理KingbaseES数据库系统。其中,这些管理诸如用户管理、存储管理、模式对象管理等。

    • KingbaseES 开发指南:提供了JDBC、ODBC、DCI和ESQL等应用编程接口的详细使用说明。

    • KingbaseES 高可用指南:详细描述了系统在高可用方面的支持。

    • KingbaseES 安装指南:全面介绍了KingnaseES各种工具的使用方法,这些工具如SQL交互工具KSQL和数据迁移工具KDTS-PLUS等。

    • KingbaseES 数据库调优指南:详细描述了系统提供的优化能力。

    3.3. KingbaseES支撑系统割接能力

    本章主要描述除了产品对应用运行的支撑以外,对系统割接上线过程中的需求是否都满足。

    3.3.1. 应用业务割接时间短

    应用业务无法停机,或者用于割接的时间非常端,就需要说过同步工具持续同步数据。

    • 评估系统割接需要的最短时间,协调用户预留最短时间;

    • 做出系统割接失败的回退预案,一旦割接失败,快速退回原有系统;

    • 使用迁移工具KDTS-PLUS完成历史数据迁移;

    • 使用KFS 进行 V8.3 和 |version|的持续同步。

    源数据库和目的数据库的数据差异小于预留的时间时,就可以进行系统割接。

    3.3.2. 割接后需要双轨运行

    若应用迁移时间短,没有足够的测试时间和试运行时间,用户可以采用割接后双轨运行,应用系统运行在一个数据库上,数据库中的数据实时同步到另一个数据库中;一旦应用出现问题,可以快速切换到另一个数据库中。

    KFS 支持KingbaseES和异构数据库的实施同步。

  • 相关阅读:
    2023腾讯云标准型S5云服务器简单测评,比较值!
    改进的萤火虫优化算法(Matlab代码实现)
    对存储过程进行加密和解密(SQL 2008/SQL 2012)
    02-csa练习题
    闭关之现代 C++ 笔记汇总(一):Modules
    Unity 中使用波浪动画创建 UI 图像
    Apollo 应用与源码分析:Monitor监控-软件监控-时间延迟监控
    Java String 类回顾(期末复习版)
    探秘Socks5代理在跨界电商、爬虫和游戏领域的应用
    js--处理object的常用方法
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/126028774