「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验

「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验

  • 1. 前言
    • 1.1 产品介绍
    • 1.2 产品架构
    • 1.3 产品规格
      • 1.3.1 数据库版本支持
      • 1.3.2 数据类型支持
  • 2. YMP安装
    • 2.1 环境说明
    • 2.2 执行安装
    • 2.3 访问YMP
      • 2.3.1 YMP登录界面
      • 2.3.2 YMP迁移流程
  • 3. YMP数据迁移
    • 3.1 创建数据源
    • 3.2 创建任务
    • 3.3 迁移评估
    • 3.4 迁移配置
    • 3.5 离线迁移
    • 3.6 校验初始化
    • 3.7 一致性校验
  • 4. YMP迁移问题记录
    • 4.1 YMP使用注意点
      • 4.1.1 多个迁移任务中不能有同名的schema
      • 4.1.2 迁移评估需要完全兼容才能进行下一步
      • 4.1.3 迁移评估不兼容的对象仅支持在线修改
      • 4.1.5 YMP内置库版本必须大于或等于目标端数据库版本
      • 4.1.6 数据迁移失败不支持手动修复状态
    • 4.2 YMP迁移兼容问题
      • 4.2.1 auto_increment替换问题
      • 4.2.2 varchar字符类型单位问题
      • 4.2.3 数据库保留字问题
      • 4.2.4 字面量查询问题
      • 4.2.5 索引键长度超过上限
      • 4.2.6 纯数字的字段名转换报错
      • 4.2.7 GIS数据类型暂不支持转换
      • 4.2.8 空格字符迁移遇到NULL问题
      • 4.2.9 字段重复索引问题
  • 5.迁移小结

1. 前言

作为崖山数据库产品发布的第一批体验体验官,有幸被邀请参与崖山迁移平台(YashanDB Migration Platform,YMP)产品的体验活动,所以有了今天的这篇文章。

本次迁移计划将Mysql数据迁移到YashanDB数据库中,并在迁移过程中遇到的问题及其对产品的体验输出自己的使用感受和产品建议,也希望国产数据库能做得越来越棒!

1.1 产品介绍

崖山迁移平台(YashanDB Migration Platform,下文以YMP代称)是YashanDB提供的数据库迁移产品,支持异构RDBMS与YashanDB之间进行迁移评估、离线迁移、数据校验的能力。 YMP提供可视化服务,用户只需通过简单的界面操作,即可完成从评估到迁移整个流程的执行与监控,实现低门槛、低成本、高效率的异构数据库迁移。

YMP是一款具备【精准评估】、【SQL自动转换】、【评估迁移无缝对接】、【对象一键迁移】、【数据高i性能迁移】、【数据校验】、【一站式服务】这7个核心特性的工具,能够解决迁移兼容性与工作量评估、异构数据库元数据迁移以及数据快速迁移的问题。

1.2 产品架构

YMP的总体架构如下:
image.png

1.3 产品规格

1.3.1 数据库版本支持

image.png

1.3.2 数据类型支持

image.png

2. YMP安装

YMP工具官方提供的部署文档如下:
https://doc.yashandb.com/ymp/23.2/zh/%E5%AE%89%E8%A3%85%E5%8D%87%E7%BA%A7/%E5%AE%89%E8%A3%85%E4%B8%8E%E5%8D%B8%E8%BD%BD.html

YMP工具部署的步骤简单,需要关注的是YMP工具的业务存储库选择问题。
目前YMP支持默认内置库和自定义内置库两种接入方式:
默认内置库:安装YMP工具时默认安装YashanDB作为内置库;
自定义内置库:使用外部的YashanDB数据库作为YMP的业务库使用。

2.1 环境说明

类型系统版本数据库数据库版本地址迁移数据量
源端rhel7.6Mysql5.7.44xx.xx.xx.xx115.1G
目标端rhel7.6YashanDB23.2.1.100xx.xx.xx.xx
YMP工具rhel7.623.2.1.0xx.xx.xx.xx

2.2 执行安装

下载连接:https://download.yashandb.com/download
上传软件包Yashan Migration Platform 23.2.1(Linux X86)到/tmp下边

## 1. 创建安装用户
useradd ymp
echo "ymp" | passwd --stdin ymp## 2. 创建安装目录并解压安装包
$ mkdir -p /home/ymp/soft
$ unzip /tmp/yashan-migrate-platform-v23.2.1.2-linux-x86-64.zip -d /home/ymp/soft
$ cd /home/ymp/soft/yashan-migrate-platform## 3. 安装参数调整
### 3.1 配置内置库的密码和端口(注意不要与本机的其他端口重叠)
$ cat /home/ymp/soft/yashan-migrate-platform/conf/db.properties
YASDB_PASSWORD=ymppw602.
YASDB_PORT=8091
YASDB_CHARACTER_SET=UTF8### 3.2 配置YMP配置文件,注意服务端口不要重叠,内置库连接信息注意填写正确
### 注意:这里只列出YMP服务端口和内置库连接信息配置,其他优化项根据实际情况进行调整
$ cat /home/ymp/soft/yashan-migrate-platform/conf/application.properties
server.port=8080
spring.datasource.url=jdbc:yasdb://127.0.0.1:8091/yashan
spring.datasource.username=YMP_DEFAULT
spring.datasource.password=ymppw602.
spring.datasource.largePoolSize=64M
spring.datasource.cursorPoolSize=64M
...### 4. 执行安装
$ cd /home/ymp/soft/yashan-migrate-platform/
$ sh bin/ymp.sh installnodb --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz### 5. 检查安装情况
$ cd /home/ymp/soft/yashan-migrate-platform/
$ sh bin/ymp.sh status

2.3 访问YMP

浏览器访问:http://xx.xx.xx.xx/#/login,初始化用户名密码:admin/admin

2.3.1 YMP登录界面

image.png

2.3.2 YMP迁移流程

YMP迁移流程如下图所示,主要包含创建任务、迁移评估、迁移配置、离线迁移、数据初始化和一致性校验这6个流程。

image.png

3. YMP数据迁移

注: 由于本次迁移采用的是正式环境数据,所以下列内容关于正式数据的用户名和表名等都做了打码和脱敏。

3.1 创建数据源

1715701534481.jpg

3.2 创建任务

image.png

3.3 迁移评估

image.png

3.4 迁移配置

image.png

3.5 离线迁移

image.png

3.6 校验初始化

image.png

3.7 一致性校验

image.png

4. YMP迁移问题记录

本章记录YMP实际迁移中遇到的问题,部分问题由于数据保密要求不做展示,故提供问题复现测试用例供参考。

4.1 YMP使用注意点

4.1.1 多个迁移任务中不能有同名的schema

问题现象: 新建迁移任务提示被XX迁移任务评估占用。

image.png

原因分析: 新建的迁移任务与YMP平台现有的迁移任务中存在同名的schema。

## 登录YMP内置库查询用户情况,发现新建的迁移任务中迁移的schema名与内置库中的schema重叠了
$ yasql sys/ymppw602.@xx.xx.xx.xx:8091
SQL> select username, created from dba_users order by 2;

解决方案: 删除原有的已经完成的迁移任务,再新建新的迁移任务。

4.1.2 迁移评估需要完全兼容才能进行下一步

问题现象:【迁移评估】流程执行后,存在部分不兼容对象,无法进行下一步操作。

image.png

原因分析: YMP设定的逻辑是兼容达到100%,才能进行下一步操作。

解决方案: 根据实际情况进行不兼容对象处理,可以在线改造SQL或者忽略该不兼容对象后,完成后执行【刷新报告】,兼容度达到100%后可以进行下一步操作。

4.1.3 迁移评估不兼容的对象仅支持在线修改

问题现象: 不兼容SQL提示表不存在,改造SQL后在YMP内置库执行创建表操作,【刷新报告】之后还是提示表不存在。

image.png

image.png

image.png

原因分析: 【迁移评估】中不兼容的对象,不支持直接在内置库中进行直接修改后跳过不兼容错误。在“刷新报告”之后,手动新增的内置库内容会自动被删除掉。

解决方案: YMP平台上在线更新不兼容对象的SQL语句后,执行【验证并保存】操作。

image.png

4.1.5 YMP内置库版本必须大于或等于目标端数据库版本

image.png

4.1.6 数据迁移失败不支持手动修复状态

问题现象: 【离线迁移】流程中针对部分数据迁移失败的数据,无法手动修复状态。

image.png

原因分析: YMP暂不支持手动修复数据迁移失败的状态。

解决方案: 查看迁移失败问题详情后,在内置库处理对应失败问题,执行【迁移重试】后完成迁移。

image.png
image.png
image.png
image.png

4.2 YMP迁移兼容问题

4.2.1 auto_increment替换问题

问题现象: YashanDB建表语句中使用auto_increment关键字执行失败。
image.png

原因分析: YashanDB不支持auto_increment自增语法。

解决方案: YashanDB创建SEQUENCE的方式来兼容MYSQL的auto_increment语法。

问题复现:

## Mysql源端建表:
mysql> CREATE TABLE `T1` (`id` bigint(20) NOT NULL AUTO_INCREMENT);## YashanDB目标端建表:
SQL> CREATE TABLE T1 ("ID" bigint NOT NULL AUTO_INCREMENT);
[1:39]YAS-04209 unexpected word AUTO_INCREMENT## YashanDB目标端改造兼容
SQL> CREATE SEQUENCE T1_ID_SEQ;
SQL> CREATE TABLE T1 ("ID" bigint NOT NULL DEFAULT T1_ID_SEQ.NEXTVAL);

4.2.2 varchar字符类型单位问题

问题现象: YMP工具迁移过程中出现字符长度超出。
image.png

原因分析: YashanDB的varchar数据类型单位默认是byte

解决方案: 使用varchar(N char)的方式来兼容MYSQL varchar语法。

问题复现:

## Mysql源端建表和插数据:
mysql> CREATE TABLE `T2`(`record` varchar(2));
Query OK, 0 rows affected (0.10 sec)
mysql> INSERT INTO T2 VALUES ('记录');
Query OK, 1 row affected (0.02 sec)## YashanDB目标端建表和插数据:
SQL> CREATE TABLE T2 (RECORD VARCHAR(2));
Succeed.
SQL> INSERT INTO T2 VALUES('记录');
YAS-04008 RECORD size exceeding limit 2## YashanDB目标端改造:
SQL> ALTER TABLE T2 MODIFY RECORD VARCHAR(2 CHAR);
SQL> INSERT INTO T3 VALUES('记录');
1 row affected.

4.2.3 数据库保留字问题

问题现象: 不兼容SQL改造过程中,执行建表语句遇到关键字冲突问题。
image.png

原因分析: 建表过程中有个字段名为LEVEL,是YashanDB的保留字,所以报错了。

解决方案: 将该字段名用双引号引起来可以规避。

问题复现:

-- YashanDB目标端创建表:
SQL> create table t4 (LEVEL varchar(10));
[1:18]YAS-04110 invalid variant name-- YashanDB目标端改造:
SQL> create table t4 ("LEVEL" varchar(10));
Succeed.

4.2.4 字面量查询问题

问题现象: YMP迁移过程中不兼容语句提示“implict table"报错。
image.png

原因分析: MYSQL数据库支持简写的字面量查询方式,YashanDB数据库需要使用DUAL伪表做查询。

解决方案: 使用DUAL做伪表即可规避。
image.png

4.2.5 索引键长度超过上限

问题现象: YMP迁移评估不兼容对象提示索引字符长度超出。
image.png

原因分析: 查看组合索引的3个字段长度,(500CHAR+500CHAR+500CHAR)*4=6000bytes,刚好等于6000bytes的上限。

解决方案: 根据实际情况调整组合索引字段长度。

image.png

SQL> alter table table_name modify column_name varchar (N CHAR);

image.png

4.2.6 纯数字的字段名转换报错

问题现象: YMP元数据迁移过程中出现纯数字的字段名无法设置非空约束报错。
image.png

原因分析: YMP针对这种特殊字段名无法直接做转换。

解决方案: 将纯数字的字段名加上双引号后,执行【验证并保存】可规避。
image.png

4.2.7 GIS数据类型暂不支持转换

问题现象: YMP元数据迁移过程中空间数据类型的表无法正常转换。
image.png

原因分析: YMP暂不支持自动转换空间数据类型。

解决方案: YashanDB具备GIS能力,可以用ST_GEOMETRY类型进行兼容。
image.png

4.2.8 空格字符迁移遇到NULL问题

问题现象: YashanDB数据库非空约束插入空字符会出现报错。
image.png

原因分析: Mysql非空约束允许插入空字符,但是YashanDB不支持,因此会出现报错。

解决方案: 先删除表的非空约束,把数据导入完成。

image.png

4.2.9 字段重复索引问题

问题现象: YMP元数据迁移过程中提示字段重复索引问题。
image.png

原因分析: MYSQL支持在主键索引列再创建普通索引。YashanDB不支持该功能。

解决方案: 暂时先忽略该索引,观察迁移到YashanDB后的SQL执行计划和效率,再根据实际情况创建索引。

5.迁移小结

  1. YMP迁移工具部署简单,操作界面简洁美观,操作流程清晰明了,小白也可以轻松上手;
  2. 迁移过程透明化,从评估到迁移整个流程都提供了详细的报告供下载;
  3. 产品功能上还存在优化空间,地理空间类型迁移能力也较薄弱;
  4. YMP目前仅支持全量迁移,暂不支持在线迁移或实时同步等功能;
  5. 总体而言,YMP的迁移体验还是蛮不错的。优秀的产品总是在各式各样的应用场景不断迭代后诞生,希望YMP产品能够不断优化迭代,做的越来越好!YashanDB加油!国产数据库加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【pytorch】 Win11下cuda,cudnn以及pytorch环境安装

Win11下cuda,cudnn以及pytorch环境安装 CUDA环境安装1. 查看CUDA版本1.1 打开NVIDIA控制面板,可以点右下角的NVIDIA设置1.2 点击系统信息,选择组件查看CUDA版本 2. 下载对应的CUDA版本3. 安装3.1 启动exe文件安装 4. 验证安装结果 CUDNN 环境…

Apache CXF Aegis databinding SSRF 高危漏洞修复

一、漏洞修复 Apache CXF Aegis databinding SSRF漏洞 Spring Web UriComponentsBuilder URL解析不当漏洞 二、修复步骤 1、Apache CXF Aegis databinding SSRF漏洞修复 步骤: 进入服务器搜索 databinding find -name *databinding* 发现版本是3.1.6 果断…

数据结构~~带环链表的环开始的节点位置**两种方法

1.带环链表环开始的位置 (1)上面的这个测试用例使用的是包含了4个节点的带环链表,我们要找的就是链表里面的环开始的节点的位置,拿这个测试用例而言,就是2这个节点,从这个节点开始,我们的链表就…

【C/C++笔试练习】TCP、IP广播、ARP协议、IP路由器、MAC协议、三次握手、TCP/IP、子网划分年、会抽奖、抄送列表

文章目录 C/C笔试练习选择部分(1)TCP(2)IP广播(3)ARP协议(4)IP路由器(5)MAC协议(6)三次握手(7)TCP/IP&#xf…

PHP在线制作表白网源码

PHP在线制作表白网源码,送女友个惊喜吧,无数据库,上传就能用,后台/admin,账号密码都是admin 百度网盘:https://pan.baidu.com/s/1rbD2_8IsP9UPLK-cdgEXfA?pwdre59

【全开源】AJAX家政上门服务系统小程序自营+多商家(高级授权)+独立端

基于FastAdmin和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统,用户端、服务端(高级授权)、门店端(高级授权)各端相互依赖又相互独立,支持选择项目、选择服务人员、选择门店多种下单方式,支持上门服务和到店核销两种服务方式…

我在去哪儿薅到了5块钱火车票代金券,速薅

哈哈,亲爱的薅羊毛小伙伴们! 刚刚在去哪儿大佬那儿发现了一个超级薅羊毛福利!我只花了短短两分钟,就搞到了一张5块钱火车票代金券,简直是天上掉馅饼的节奏啊! 话不多说,薅羊毛的姿势给你们摆好…

代码随想录算法训练营第十六天(py)| 二叉树 | 104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

104.二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 思路1 迭代法 层序遍历 层序遍历的思路很简单,其结果本来就是按层数记录的,只需返回结果的长度皆可。…

【C语言回顾】联合和枚举

前言1. 联合体1.1 联合体的声明1.2 联合体的特点1.3 联合体的使用 2. 枚举2.1 枚举的声明2.2 枚举的特点2.3 枚举的使用 结语 #include<GUIQU.h> int main { 上期回顾: 【C语言回顾】结构体 个人主页&#xff1a;C_GUIQU 专栏&#xff1a;【C语言学习】 return 一键三连;…

Linux多线程系列三: 生产者消费者模型,信号量使用,基于阻塞队列和环形队列的这两种生产者消费者代码的实现

Linux多线程系列三: 生产者消费者模型,信号量,基于阻塞队列和环形队列的这两种生产者消费者代码的实现 一.生产者消费者模型的理论1.现实生活中的生产者消费者模型2.多线程当中的生产者消费者模型3.理论 二.基于阻塞队列的生产者消费者模型的基础代码1.阻塞队列的介绍2.大致框架…

别说废话!说话说到点上,项目高效沟通的底层逻辑揭秘

假设你下周要在领导和同事面前汇报项目进度&#xff0c;你会怎么做&#xff1f;很多人可能会去网上搜一个项目介绍模板&#xff0c;然后按照模板来填充内容。最后&#xff0c;汇报幻灯片做了 80 页&#xff0c;自己觉得非常充实&#xff0c;但是却被领导痛批了一顿。 这样的境…

树的非递归遍历(层序)

层序是采用队列的方式来遍历的 就比如说上面这颗树 他层序的就是&#xff1a;1 24 356 void LevelOrder(BTNode* root) {Que q;QueueInit(&q);if (root){QueuePush(&q, root);}while (!QueueEmpty(&q)){BTNode* front QueueFront(&q);QueuePop(&q);print…

简析网络风险量化的价值与应用实践,如何构建网络风险预防架构

网络风险量化能够让公司董事会和高管层看清当前的网络安全风险格局&#xff1b;它还将使安全团队能够在业务需求的背景下做出网络安全决策&#xff0c;帮助组织确定哪些风险对业务构成最大的威胁&#xff0c;以及预期的经济损失将是什么。 随着网络攻击手段的日益多样化和复杂…

多模态大模型新进展——GPT-4o、Project Astra关键技术丨青源Workshop第27期

青源Workshop丨No.27 多模态大模型新进展—GPT-4o、Project Astra关键技术主题闭门研讨会 刚刚过去的两天&#xff0c;OpenAI、Google纷纷发布了多模态大模型的最新成果&#xff0c;GPT-4o、Project Astra先后亮相。 本周五&#xff08;北京时间5月17日&#xff09;18点&#x…

O2OA(翱途)开发平台数据统计如何配置?

O2OA提供的数据管理中心&#xff0c;可以让用户通过配置的形式完成对数据的汇总&#xff0c;统计和数据分组展现&#xff0c;查询和搜索数据形成列表数据展现。也支持用户配置独立的数据表来适应特殊的业务的数据存储需求。本文主要介绍如何在O2OA中开发和配置统计。 一、先决…

【30天精通Prometheus:一站式监控实战指南】第6天:mysqld_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们&#x1f44b;   欢迎加入【30天精通Prometheus】专栏&#xff01;&#x1f4da; 在这里&#xff0c;我们将探索Prometheus的强大功能&#xff0c;并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。&#x1f680;   Prometheus是云原生和DevOps的…

PersonalLLM——探索LLM是否能根据五大人格特质重新塑造一个新的角色?

1.概述 近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;&#xff0c;例如ChatGPT&#xff0c;致力于构建能够辅助人类的个性化人工智能代理&#xff0c;这些代理以进行类似人类的对话为重点。在学术领域&#xff0c;尤其是社会科学中&#xff0c;一些研究报告已经…

正心归一、绽放真我 好普集团正一生命文化艺术大赛(中老年赛区)正式启动

为进一步弘扬社会主义核心价值观&#xff0c;弘扬生命文化&#xff0c;提升公众对生命价值的认识与尊重&#xff0c;同时展现中老年艺术家的创作才华&#xff0c;激发广大中老年朋友的艺术热情和创造力。好普集团主办&#xff0c;幸福金龄会与正一生命科学研究&#xff08;广州…

AWS安全性身份和合规性之Artifact

AWS Artifact是对您很重要的与合规性相关的信息的首选中央资源。AWS Artifact是一项服务&#xff0c;提供了一系列用于安全合规的文档、报告和资源&#xff0c;以帮助用户满足其合规性和监管要求。它允许按需访问来自AWS和在AWS Marketplace上销售产品的ISV的安全性和合规性报告…

网络模型-VLAN聚合

VLAN聚合 VLAN聚合(VLAN Aggregation,也称SuperVLAN)指在一个物理网络内&#xff0c;用多个VLAN(称为Sub-VLAN)隔离广播域并将这些Sub-VLAN聚合成一个逻辑的VLAN(称为SuperVLAN)&#xff0c;这些Sub-VLAN使用同一个IP子网和缺省网关&#xff0c;&#xff0c;进而达到节约IP地址…