数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践

MySQL到openGauss对象迁移实践,

数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践

原创 酷哥 openGauss 2022-11-07 18:03 发表于广东

9月30日新发布的openGauss 3.1.0版本 ,工具的全量迁移和增量迁移的性能不但有了全面提升,而且支持数据库对象视图、触发器、自定义函数、存储过程的迁移。

  • 工具链:MySQL全量迁移支持并行迁移,提升全量迁移性能

    通过支持表级并行迁移,提升MySQL全量迁移性能,基于sysbench测试模型,在Kunpeng-920 2p服务器上,10张表(单表容量三百万以上)使用10并发迁移,可达到大于300M/s的迁移性能。

  • 工具链:MySQL增量迁移支持十五级并行消费,提升增量迁移性能

    基于开源三方件mysql-binlog-connector-java解析mysql的binlog, 并根据mysql主备进行复制的原理,对可并行的事务在openGauss端采用多线程进行并行回放,以实现MySQL到openGauss的在线迁移。

    利用sysbench对MySQL压测,在10张表30个线程并发情况下,IUD混合场景下,在Kunpeng-920 2p服务器上测试整体增量迁移性能可达3w tps.

  • 工具链:支持基于默克尔树的数据校

    实现基于默克尔树的数据实时校验工具,支持MySQL数据迁移到openGauss时,源端与目的端数据全量和增量校验。

本篇就来分享一下使用chameleon工具进行从MySQL到openGauss的数据库对象迁移实践。

软件安装

  1. 由于我之前已经安装过3.0版本的工具了,需要先卸载一下。

[root@pekphisprb70593 chameleon]# pip3 uninstall chameleon
Uninstalling chameleon-3.0.0:
Would remove:
/usr/local/python3/bin/chameleon
/usr/local/python3/bin/chameleon.py
/usr/local/python3/lib/python3.6/site-packages/chameleon-3.0.0.dist-info/*
/usr/local/python3/lib/python3.6/site-packages/pg_chameleon/*
Proceed (y/n)? y
Successfully uninstalled chameleon-3.0.0
[root@pekphisprb70593 chameleon]# rm -rf chameleon-3.0.0-py3-none-any.whl

2.从官网https://opengauss.org/zh/supporttools.html 获取获取工具包:chameleon-3.1.0-py3-none-any.whl

图片

3.将新的3.1.0工具上传到openGauss数据库所在节点的chameleon文件夹下。

[root@pekphisprb70593 chameleon]# python3 -m venv venv
[root@pekphisprb70593 chameleon]# source venv/bin/activate
<think>好的,我需要帮助用户找到将数据从达梦数据库迁移openGauss的具体方法或工具。首先,我应该回顾用户提供的引用内容。引用[1]提到数据迁移DTS可以将云上MySQL迁移到达梦,但用户现在需要的是达梦到openGauss迁移。引用[2]则讨论了国产数据库的发展,并提到了openGauss和达梦都在流行度排行榜上,但并没有直接给出迁移方法。 接下来,我需要考虑可能的迁移方法。通常,数据库迁移可以通过使用官方工具、第三方工具或手动导出导入。达梦和openGauss都是国产数据库,可能有一些官方支持的工具。例如,openGauss可能有数据迁移工具,类似MySQLmysqldump或者使用ETL工具。 另外,用户提到的DTS(数据迁移服务)虽然引用中是用于MySQL到达梦,但可能也有支持达梦到openGauss的版本,需要确认。此外,检查是否有开源工具或脚本,比如使用ODBC/JDBC连接两者,通过中间格式如CSV或SQL文件进行迁移。 还需要考虑数据兼容性问题,比如数据类型差异、字符集、函数和存储过程的不同。用户可能需要先进行数据结构的转换,再迁移数据。此外,事务处理和约束在迁移过程中也需要处理。 最后,应建议用户查阅openGauss的官方文档,或联系两者的技术支持获取专用工具。同时,分步骤指导:评估迁移需求、选择工具、结构转换、数据迁移、验证数据,以确保完整性。</think>### 达梦数据库迁移openGauss的方法工具 #### 一、迁移工具选择 1. **openGauss官方工具** openGauss提供数据迁移工具 **gs\_loader** 和 **gs\_dump**,支持从其他数据库(如达梦)通过中间文件(如CSV、SQL)导入数据[^2]。需先将达梦数据库导出为通用格式(如SQL脚本或CSV),再通过以下命令导入openGauss: ```bash gsql -d postgres -p 5432 -f /path/to/dameng_export.sql ``` 2. **第三方ETL工具** - **Kettle(PDI)**:通过JDBC连接达梦和openGauss,配置数据抽取、转换、加载流程。需提前下载达梦JDBC驱动(DmJdbcDriver)和openGauss JDBC驱动(opengauss-jdbc)[^2]。 - **DataX**:阿里开源工具支持异构数据库迁移,需编写自定义JSON配置文件,指定达梦作为源端,openGauss为目标端。 3. **达梦官方工具兼容性** 达梦的 **DTS迁移工具** 主要面向其他数据库迁移至达梦,反向迁移需手动处理,但可通过导出为SQL文件后适配语法差异。 --- #### 二、迁移步骤详解 1. **数据结构兼容性处理** - **表结构转换**:使用达梦的 `dbms_metadata.get_ddl` 生成DDL语句,手动调整数据类型(如达梦的 `VARCHAR2` 改为openGauss的 `VARCHAR`)。 - **约束索引**:检查达梦的索引语法(如位图索引)是否openGauss兼容,必要时重构。 2. **数据导出导入** - **达梦端导出**: ```sql -- 使用dexp工具导出数据 ./dexp USERID=SYSDBA/SYSDBA@localhost:5236 FILE=dameng_data.dmp DIRECTORY=/data/backup ``` - **openGauss端导入**: ```bash # 使用gs_restore导入 gs_restore -U omm -W password -d opengauss_db /data/backup/dameng_data.dmp ``` 3. **代码层适配** - **存储过程/函数**:达梦的PL/SQL语法openGauss的PL/pgSQL存在差异,需逐项改写。例如,达梦的 `DBMS_OUTPUT.PUT_LINE` 需替换为openGauss的 `RAISE NOTICE`。 - **事务控制**:确保达梦的隐式事务逻辑(如自动提交)openGauss的显式事务模式(`BEGIN/COMMIT`)兼容。 --- #### 三、验证优化 1. **数据一致性校验** 使用 **pg_comparator** 或自定义脚本对比关键表的数据量和校验和。 2. **性能调优** - 调整openGauss的 `shared_buffers` 和 `work_mem` 参数以优化导入速度。 - 在迁移后执行 `ANALYZE` 更新统计信息。 --- #### 四、参考案例文档 - **openGauss官方迁移指南**:[《openGauss数据库迁移实践》](https://opengauss.org/zh/docs/2.0.1/docs/migration/migration.html) - **达梦openGauss数据类型对照表**:需重点关注数值类型(如达梦的 `NUMBER(10)` 对应openGauss的 `NUMERIC(10)`)和日期函数差异。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值