使用pgloader从Mysql 8迁移到postgres失败

aym*_*406 7 mysql migration postgresql pgloader

我正在尝试从 MySQL 数据库迁移到 PostgreSQL 数据库。

有没有办法在不修改my.cnf文件的情况下从MySQL迁移到PostgreSQL?

pgloader mysql://root:root_password@127.0.0.1/mysql_database postgresql://postgres_user:postgres_pass@127.0.0.1/postgres_database
Run Code Online (Sandbox Code Playgroud)

我尝试创建这个:

create user 'pgloader'@'localhost' identified with mysql_native_password by 'pass'
Run Code Online (Sandbox Code Playgroud)

但是当我尝试迁移时,我总是收到此错误:

create user 'pgloader'@'localhost' identified with mysql_native_password by 'pass'
Run Code Online (Sandbox Code Playgroud)

Dan*_*evy 8

截至 2021 年 4 月,pgloader 缺乏对 MySQL v8 中较新的 SHA2 身份验证模式的支持。(升级是一项相当大的工作。)

去年我遇到这个问题 3 次。

第一种方法

对于第一个客户端,我能够按照此处的评论将 MySQL 降级到 v5.6。

第二种方法

对于第二个拥有小型数据库的客户端,我将一些 shell 脚本组合在一起。

  1. SSH 来获取mysqldump(绝对需要使用这些选项。)
  2. 将 SQL 语法重新格式化为 postgres。
  3. 然后针对 postgres 目标执行 exec。

第三种方法

我的第三个客户有更多的数据,数百个表中有 4-5TB。

这次我找到了NMIG,一个基于Node的可配置数据迁移工具。经过一些调整和配置后,它似乎运行得很好。

我将来肯定会选择 NMIG。