0
0
0
0
专栏/.../

TiDB 新朋友:如何使用NineData 社区版从 MySQL复制数据到 TiDB

 ShawnYan  发表于  2025-03-14

在数据管理领域,一款优秀的工具能够极大地提升工作效率,而 NineData 社区版正是这样一款工具。NineData 社区版功能强大、永y久免费、一键安装,为开发者、初创团队、教育机构提供了极大的便利。

什么是 NineData 社区版

NineData 社区版是玖章算术推出的永y久免费、一键安装的数据管理解决方案。包含 NineData 的数据库 DevOps、数据复制、数据库对比三个核心功能。NineData 社区版是一个完全离线运行的本地化部署版本,所有数据与操作 100% 留存于您的本地环境,满足敏感业务的数据合规要求。NineData 提供用户管理,支持普通账号和 SSO 账号两种类型,提供权限管理,颗粒度细化到数据源、库、表、敏感列、模块、操作,并且支持 SQL 任务审核,为数据管理提供了安全保障。

no-alt

NineData 社区版支持高性能实时数据迁移同步,基于自研 CDC 技术,专业解决数据库迁移、同步、容灾等业务需求,支持每秒数万 TPS 实时数据复制。NineData 社区版支持同构、异构数据源之间数据一致性校验,在不一致的情况下支持自动生成变更 SQL,支持结构对比、全量对比、抽样对比、周期性对比等多种对比方式,动态监测数据库负载,对比速度自适应,保障数据库稳定性。

如何安装 NineData 社区版

NineData 社区版基于 Docker 技术,用户通过几条简单的命令即可在本地电脑完成安装。

1. 前提条件

服务器中已安装 Docker 或者 Podman。服务器配置至少为 4 核 CPU / 16 GB 内存 / 200 GB 磁盘空间。

2. 拉取镜像

NineData 提供了多地域镜像下载,用户可以根据自己的地理位置选择合适的镜像地址,以获取更快的下载速度。

  • NineData Docker Hub 官方地址:ninedata/ninedata:latest
  • 华北-北京:swr.cn-north-4.myhuaweicloud.com/ninedata/ninedata:latest
  • 华东-上海:swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest
  • 华南-广州:swr.cn-south-1.myhuaweicloud.com/ninedata/ninedata:latest

登录服务器,执行命令,拉取镜像。

podman pull swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest

查看镜像信息。

[shawnyan@rl9 ~]$ podman images
REPOSITORY                                         TAG         IMAGE ID      CREATED       SIZE
swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata  latest      17f99ce461fa  2 days ago    2.67 GB

3. 启动容器

推荐使用 CentOS 7 操作系统。执行命令,启动容器。

docker run -p 9999:9999 --privileged -v /opt/ninedata:/u01 \
--name ninedata -d 17f99ce461fa

如果使用 Rocky Linux 9,可以使用 Podman 来管理容器。

podman run -p 9999:9999 --privileged -v /opt/ninedata:/u01 \
--cgroupns=host \
--name ninedata -d 17f99ce461fa

需要注意的是,由于 Rocky Linux 9 默认使用 cgroup-v2

[shawnyan@rl9 ~]$ mount | grep cgroup
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)

而当主机为 cgroups v2 时,podman 的 cgroup 命名空间模式默认使用 private,来为容器创建一个新的 cgroup 命名空间,这会导致容器无法正常启动。

E0312 10:45:32.821969      42 kubelet_node_status.go:453] "Error getting the current node from lister" err="node \"server-sh90d\" not found"
E0312 10:45:32.824543      42 node_container_manager_linux.go:61] "Failed to create cgroup" err="cannot enter cgroupv2 \"/sys/fs/cgroup/kubepods\" with domain controllers -- it is in an invalid state" cgroupName=["kubepods"]
E0312 10:45:32.824844      42 kubelet.go:1566] "Failed to start ContainerManager" err="cannot enter cgroupv2 \"/sys/fs/cgroup/kubepods\" with domain controllers -- it is in an invalid state"

因而,启动容器时需增加参数 --cgroupns=host 指定容器使用宿主机的 cgroups 命名空间。

NineData 社区版的使用

1. 登录 NineData

容器启动完成后,NineData 服务会自动在容器内部署并初始化服务,该过程预计需要 5 ~ 10 分钟。初始化完成后,在浏览器中输入 NineData 的连接地址即可打开 NineData 控制台的登录页,NineData 服务默认端口号为 9999,初始管理员账号与密码均为 admin。首次登录后页面会弹出修改密码窗口,提示立即更改管理员密码。

2. 数据源管理

用户可以在 NineData 控制台中添加需要管理的数据源,支持多云、多类型、多个数据源。社区版目前支持添加 10 个数据源。

如下图,数据源已成功添加 MySQL 8.0、TiDB 8.5、IvorySQL 4.4、达梦数据库 DM8 等数据库。

no-alt

典型场景:从 MySQL 复制数据到 TiDB

众所周知,MySQL 是蓝色星球上广泛流行的开源数据库。自 MySQL 诞生至今已有三十年,生命力依旧旺盛。TiDB 是一款 HTAP 分布式数据库产品,兼容 MySQL 协议和 MySQL 生态。面对企业业务高速增长,数据量级增长到 TB 或 PB 后,MySQL 的性能和扩展性严重受限。可以将 MySQL 按微服务对应的库表进行拆分,且不说拆分后成百上千个实例的运维成本很高,有很多金融业务和传统行业库表之间强耦合,关联业务代码改造的成本也极高。云原生分布式数据库 TiDB 可以帮助用户应对挑战,在保障数据库可靠性、数据一致性的前提下,可有效提升开发效率、降低维护成本、提升写入性能。将数据从 MySQL 迁移、整合到 TiDB 数据库,从容面对未来五到十年甚至更长线的挑战。

20250218-1891845653534355456_3351.png

NineData 社区版提供数据复制和数据库对比功能。数据复制支持多种同异构数据源之间的离线、实时数据复制,支持结构复制、全量复制、增量复制。数据库对比功能则可以对两个数据源之间的内容进行一致性对比,支持结构对比、数据对比、增量对比,并在结构不一致的情况下自动生成变更 SQL。这些功能均可在 NineData 可视化控制台中进行操作,简单易用、轻松上手。

以 MySQL 到 TiDB 为例,演示如何使用 NineData 社区版的数据复制功能。

1. 环境准备

演示环境,这里准备了 MySQL 8.0.41 和 TiDB 8.5.1。

mysql> select version()\G
*************************** 1. row ***************************
version(): 8.0.41
1 row in set (0.00 sec)

tidb> select tidb_version()\G
*************************** 1. row ***************************
tidb_version(): Release Version: v8.5.1
Edition: Community
Git Commit Hash: fea86c8e35ad4a86a5e1160701f99493c2ee547c
Git Branch: HEAD
UTC Build Time: 2025-01-16 07:38:34
GoVersion: go1.23.4
Race Enabled: false
Check Table Before Drop: false
Store: tikv
1 row in set (0.00 sec)

2. 操作步骤

  1. 创建复制

在 NineData 控制台上,点击【数据复制】-【数据复制】-【创建复制】。填写任务名称,选择源数据源和目标数据源,选择结构复制和全量复制。

20250312-1899759830634606592_3351.png

  1. 选择复制对象

选择需要复制的表,这里有一项黑名单功能,可以排除指定对象。

  1. 配置映射

配置映射环节中的【映射与过滤】功能,可以自定义列名同步到目标数据源之后的名称。并且,还支持设置数据过滤条件,仅符合过滤条件的数据会同步到目标数据源。

  1. 预检查

预检查提供 16 项检测,通过检查后,点击【启动任务】,可以勾选【开启数据一致性对比】,当全量数据复制完成后,会自动进行数据比对。

  1. 启动任务

同步任务开始运行,可返回列表查看数据复制状态。

  1. 查验数据

同步任务完成后,控制台返回比对结果“一致”。

20250312-1899759830668161024_3351.png

演示数据较少,我们分别登陆 MySQL 和 TiDB 查验表结构和数据。

20250312-1899759830823350272_3351.png

一次完整的数据复制流程演示到这里,还有一些注意事项参见 NineData 官方文档:

https://docs.ninedata.cloud/replication/mysql_to_others/mysql_to_tidb

总结

NineData 社区版通过本地化部署、永y久免费,及极简而有效的用户体验,为数据管理提供了安全高效的解决方案。帮助个人开发者、初创团队提升全链路数据管控能力、数据流转处理效率,从容应对未来业务增长需求和数据管理中的各种挑战。


Have a nice day ~


🌻 往期精彩 ▼

-- / END / --

👉 这里可以找到我

👉 这里有得聊

如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。 关注微信公众号:少安事务所,后台回复[群],即可看到入口。

如果这篇文章为你带来了灵感或启发,请帮忙『三连』吧,感谢!ღ( ´・ᴗ・` )~

0
0
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论