如何使用pgloader迁移MySQL数据库至openGauss

openGauss小助手 openGauss小助手 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

pgloader介绍

pgloader是一个数据导入工具,使用COPY命令将数据导入到PostgreSQL。pgloader有两种工作模式,一种是从文件导入,一种是迁移数据库。pgloader在两种情况下都使用PostgreSQL的COPY协议高效的传输数据。

openGauss兼容PostgreSQL的通信协议以及绝大部分语法,可使用pgloader将MySQL数据库迁移至openGauss。

pgloader在openGauss上的问题

由于openGauss 对原生PostgreSQL的通信协议进行了安全加固,这导致与PostgreSQL的默认通信协议互相不兼容了,因此,使用pgloader的PostgreSQL原生版本默认是不能连接openGauss的。会报类似下述错误:

 处理方式是通过修改GUC进行规避,涉及的GUC参数是password_encryption_type,PostgreSQL默认的加密方式是md5,由于md5已经不安全了,为了提高openGauss的安全能力,openGauss支持sha256, 并且默认是sha256的加密方式,这就导致了上述报错。但是openGauss并没有删除md5的加密和验证逻辑,因此,是可以通过修改该GUC参数开启md5加密方式的。

开启方法:

gs_guc reload -D $PGDATA -c "password_encryption_type = 1"

一定要在设置完上述参数后,再新建用户。然后就可以使用该新建用户登录数据库了。

接下来我们将演示如何使用pgloader迁移MySQL数据库至openGauss。

安装pgloader

您可以直接从 apt.postgresql.org 和官方 debian 存储库 packages.debian.org/pgloader 安装 pgloader。

$ apt-get install pgloader

同时,您也可以通过 docker image 使用pgloader。

 

$ docker pull dimitri/pgloader$ docker run --rm --name pgloader dimitri/pgloader:latest pgloader --version$ docker run --rm --name pgloader dimitri/pgloader:latest pgloader –help

配置pgloader

pgloader提供丰富的配置项,您可以自由定义迁移时的各类动作,如通过include drop,删除目标数据库中名称出现在MySQL数据库中的所有表,以允许连续多次使用同一命令,从干净的环境自动启动。

这里简单介绍几个常用的配置项。

FROM:源数据库的连接URL,格式如下:

  mysql://[user[:password]@][netloc][:port][/dbname][?option=value&...]

INTO:目标数据库的连接URL,格式如下:

  postgresql://[user[:password]@][netloc][:port][/dbname][?option=value&...]

WITH:从MySQL数据库加载时的选项。有include drop、create tables、create indexes等选项。

CAST:用户自定义类型转换规则。允许用户覆盖已有的默认转换规则或者使用特殊情况修改它们。

部分迁移:用户可以通过 including only table names matching 和 excluding table names matching 实现只迁移特定的表或者在迁移过程中排除特定的表。

详细的配置项解读,可查看官网的说明:

https://pgloader.readthedocs.io/en/latest/ref/mysql.html

下面是一份从MySQL迁移到openGauss的配置文件示例:

LOAD DATABASE

FROM mysql://mysql_test:password123@1.1.1.1:3306/mysql_database

INTO postgresql://opengauss_test:password_123@1.1.1.1:5432/opengauss_database

WITH include drop, create tables, create indexes, reset no sequences,

workers = 8, concurrency = 1,

multiple readers per thread, rows per range = 50000

CAST

type varchar when(= 1 precision) to "boolean" drop typemod keep default keep not null;

以上配置文件的含义是,迁移数据时,MySQL侧使用的用户名密码分别是 mysql_test 和 password123。MySQL服务器的IP和port分别是1.1.1.1和3306,待迁移的数据库是mysql_database。

openGauss侧使用的用户名密码分别是 opengauss_test 和 password_123。openGauss服务器的IP和port分别是1.1.1.1和5432,目标数据库是opengauss_database。

需要注意的是,这里使用的用户需要有远程连接MySQL和openGauss的权限,以及对对应数据库的读写权限。同时对于openGauss,运行pgloader所在的机器需要在openGauss的远程访问白名单中。

创建用户及database

在openGauss侧创建迁移时需要用到的用户以及database。

运行pgloader进行数据迁移

以下演示基于使用docker image方式安装的pgloader。将前面准备好的配置文件命名为 openGauss.loader。


启动docker:docker run -tid --name pgloader_test dimitri/pgloader
复制配置文件到docker:docker cp ./openGauss.loader pgloader_test:/
进入docker环境:docker exec -it pgloader_test /bin/bash

 

在openGauss侧查看迁移结果: 

 

 

 

...全文

相关推荐

风光火储多源协同参与电网一次调频与二次 AGC 调频控制策略研究(Simulink仿真实现)

内容概要:本文围绕“风光火储多源协同参与电网一次调频与二次AGC调频控制策略”开展研究,重点利用Simulink搭建包含风能、光伏、火电及储能系统的综合电力系统仿真模型,实现多能源协同频率调节控制。研究系统性地对比了PSO优化RBF模糊神经网络自适应PID、RBF模糊神经网络PID、传统PID等多种先进控制算法在一次调频(快速响应)与二次AGC调频(精确调节)中的动态性能表现,深入分析了各类控制器对频率偏差、调节时间及超调量的影响。通过仿真验证,充分展示了智能优化与自适应控制算法在提升高比例新能源接入下电网频率稳定性方面的显著优势。研究内容涵盖系统建模、控制器设计、参数优化方法及仿真验证全流程,突出多源协调控制对现代电力系统安全稳定运行的关键作用。; 适合人群:具备电力系统分析、自动控制理论及新能源并网技术背景,熟练掌握Matlab/Simulink仿真工具,从事电力系统动态仿真、智能控制算法开发、新能源集成优化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究高比例可再生能源并网背景下的电网频率稳定问题及解决方案;②构建多源协同调频的仿真验证平台,支持新型控制策略的测试与评估;③对比分析传统PID与智能优化算法(如模糊控制、神经网络、群体智能优化)在调频应用中的控制性能差异;④为学术论文撰写、科研项目申报、毕业设计或工程方案优化提供可复现的技术参考与数据支撑。; 阅读建议:建议结合提供的Simulink仿真模型与m函数代码进行动手实践,重点关注不同控制算法的结构设计、参数整定过程及优化方法的实现细节。可通过修改系统结构、扰动条件或替换优化算法(如将PSO改为GA或GWO)等方式进行拓展实验,以深化对多源协同调频机理与智能控制优势的理解。

李锦科研

产业园区如何精准匹配企业技术需求与科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

高校技术转移办公室人员如何高效完成科研成果的推广与对接?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

政府科技管理者如何提升科技成果转化政策的执行效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

Python3 for-else特殊语法

Python是唯一自带for-else语法的主流语言,新手极易忽略。else代码块仅在for循环正常遍历结束、未触发break时执行。如果循环内部通过break强制跳出,else代码会直接跳过。典型业务场景:遍历列表查找目标数据,找到就break,找不到执行else输出未查询到。对比传统写法,无需额外定义标记变量,精简代码行数。需要区分else和continue关系:continue仅跳过单次循环,不影响整体遍历,不会阻断else执行。日常开发搜索、匹配场景优先使用该语法,替代flag标记变量,减少冗余代码。 ogzhibow.com odmeta.com ogzbw.org okguanzhuangji.cn www.ogzbapp.org

2601_97326324
评论
收藏 已收藏
分享
返回顶部
openGauss小助手
openGauss小助手 业界专家认证 业界专家认证
openGauss 158 成员 228 内容