使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试

YashanDB迁移实战

前言

首届YashanDB「迁移体验官」开放后,陆续收到「体验官」们的投稿,小崖在此把优秀的投稿文章分享给大家~今天分享的用户文章是《使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试》(作者:尚雷),满满干货,不要错过!

📣号外!新的征文活动已开启,点击此处即可跳转活动链接,最高可获千元大奖!🤩
](https://mp.weixin.qq.com/s/sLGLwmSDdKh5xISbj7IxwA)

说一下我和崖山数据库的结缘,大概在去年吧,因为我经常在墨天轮写文章,看到崖山数据库推出了一崖山体验官的活动,我就报名参加了。第一次体验了崖山数据库,也测试了我司数据库到崖山数据库的兼容性,发现崖山数据库的兼容性真的很不错的,尤其是对Oracle的兼容性做的真的挺不错。而且崖山数据库的一些命令和Oracle很兼容,对一些Oracle DBA来说上手特别容易,甚至可以说是无缝衔接。

最近受崖山数据库邀请作为【YashanDB迁移体验官】,体验了一把YMP的迁移,我也搭建了测试环境,并验证了我司一些Oracle和MySQL到崖山数据库的迁移,并参与了崖山的直播和大家分享了YMP的迁移感受。

在验证测试中也发现了一些YMP的问题,也将这些问题反馈了崖山官方技术人员,他们的响应速度也是非常快,对于反馈的一些问题有些已经提交研发进行修复,给他们点个大大的赞。

下面我将为大家附上我本次迁移测试的全过程,以及对YMP的迁移感受。不足之处还望大家多多指正。

也希望大家多多支持崖山,多多支持国产数据库,只有大家齐心协力,国产数据库的将来才会越来越好。

01 产品介绍

根据崖山官网介绍,崖山迁移平台(Yashan Migration Platform),简称YMP,是YashanDB提供的数据库迁移产品,支持异构RDBMS与YashanDB之间进行迁移评估、离线迁移、数据校验的功能。另外,YMP提供页面可视化服务,使用者只需通过一些简单的界面操作,即可完成从评估到迁移到数据一致性评估整个流程的执行与监控,整个操作过程门槛比较低,操作比较流畅。

YMP安装后,会集成一个YashanDB内置库,该内置库的作用是用于YMP进行校验评估是需要的,不能作为业务目标库使用,建议在做数据迁移时,单独部署一套YashanDB(目标端业务库)。

内置库是用于ymp在迁移评估阶段待迁移元数据的兼容度评估,不能作为业务目标库使用,做数据同步测试,部署一套YashanDB(目标端业务库)和YMP自嵌的内置库是很规范的。

当前YMP支持(Oracle、MySQL、DM)等异构库到YashanDB的迁移,也支持YashanDB到YashanDB的同构迁移。

YMP整个迁移过程包括如下六个主要阶段:

  • 创建任务

  • 迁移评估

  • 迁移配置

  • 离线迁移

  • 校验初始化

  • 一致性校验

1.1 产品架构

在崖山官网,有如下一幅图介绍YMP的总体架构,如下所示:

根据上面产品架构显示,主要包括了(对象评估、元数据迁移、数据迁移、数据校验)等几个核心服务。

1.2 数据库版本支持

根据官网资料介绍,当前最新版YMP版本为YMP 23.2,其对异构和同构数据库有一定的版本限制,详见如下:

另外在官网(链接:https://doc.yashandb.com/ymp/23.2/zh/产品简介/产品规格)页面中,也有对异构RDBMS库相应数据类型的支持。

02 外置库部署

部署外置库的目的是为将迁移评估后源端数据迁移到YashanDB后的目标端库,为保证迁移顺利,外置库存放数据目录一定要有足够存储空间。

建议将外置库和YMP内置库分开部署,推荐是将内置库和外置库部署在不同服务器上,若部署在同一台服务器,使用不同用户部署外置库和内置库。

因为条件限制,我本次选择在同一台物理测试服务器上部署外置库和YMP,两者分别部署在不同用户下,外置库选择部署在yashan用户下,内置库部署在ymp用户下。

对于外置库的安装部署,在官方文档里有详细的介绍,本次就不再做过多赘述,只是简单描述整个安装部署过程。(链接:https://doc.yashandb.com/yashandb/23.2/zh/产品描述/产品简介.html)

1) 软件下载

截止到2024-04-25日,当前YashanDB最新版本为23.2,可在官网主页【https://www.yashandb.com/】,点击【免费下载】根据操作系统类型下载YashanDB 个人版,当前可供下载的类型包括X86和ARM两种类型。

2)环境准备

环境准备包括服务器系统及网络规划、系统参数调整、目录及用户规划等,服务器和操作系统的配置要满足官网服务器配置需求。

3)软件安装

崖山数据库的安装方式有命令行安装和可视化安装两种类型,数据库安装类型有(单机主备部署、分布式部署、共享集群部署)这三种部署形态,可以按照自己的业务需求选择相应的部署方式。

4)初始化环境

数据库安装部署后,需要设置环境变量、初始数据库。如在安装过程中未对监听端口进行调整,默认监听端口为1688。可根据需要设置是否开机启动,实例如下。

[yashan@dsmart install]$ ./bin/yasboot package se gen --cluster yashandb -u yashan -p yashan --ip 10.110.8.42 --port 22 --install-path /data/yashan/yasdb_home  --data-path /data/yashan/yasdb_data --begin-port 1688
 hostid   | group | node_type | node_name | listen_addr      | replication_addr | data_path               
----------------------------------------------------------------------------------------------------------
 host0001 | dbg1  | db        | 1-1       | 10.110.8.42:1688 | 10.110.8.42:1689 | /data/yashan/yasdb_data 
----------+-------+-----------+-----------+------------------+------------------+-------------------------
 
Generate config success

补充:安装YashanDB时,可通过指定-d, --child参数,展示任务以及子任务信息,以便了解部署进度。如下所示:

[yashan@dsmart install]$ ./bin/yasboot cluster deploy -t yashandb.toml -d --child
 type  | uuid             | name               | hostid   | index             | status  | return_code | progress | cost 
------------------------------------------------------------------------------------------------------------------------
 task  | 274c34dbc58b9cbd | DeployYasdbCluster | -        | yashandb          | SUCCESS | 0           | 100      | 9    
-------+------------------+--------------------+----------+-------------------+---------+-------------+----------+------
 child | 9d1fafb987ad2b56 | DeployDBPrimary    | host0001 | yashandb.1-1      | SUCCESS | 
<think>好的,我现在需要回答用户关于数据库YashanDB)和MySQL数据库命令差异的问题。首先,我需要回想一下之前用户提到的信息,比如他们参与了YashanDB迁移体验,并提到了YMP工具的使用,以及查看监听地址参数的示例。用户现在想比较两者的命令差异,可能需要具体的例子来说明。首先,我应该从常见的数据库操作入手,比如基本操作、DDL、DML、事务控制、配置管理等方面。需要确保每个例子都准确,并且符合YashanDBMySQL的实际语法。比如,创建表的时候,MySQL使用ENGINE=InnoDB,而YashanDB可能用不同的语法,或者不需要指定存储引擎。接下来,要注意引用之前用户提供的例子,比如引用中的监听地址参数查询,在YashanDB使用了SHOWPARAMETER LISTEN_ADDR,而MySQL对应的可能是SHOWVARIABLES LIKE'port'。需要明确这些差异,并正确标注引用来源。 另外,用户可能对事务控制的命令感兴趣,比如自动提交的设置。MySQL使用SET autocommit=0,而YashanDB可能有不同的命令,比如SETAUTOCOMMIT OFF,这需要确认。 还要考虑用户可能的后续问题,比如性能调优命令、存储过程或迁移工具的使用,所以应该在相关问题里提前准备这些方向,帮助用户深入比较。 最后,确保回答结构清晰,分点列出,每个差异都有具体的示例,并且正确引用之前的资料。同时,检查LaTeX格式是否符合要求,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能数学公式较少,但如果有涉及数值的地方要注意格式。比如端口号1688在引用中出现,可能需要用$1688$,不过这里可能不需要,根据示例来看,用户的问题可能不涉及数学表达式,但需要遵循系统级指令的格式要求。 现在需要组织这些信息,确保每个部分都有对应的命令对比,并且引用正确。同时,生成的相关问题要围绕用户可能的兴趣点,比如迁移工具的使用、性能对比、兼容性等。</think>### 数据库MySQL命令差异对比 数据库YashanDB)与MySQL在命令语法上存在部分差异,主要体现在**数据定义、参数配置、事务控制**等方面。以下是具体对比: --- #### 1. **基本操作命令** - **查看数据库版本**: - MySQL:`SELECT VERSION();` - YashanDB:`SELECT BANNER FROM V$VERSION;` [^2] - **查看监听地址与端口**: - MySQL:`SHOW VARIABLES LIKE 'port';` - YashanDB:`SHOW PARAMETER LISTEN_ADDR;`(返回格式如`172.10.1.122:1688`)[^2] --- #### 2. **数据定义语言(DDL)** - **创建表**: ```sql -- MySQL(指定存储引擎) CREATE TABLE user (id INT PRIMARY KEY) ENGINE=InnoDB; -- YashanDB(无需指定引擎) CREATE TABLE user (id NUMBER PRIMARY KEY); ``` - **修改表结构**: ```sql -- MySQL(支持即时添加列) ALTER TABLE user ADD COLUMN name VARCHAR(255); -- YashanDB(需明确数据类型精度) ALTER TABLE user ADD (name VARCHAR2(100)); ``` --- #### 3. **数据操作语言(DML)** - **插入数据**: ```sql -- MySQL(支持多种语法) INSERT INTO user VALUES (1, 'Alice'); -- YashanDB(需严格匹配数据类型) INSERT INTO user (id, name) VALUES (1, 'Alice'); ``` - **分页查询**: ```sql -- MySQL使用LIMIT) SELECT * FROM user LIMIT 10 OFFSET 20; -- YashanDB使用ROWNUM或OFFSET-FETCH) SELECT * FROM user WHERE ROWNUM <= 10; ``` --- #### 4. **事务控制** - **开启事务**: ```sql -- MySQL(默认自动提交) SET autocommit=0; -- YashanDB(显式关闭自动提交) SET AUTOCOMMIT OFF; ``` - **保存点(Savepoint)**: ```sql -- MySQL SAVEPOINT sp1; -- YashanDB SAVEPOINT sp1; -- 语法相同,但实现可能依赖日志配置[^1] ``` --- #### 5. **配置与管理** - **参数查询**: ```sql -- MySQL SHOW VARIABLES LIKE 'max_connections'; -- YashanDB SHOW PARAMETER MAX_SESSIONS; -- 参数命名风格更接近Oracle[^2] ``` - **性能分析**: - MySQL:`EXPLAIN SELECT * FROM user;` - YashanDB:`EXPLAIN PLAN FOR SELECT * FROM user;`(需结合`DBMS_XPLAN`查看)[^1] --- ### 核心差异总结 | 类别 | MySQL | YashanDB | |------------|--------------------------------|-------------------------------| | **存储引擎** | 多引擎(InnoDB、MyISAM) | 单一引擎,高度集成优化 | | **数据类型** | 宽松(自动类型转换) | 严格(需显式指定精度) | | **兼容性** | 遵循SQL标准 | 兼容Oracle/MySQL混合语法[^1] | | **迁移工具** | 原生工具(mysqldump) | 依赖YMP工具(自动化迁移)[^1] | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值