首页 > 解决方案 > 使用 pgloader 从 Mysql 8 迁移到 postgres 失败

问题描述

我正在尝试从 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

我尝试创建这个:

create user 'pgloader'@'localhost' identified with mysql_native_password by 'pass'

但是当我尝试迁移时,我总是得到这个错误:

Failed to connect to mysql at "localhost" (port 3306) as user "pgloader": Condition QMYND:MYSQL-UNSUPPORTED-AUTHENTICATION was signalled.

标签: mysqlpostgresqlmigrationpgloader

解决方案


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

在过去的一年里,我遇到了 3 次这个问题。

第一种方法

对于第一个客户端,我可以根据此处的评论将 MySQL 降级到 v5.6。

第二种方法

对于具有小型数据库的第二个客户端,我一起破解了一些 shell 脚本。

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

第三种方法

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

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

我将来肯定会接触到 NMIG。


推荐阅读