首页 > 数据库 > 国内数据库 > MySQL数据库迁移至KWDB的完整实践指南
作者:江湖有缘
原文链接:https://blog.csdn.net/jks212454/article/details/147688558?spm=1011.2415.3001.5331
随着企业业务的不断发展和数据量的持续增长,传统单机数据库在高并发、大数据量场景下逐渐暴露出性能瓶颈。分布式数据库作为新一代数据库技术,凭借其良好的扩展性、高可用性和高性能,正逐步成为企业数字化转型的重要支撑。KaiwuDB(KWDB) 作为一款高性能、强兼容的国产分布式数据库,原生支持多模数据处理,具备对 MySQL 等主流数据库的良好兼容能力。本文基于 KaiwuDB DataX Utils 工具,详细记录了从 MySQL 向 KaiwuDB 进行异构数据迁移的完整实践过程,旨在验证 KaiwuDB 在实际迁移场景中的稳定性与高效性,并为企业未来数据库选型与平滑迁移提供参考依据。
KWDB简介
KWDB 是一款面向 AIoT 场景的分布式、多模融合数据库产品。 支持在同一个实例中建立时序库和关系库,并统一处理多种类型的数据,具备对海量时序数据的高效读写与分析能力。 产品具备高可用、安全稳定、易运维等特性,广泛应用于工业物联网、数字能源、车联网、智慧矿山等多个行业领域,为用户提供一站式数据存储、管理与分析的基础平台。
主要特点
MySQL 数据库简介
MySQL 是一种开源的关系型数据库管理系统(RDBMS),广泛用于 Web 应用程序的数据存储和管理。它由瑞典公司 MySQL AB 开发,目前由 Oracle 公司维护和开发。MySQL 以其高性能、可靠性和易用性著称,支持多种操作系统,包括 Linux、Windows 和 macOS。
MySQL主要特点
MySQL 支持多用户访问,允许多个用户同时连接和操作数据库。它使用 SQL(结构化查询语言)进行数据管理,支持复杂的数据查询和操作。MySQL 提供了丰富的存储引擎,如 InnoDB、MyISAM 等,用户可以根据需求选择合适的存储引擎。
KaiwuDB DataX Utils简介
KaiwuDB DataX Utils 是基于广受欢迎的离线数据同步工具 DataX 开发的一款数据库迁移工具。它专为 KaiwuDB(要求版本2.0.3及以上)设计,支持与多种主流数据库之间的离线数据同步功能。通过 KaiwuDB DataX Utils,用户可以轻松实现 KaiwuDB 与其他数据库如 MySQL、TDengine、MongoDB、InfluxDB、OpenTSDB、Oracle、PostgreSQL、ClickHouse 以及不同版本的 KaiwuDB(包括1.2.x和2.x版本)之间的数据迁移。此工具极大地简化了数据迁移过程,为用户提供了一个高效、便捷的数据同步解决方案。
支持的迁移形式

KWDB数据库的硬件规格要求如下:
本次实践为个人测试环境,实践环境规划如下所示:
在迁移服务器上,环境要求如下:
备注:迁移环境准备工作,在迁移服务器上进行操作。
执行以下命令,安装openJDK。
yum install java-1.8.0-openjdk-devel -y
检查openJDK版本,可以看到我们安装的版本为1.8.0_432。
[root@openEuler ~]# java -version
openjdk version
"1.8.0_432"
OpenJDK Runtime Environment BiSheng (build 1.8.0_432-b06)
OpenJDK 64-Bit Server VM BiSheng (build 25.432-b06, mixed mode)
执行以下命令,安装 Python。
yum install python3 -y
检查python安装版本,当前版本为3.11.6
[root@openEuler ~]# python3 -V
Python 3.11.6
执行以下命令,安装maven。
yum install maven -y
检查maven版本,可以看到安装版本为3.6.3。
[root@openEuler ~]# mvn -v
Apache Maven 3.6.3 (openEuler 3.6.3-2)
Maven home: /usr/share/maven
Java version: 1.8.0_432, vendor: BiSheng, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.432.b06-0.oe2403.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name:
"linux", version:
"6.6.0-85.0.0.79.oe2403.x86_64",
arch:
"amd64", family:
"unix"
DataX 是一款广泛使用的离线数据同步工具。KaiwuDB 基于 DataX 开发了数据库迁移工具 KaiwuDB DataX Utils,实现 KaiwuDB(2.0.3 及以上版本)与 MySQL、TDengine、MongoDB、InfluxDB、OpenTSDB、Oracle、PostgreSQL、ClickHouse、KaiwuDB(1.2.x)、KaiwuDB(2.x)等数据库的离线数据同步。
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz
解压软件包
tar -xzf datax.tar.gz
进入软件目录后,进入bin目录,即可运行同步作业:
[root@openEuler ~]#
cd datax/
[root@openEuler datax]#
ls
bin conf job lib plugin script tmp
下载KaiwuDB DataX 插件
wget https://gitee.com/kwdb/kwdb/releases/download/V2.2.0/KaiwuDB_datax-2.2.0.zip
解压KaiwuDB DataX 插件包
unzip KaiwuDB_datax-2.2.0.zip
将解压后的 kaiwudbwriter 复制到 datax/plugin/writer 目录
[root@openEuler ~]#
cp -r kaiwudbwriter datax/plugin/writer/
[root@openEuler ~]#
验证插件安装
[root@openEuler ~]#
ls datax/plugin/writer/kaiwudbwriter
kaiwudbwriter-2.1.0.jar libs plugin_job_template.json plugin.json
在 Rocky Linux 9 环境中,MySQL 8.0 版本可通过 AppStream 存储库获取。为了确认 MySQL 相关的软件包是否可用,我们可以通过以下命令列出所有与 MySQL 相关的软件包:
[root@rockylinux ~]# yum list all | grep mysql
mysql80-community-release.noarch el9-1 @@commandline
apr-util-mysql.x86_64 1.6.1-23.el9 appstream
dovecot-mysql.x86_64 1:2.3.16-14.el9 appstream
mysql.x86_64 8.0.41-2.el9_5 appstream
mysql-common.x86_64 8.0.41-2.el9_5 appstream
mysql-errmsg.x86_64 8.0.41-2.el9_5 appstream
mysql-selinux.noarch 1.0.13-1.el9_5 appstream
mysql-server.x86_64 8.0.41-2.el9_5 appstream
pcp-pmda-mysql.x86_64 6.2.2-7.el9_5 appstream
php-mysqlnd.x86_64 8.0.30-1.el9_2 appstream
postfix-mysql.x86_64 2:3.5.25-1.el9 appstream
qt5-qtbase-mysql.i686 5.15.9-10.el9_4 appstream
qt5-qtbase-mysql.x86_64 5.15.9-10.el9_4 appstream
rsyslog-mysql.x86_64 8.2310.0-4.el9 appstream
rubygem-mysql2.x86_64 0.5.3-11.el9_0 appstream
执行以下步骤,开始安装MySQL数据库。
yum install mysql-server -y
启动MySQL服务并设置开机自启:
systemctl enable --now mysqld
检查MySQL服务状态
systemctl status mysqld
安装8.0.41时候,系统会创建一个没有密码的root用户,我们直接本地登录。
mysql -uroot -p
修改修改本地用户’root’@‘localhost’ 的密码,如下所示:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root.22#33';
新增用户kwadmin用户,用于数据迁移。
create
user
'kwadmin'@
'%' identified
WITH mysql_native_password
BY
'kwadmin';
grant
all
on
*.
*
to
'kwadmin'@
'%'
with
GRANT OPTION;
flush privileges;
使用我们新建的账号kwadmin进行远程登录Mysql数据库,如下所示:
mysql -h 192.168.3.122 -ukwadmin -pkwadmin
我们在源数据库—MySQL中,创建数据库school。
CREATE DATABASE IF
NOT
EXISTS school
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
创建一张数据表student,如下所示:
use school;
DROP
TABLE IF
EXISTS student;
CREATE TABLE student (
id
INT
PRIMARY KEY AUTO_INCREMENT,
name
VARCHAR(
9)
NOT NULL COMMENT
'最长3个汉字(3*3=9字节)',
class
VARCHAR(
10)
NOT NULL,
gender ENUM(
'男',
'女')
NOT NULL,
height
DECIMAL(
4,
1)
NOT NULL COMMENT
'厘米',
age TINYINT
NOT NULL COMMENT
'15-18岁',
chinese TINYINT
NOT NULL COMMENT
'30-100分',
math TINYINT
NOT NULL,
english TINYINT
NOT NULL,
physics TINYINT
NOT NULL,
chemistry TINYINT
NOT NULL,
biology TINYINT
NOT NULL
) ENGINE
=InnoDB
DEFAULT CHARSET
=utf8mb4
COLLATE
=utf8mb4_unicode_ci;
查看数据表的字段,可以看到刚才创建student表的字段情况。
mysql
>
show columns
from student;
+
-----------+-------------------+------+-----+---------+----------------+
| Field
| Type
|
Null
| Key
|
Default
| Extra
|
+
-----------+-------------------+------+-----+---------+----------------+
| id
|
int
|
NO
| PRI
|
NULL
| auto_increment
|
| name
|
varchar(
9)
|
NO
|
|
NULL
|
|
| class
|
varchar(
10)
|
NO
|
|
NULL
|
|
| gender
| enum(
'男',
'女')
|
NO
|
|
NULL
|
|
| height
|
decimal(
4,
1)
|
NO
|
|
NULL
|
|
| age
| tinyint
|
NO
|
|
NULL
|
|
| chinese
| tinyint
|
NO
|
|
NULL
|
|
| math
| tinyint
|
NO
|
|
NULL
|
|
| english
| tinyint
|
NO
|
|
NULL
|
|
| physics
| tinyint
|
NO
|
|
NULL
|
|
| chemistry
| tinyint
|
NO
|
|
NULL
|
|
| biology
| tinyint
|
NO
|
|
NULL
|
|
+
-----------+-------------------+------+-----+---------+----------------+
12
rows
in
set (
0.00 sec)
创建随机姓氏函数 rand_last_name
DELIMITER $$
DROP
FUNCTION IF
EXISTS rand_last_name;
CREATE
FUNCTION rand_last_name()
RETURNS
VARCHAR(
1) CHARSET utf8mb4
NO
SQL
BEGIN
DECLARE last_names
VARCHAR(
100)
DEFAULT
'李王张刘陈杨黄赵周吴徐孙朱马胡郭林何高梁郑罗宋谢唐韩曹许邓萧冯曾程蔡潘袁于董余苏叶吕魏蒋田杜丁沈姜范江傅钟卢汪戴崔任陆廖姚方金邱夏谭韦贾邹石熊孟秦阎薛侯雷白龙段郝孔邵史毛常万顾赖武康贺严尹钱施牛洪龚';
RETURN SUBSTR(last_names,
FLOOR(
1
+ RAND()
*
100),
1);
END$$
DELIMITER ;
创建随机名字函数 rand_first_name
DELIMITER $$
DROP
FUNCTION IF
EXISTS rand_first_name;
CREATE
FUNCTION rand_first_name()
RETURNS
VARCHAR(
4) CHARSET utf8mb4
NO
SQL
BEGIN
DECLARE first_names
VARCHAR(
500)
DEFAULT
'安柏冰波彩婵超晨诚春丹德东芳菲芬风峰刚歌格国海浩荷弘华辉慧佳嘉健杰洁静娟君俊凯康可兰乐磊丽莉良琳玲龙露璐曼梅美萌明娜楠妮宁萍强倩琴清晴蓉瑞莎珊舒帅涛婷伟文雯霞夏贤翔欣秀雪燕阳洋瑶宜怡义艺英莹颖勇雨玉云哲珍真志智忠洲珠竹庄卓子梓';
-- 随机决定名字长度:1或2个汉字
SET
@name_length
=
FLOOR(
1
+ RAND()
*
2);
-- 1 or 2
IF
@name_length
=
1
THEN
RETURN
SUBSTRING(first_names,
FLOOR(
1
+ RAND()
*
CHAR_LENGTH(first_names)),
1);
ELSE
RETURN CONCAT(
SUBSTRING(first_names,
FLOOR(
1
+ RAND()
*
CHAR_LENGTH(first_names)),
1),
SUBSTRING(first_names,
FLOOR(
1
+ RAND()
*
CHAR_LENGTH(first_names)),
1)
);
END IF;
END$$
DELIMITER ;
创建完整姓名函数 rand_full_name
DELIMITER $$
DROP
FUNCTION IF
EXISTS rand_full_name;
CREATE
FUNCTION rand_full_name()
RETURNS
VARCHAR(
10) CHARSET utf8mb4
NO
SQL
BEGIN
RETURN CONCAT(rand_last_name(), rand_first_name());
END$$
DELIMITER ;
创建批量插入存储过程
DELIMITER $$
DROP
PROCEDURE IF
EXISTS batch_insert_students;
CREATE
PROCEDURE batch_insert_students(
IN total
INT)
BEGIN
DECLARE i
INT
DEFAULT
0;
DECLARE CONTINUE HANDLER
FOR
1366
BEGIN
-- 记录错误但不中断(仅限测试环境)
GET DIAGNOSTICS
CONDITION
1
@p1
= MESSAGE_TEXT;
INSERT INTO error_log (message)
VALUES (
@p1);
END;
WHILE i
< total DO
INSERT INTO student (name, class, gender, height, age,
chinese, math, english, physics, chemistry, biology)
VALUES (
rand_full_name(),
CONCAT(
FLOOR(
1
+RAND()
*
3),
'年级',
FLOOR(
1
+RAND()
*
10),
'班'),
IF(RAND()
>
0.5,
'男',
'女'),
ROUND(
140
+ RAND()
*
50,
1),
15
+
FLOOR(RAND()
*
4),
FLOOR(
30
+ RAND()
*
71),
FLOOR(
30
+ RAND()
*
71),
FLOOR(
30
+ RAND()
*
71),
FLOOR(
30
+ RAND()
*
71),
FLOOR(
30
+ RAND()
*
71),
FLOOR(
30
+ RAND()
*
71)
);
SET i
= i
+
1;
END WHILE;
END$$
DELIMITER ;
调用存储过程插入 2000 条学生数据
CALL batch_insert_students(2000);
验证数据条数
mysql
>
SELECT
COUNT(
*)
FROM student;
+
----------+
|
COUNT(
*)
|
+
----------+
|
2000
|
+
----------+
1
row
in
set (
0.00 sec)
mysql
>
查看前5条样例数据
mysql
>
SELECT
*
FROM student LIMIT
5;
+
----+-----------+-------------+--------+--------+-----+---------+------+---------+---------+-----------+---------+
| id
| name
| class
| gender
| height
| age
| chinese
| math
| english
| physics
| chemistry
| biology
|
+
----+-----------+-------------+--------+--------+-----+---------+------+---------+---------+-----------+---------+
|
1
| 董梓芳
|
2年级
7班
| 女
|
181.0
|
15
|
98
|
71
|
30
|
52
|
66
|
77
|
|
2
| 白竹华
|
1年级
8班
| 女
|
185.4
|
16
|
40
|
73
|
72
|
43
|
38
|
32
|
|
3
| 毛梓
|
2年级
3班
| 女
|
164.8
|
18
|
54
|
60
|
36
|
44
|
82
|
33
|
|
4
| 赵燕
|
1年级
9班
| 女
|
159.9
|
18
|
54
|
100
|
96
|
82
|
89
|
98
|
|
5
| 袁佳霞
|
3年级
5班
| 男
|
161.2
|
16
|
60
|
38
|
51
|
40
|
87
|
75
|
+
----+-----------+-------------+--------+--------+-----+---------+------+---------+---------+-----------+---------+
5
rows
in
set (
0.00 sec)
mysql
>
经过以上测试生成数据成功,我们增加数据10万条左右。等待一段时间,可以看到已经成功生成10万条左右数据。
mysql
>
CALL batch_insert_students(
100000);
Query OK,
1
row affected (
4 min
41.65 sec)
mysql
>
mysql
>
SELECT
COUNT(
*)
FROM student;
+
----------+
|
COUNT(
*)
|
+
----------+
|
102000
|
+
----------+
1
row
in
set (
0.01 sec)
mysql
>
通过执行以下命令,我们可以检查需要迁移的测试数据大小。根据查询结果,当前数据库中存储的数据总量为 6.52 MB。
SELECT
ROUND(
SUM(DATA_LENGTH
+ INDEX_LENGTH)
/
1024
/
1024,
2)
AS
'总大小(MB)'
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA
=
'school';
创建下载目录/data/kwdb
mkdir -p /data/kwdb && cd /data/kwdb
执行以下命令,下载KWDB安装包。
wget https://gitee.com/kwdb/kwdb/releases/download/V2.2.0/KWDB-2.2.0-ubuntu22.04-x86_64-debs.tar.gz
执行以下命令,解压KWDB软件包。
tar -xzf KWDB-2.2.0-ubuntu22.04-x86_64-debs.tar.gz
查看软件包解压后,内容如下所示:
root@jeven01:/data/kwdb# ll kwdb_install/
total 52
drwxr-xr-x 4 root root 4096 Mar 31 07:22 ./
drwxr-xr-x 3 root root 4096 May 5 15:58 ../
-rwxr-xr-x 1 root root 2024 Mar 31 07:11 add_user.sh*
-rw-r--r-- 1 root root 3605 Mar 31 07:12 .construction_var
-rw-r--r-- 1 root root 465 Mar 31 07:11 deploy.cfg
-rwxr-xr-x 1 root root 24410 Mar 31 07:11 deploy.sh*
drwxr-xr-x 2 root root 4096 Mar 31 07:22 packages/
drwxr-xr-x 2 root root 4096 Mar 31 07:11 utils/
root@jeven01:/data/kwdb#
在解压目录 kwdb_install/ 中,编辑 deploy.cfg 配置文件以设置安全模式、管理用户和服务端口等信息。
vim kwdb_install/deploy.cfg
[global]
# Whether to turn on secure mode
secure_mode=tls
# Management KaiwuDB user
management_user=kaiwudb
# KaiwuDB cluster http port
rest_port=8080
# KaiwuDB service port
kaiwudb_port=26257
# KaiwuDB data directory
data_root=/var/lib/kaiwudb
# CPU usage[0-1]
# cpu=1
[
local]
# local node configuration
node_addr=192.168.3.88
# section cluster is optional
#[cluster]
# remote node addr,split by ','
#node_addr=127.0.0.2,127.0.0.3
# ssh info
#ssh_port=22
#ssh_user=admin
deploy.cfg 配置文件说明
进入KWDB软件目录,如下所示:
root@jeven01:/data/kwdb#
cd kwdb_install/
root@jeven01:/data/kwdb/kwdb_install#
ls
add_user.sh deploy.cfg deploy.sh packages utils
执行以下命令,为 deploy.sh 脚本添加运行权限。
chmod +x ./deploy.sh
执行以下命令,我们手动安装 libprotobuf23 库。
apt install libprotobuf23 -y
我们使用部署脚本 deploy.sh 一键完成KWDB的安装与配置,如下所示:
./deploy.sh install --single
在安装过程中,系统会提示您输入新增用户 jeven 的密码,请按指示自行输入。请注意,本次实践基于配置为4核CPU和8GB内存的虚拟机环境。由于该配置可能触发“CPU规格不满足要求”的警告,建议根据实际需求调整虚拟机规格以避免此类警告。提升机器的硬件配置(如增加CPU核心数)可以有效解决这一问题。
安装成功后,会出现以下提示信息。
执行以下命令,重新加载 systemd 守护进程的配置文件。
systemctl daemon-reload
启动KWDB数据库,如下所示:
./deploy.sh start
执行以下命令,设置KWDB服务开自启。
systemctl enable kaiwudb
我们可以使用systemctl status kaiwudb命令,查看KWDB服务状态。
systemctl status kaiwudb
如果在安装过程中由于等待时间过长而未设置用户密码,或者遇到密码遗忘、登录失败等情况,可以通过执行 add_user.sh 脚本来创建新的数据库用户。此脚本提供了一种简便的方法来重新设定访问凭据,确保我们能够顺利恢复对数据库的管理与操作。我们创建与在源数据库MySQL中的账号密码保持一致,都为kwadmin。
./add_user.sh
我们执行以下命令,使用kwadmin用户连接KWDB 数据库。
root@jeven01:/data/kwdb/kwdb_install# kwbase sql --certs-dir=/etc/kaiwudb/certs --host=192.168.3.88 --host=192.168.3.88 -u kwadmin
#
# Welcome to the KWDB SQL shell.
# All statements must be terminated by a semicolon.
# To exit, type: \q.
#
Enter password:
# Server version: KaiwuDB 2.2.0 (x86_64-linux-gnu, built 2025/03/31 07:20:02, go1.16.15, gcc 11.4.0) (same version as client)
# Cluster ID: 4335d3f6-5648-4bd3-b181-ed48b29cd7a4
#
# Enter \? for a brief introduction.
#
kwadmin@192.168.3.88:26257/defaultdb>
检查用户权限,为了保证迁移成功,确保新创建的角色拥有admin角色权限。
kwadmin
@192
.168.3.88:
26257
/defaultdb
>
show roles;
username
| options
| member_of
-----------+------------+------------
admin
| CREATEROLE
| {}
kwadmin
|
| {admin}
kwdbuser
|
| {admin}
root
| CREATEROLE
| {admin}
wangming
|
| {admin}
(
5
rows)
Time:
4.826265ms
kwadmin
@192
.168.3.88:
26257
/defaultdb
>
在KWDB上创建一个名为school的目标数据库。确保新创建的数据库名称与源数据库(MySQL)中的数据库名称保持一致。这一步骤对于保证数据迁移过程的准确性和顺利进行至关重要。
CREATE DATABASE IF NOT EXISTS school;
在迁移服务器上,我们新建配置文件mysql2kaiwudb.yml。
vim mysql2kaiwudb.yml
metadata:
enable:
true
# 启用元数据迁移
engine-type: RELATIONAL
# 引擎类型为关系引擎
auto-ddl:
true
# 自动创建表
primary-key:
true
# 启用主键迁移
constraint:
true
# 启用约束迁移
comment:
true
# 启用注释迁移
index:
true
# 启用索引迁移
view:
true
# 启用视图迁移
data:
enable:
true
# 启用业务数据迁移
batchSize: 1000
# 每批次迁移 1000 条数据
setting:
speed:
channel: 1
# 设置通道数为 1
errorLimit:
percentage: 0.02
# 允许错误数据的比例为 2%
core:
transport:
channel:
speed:
byte: 1048576
# 每个通道的传输速率为 1 MB
record: 1000
# 每个通道每批次传输 1000 条记录
source:
type: MYSQL
# 源数据库类型是 MySQL
url: jdbc:mysql://192.168.3.122:3306/mysql_kaiwudb?useSSL=
false&useUnicode=
true&characterEncoding=utf8
# MySQL 连接 URL
username: kwadmin
# MySQL 数据库用户名
password: kwadmin
# MySQL 数据库密码
databases:
- name: school
# 源数据库名
target:
type: KAIWUDB
# 目标数据库是 KaiwuDB
url: jdbc:kaiwudb://192.168.3.88:26257/mysql_kaiwudb
# KaiwuDB 连接 URL
username: kwadmin
# KaiwuDB 数据库用户名
password: kwadmin
# KaiwuDB 数据库密码
databases:
- name: school
# 目标数据库名
[root@openEuler ~]#
cd ~/datax/plugin/writer/kaiwudbwriter
[root@openEuler kaiwudbwriter]#
ls
kaiwudbwriter-2.1.0.jar libs plugin_job_template.json plugin.json
nohup java -jar \
-DyamlPath=/data/migration/mysql2kaiwudb.yml \
-DdataxPath=/root/datax \
-Dpython=/usr/bin/python3 \
kaiwudb-datax-utils-2.2.0.jar > migration.log 2>&1 &
执行以下命令,查看迁移结速后的输出信息,可以看到迁移报告路径为:/root/datax/log/迁移报告_20250514153231000316.pdf。
tail -f migration.log
在本地电脑打开迁移报告_20250514153231000316.pdf文件,结果如下所示:
进入到迁移目的数据库KWDB,如下所示:
root@jeven01:~# kwbase sql --certs-dir=/etc/kaiwudb/certs --host=192.168.3.88 --host=192.168.3.88 -u kwadmin
#
# Welcome to the KWDB SQL shell.
# All statements must be terminated by a semicolon.
# To exit, type: \q.
#
Enter password:
# Server version: KaiwuDB 2.2.0 (x86_64-linux-gnu, built 2025/03/31 07:20:02, go1.16.15, gcc 11.4.0) (same version as client)
# Cluster ID: 4335d3f6-5648-4bd3-b181-ed48b29cd7a4
#
# Enter \? for a brief introduction.
#
kwadmin@192.168.3.88:26257/defaultdb> show databases;
database_name | engine_type
-----------------------------+--------------
defaultdb | RELATIONAL
postgres | RELATIONAL
school | RELATIONAL
system | RELATIONAL
your_default_database_name | RELATIONAL
(5 rows)
Time: 1.204711ms
kwadmin@192.168.3.88:26257/defaultdb>
我们在KWDB数据库中,查询到student数据表中为102000条数据,迁移后的数据与原数据表保持一致。
kwadmin
@192
.168.3.88:
26257
/defaultdb
>
kwadmin
@192
.168.3.88:
26257
/defaultdb
> use school;
SET
Time:
426.224µs
kwadmin
@192
.168.3.88:
26257
/school
>
SELECT
COUNT(
*)
FROM student;
count
----------
102000
(
1
row)
Time:
35.623686ms
kwadmin
@192
.168.3.88:
26257
/school
>
SELECT
*
FROM student LIMIT
5;
id
| name
| class
| gender
| height
| age
| chinese
| math
| english
| physics
| chemistry
| biology
-----+--------+----------+--------+--------+-----+---------+------+---------+---------+-----------+----------
1
| 董梓芳
|
2年级
7班
| 女
|
181.0
|
15
|
98
|
71
|
30
|
52
|
66
|
77
2
| 白竹华
|
1年级
8班
| 女
|
185.4
|
16
|
40
|
73
|
72
|
43
|
38
|
32
3
| 毛梓
|
2年级
3班
| 女
|
164.8
|
18
|
54
|
60
|
36
|
44
|
82
|
33
4
| 赵燕
|
1年级
9班
| 女
|
159.9
|
18
|
54
|
100
|
96
|
82
|
89
|
98
5
| 袁佳霞
|
3年级
5班
| 男
|
161.2
|
16
|
60
|
38
|
51
|
40
|
87
|
75
(
5
rows)
Time:
1.202576ms
kwadmin
@192
.168.3.88:
26257
/school
>
我们对迁移前的源数据库和迁移后的目标数据库进行了简单的对比,结果显示数据保持了一致性。
本次从 MySQL 到 KaiwuDB(KWDB)的数据迁移实践,整体过程平稳高效,充分体现了 KaiwuDB 在异构数据库兼容和性能方面的优势。通过使用 KaiwuDB DataX Utils 插件,结合 DataX 强大的数据同步能力,整个迁移任务在短短 100 秒内完成了 102,000 条记录的迁移,平均写入速度达到 1020 记录/秒,流量稳定在 32.45KB/s,全程无错误发生,数据一致性得到了有效保障。KWDB不仅成功自动识别并创建了与源数据库同名的目标数据库,还展现了良好的系统稳定性与高并发处理能力,GC 和 CPU 资源占用均控制在合理范围内。此次实践验证了KWDB 在国产化替代及多场景融合中的强大适配能力,也体现了其迁移到位后的高性能读写与易用性,是一款值得信赖的企业级分布式数据库产品。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70027415/viewspace-3091040/ ,如需转载,请注明出处,否则将追究法律责任。