省流就是别用 pgloader , 它已经不支持新版 mysql 和 postgresql 了
安装 NMIG
NMIG 是一个用 node 写的 mysql 到 postgresql 的迁移工具, 截至目前支持 mysql 8.4 到 postgresql 17 的迁移
node: >= 18
bash
git clone https://github.com/AnatolyUss/nmig
cd nmig
npm install
npm run build
配置 NMIG
config
目录下的几个 json 配置文件都要看一下, config.json
是基本配置, 定义了源数据库和目标数据库的连接信息.
json
{
"source": {
"host": "127.0.0.1",
"port": 3306,
"database": "sample_stuff",
"charset": "utf8mb4",
"supportBigNumbers": true,
"user": "root",
"password": "0123456789"
},
"target": {
"host": "127.0.0.1",
"port": 5432,
"database": "sample_stuff",
"charset": "UTF8",
"user": "postgres",
"password": "0123456789"
},
}
data_types_map.json
定义迁移时数据类型的映射关系, 默认配置可能不适合你的业务情况.
比如它默认把 mysql 的 bool 类型 (tinyint(1)
) 转换为 postgresql 的 smallint
, 你可能希望它转换为 boolean
json
{
"tinyint": {
"increased_size": "int",
"type": "boolean",
"mySqlVarLenPgSqlFixedLen": true
},
}
迁移数据
执行迁移命令, 测试 100w 左右数据花了几十秒, 不算很慢, 如果卡住可以切断重试
bash
npm start
Q.E.D.