ITPub博客

首页 > 数据库 > 数据库开发技术 > openGauss学习笔记-311 openGauss 数据迁移-MySQL迁移-MySQL语法兼容性评估工具

openGauss学习笔记-311 openGauss 数据迁移-MySQL迁移-MySQL语法兼容性评估工具

原创 数据库开发技术 作者:shuchaoyang 时间:2024-03-11 21:00:00 0 删除 编辑

openGauss学习笔记-311 openGauss 数据迁移-MySQL迁移-MySQL语法兼容性评估工具311.1 代码获取311.2 编译插件311.3 运行311.4 举例311.4.1 case 1:311.4.2 case 2:311.4.3 case 3:311.5 结果311.6 原理

openGauss学习笔记-311 openGauss 数据迁移-MySQL迁移-MySQL语法兼容性评估工具

本工具支持利用已有的openGauss节点评估数据SQL文本在openGauss的兼容性。包含但不限于以下限制:

  • 仅支持SQL文本文件输入,且SQL之间以;分割。

  • 不使用dolphin、whale等兼容性插件场景,不兼容语句的报错信息可能不准确。如果使用对应插件,需遵循插件使用约束。

  • 暂不支持#注释,请将文本内的#注释替换为--注释或直接删除。

  • 存储过程、函数语句仅支持:创建体的合法性校验和函数体的语法兼容校验。

  • 对于评估结果的准确率:

    • 完全兼容:openGauss完全支持该语法。兼容结果可能依赖于传入SQL语句的前置执行结果,因此实际在openGauss内执行时不一定完全兼容。

    • 语法兼容:openGauss支持该语法,但是实际使用过程中可能包含字段类型不支持、函数不存在等问题。

    • 语句不兼容:openGauss不支持该语法。

    • 不支持评估:未考虑的语句。后续会陆续支持语句评估(例如create database等跨数据库影响语句)。

    • 忽略语句:注释等。

311.1 代码获取

  • openGauss源码路径:

https://gitee.com/opengauss/openGauss-server

  • openGauss插件仓路径:

https://gitee.com/opengauss/Plugin

311.2 编译插件

  • 必备插件

  • 数据库运行时使用以下插件可以提高整体兼容率。

  1. 下载openGauss源码,按照READMD.md指导编译openGauss源码。

  2. 将上述插件拷贝到openGauss源码路径的contrib路径下。cd进入对应目录后make install -sj。

  3. 将插件必须的文件拷贝到对应二进制路径下面。一般来说包含:extesion.so、Extension.sql,Extension.control。assessment插件包含可执行文件assessment_database。本例中涉及文件如下:如果使用的二进制为步骤1中的二进制,此步骤可以省略。

assessment依赖文件

二进制路径
├── bin
│   └── ***assessment_database***
├── lib
│   └── postgresql
│       └── ***assessment.so***
└── share
  └── postgresql
      └── Extension
          ├── ***assessment--1.0.sql***
          └── ***assessment.control***

dolphin依赖文件

二进制路径
├── lib
│   └── postgresql
│       └── ***dolphin.so***
└── share
  └── postgresql
      └── Extension
          ├── ***dolphin--1.0.sql***
          └── ***dolphin.control***

311.3 运行

  1. 确保有一个正在运行的数据库,且当前支持通过gsql命令连接数据库。

  2. 运行命令如下:assessment_database [args],其中args包含以下参数:

311.4 举例

311.4.1 case 1:

通过gs_initdb初始化数据库并启动,假设启动端口为5432。此时可以通过gsql -dpostgres -p5432方式直接连接数据库。假设输入文件为test.sql,输出报告路径为result.html,评估的源数据库类型为B,则评估使用的命令为:

assessment_database -p5432 -cB -ftest.sql -oresult.html

此时回显信息为:

assessment_database: create database "assessment_197561" automatically.
assessment_database: Create plugin[dolphin] automatically.
assessment_database: Create Extension[assessment] automatically.
assessment_database: 解析[100.00%]:35/35
assessment_database: Create database assessment_197561 automatically, clear it manually!

311.4.2 case 2:

假设远程已经有数据库节点,在兼容性评估节点可以通过`gsql -dpostgres -p5432 -h127.0.0.2 -Utest -W*****连接数据库。假设输入文件为test.sql,输出报告路径为result.html,评估的源数据库类型为B,则评估使用的命令为:

assessment_database -p5432 -cB -h127.0.0.2 -Utest -W***** -ftest.sql -oresult.html

311.4.3 case 3:

假设远程已经有数据库节点,且自己创建了evaluation数据库用于兼容性评估。在兼容性评估节点可以通过`gsql -devalution -p5432 -h127.0.0.2 -Utest -W*****连接数据库。期望通过假设输入文件为test.sql,输出报告路径为result.html,则评估使用的命令为:

assessment_database -p5432 -devaluation -h127.0.0.2 -Utest -W***** -ftest.sql -oresult.html

即将case 2中的-cB换成-devaluation指定数据库即可。

311.5 结果

评估工具最终会生成评估报告,以html形式展示。包含如下内容:语句、兼容类型、失败原因。兼容类型包括:语法兼容、完全兼容、语法不兼容、不支持评估。相关说明如下:

  • 完全兼容:openGauss完全支持该语法。执行结果依赖于数据库已有的表、函数、存储过程等。

  • 语法兼容:openGauss支持该语法,但是实际使用过程中可能包含字段类型不支持、函数不存在等问题。

  • 语句不兼容:openGauss不支持该语法。

  • 不支持评估:未考虑的语句。后续会陆续支持语句评估(例如create database等跨数据库影响语句)。

311.6 原理

  1. 首先存在一个正常运行的数据库节点,可以直接通过gs_initdb初始化。

  2. 配置好对应连接参数,连接参数与openGauss的gsql连接方式是一致的。

  3. 如果指定-c 兼容类型方式,工具会通过上述配置的连接参数连接到数据库,手动创建对应兼容类型评估数据库,再通过create Extension创建必要的插件。(如assessment、dolphin)。

  4. 如果指定-d database方式,工具会在对应数据库创建插件。

  5. 在对应评估数据库评估。评估类型包含:语法树兼容评估、实际语句是否兼容评估。


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!


原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303573