Azure PostgreSQL至PlanetScale(MySQL)数据迁移后续操作咨询
Azure PostgreSQL 迁移至 PlanetScale 操作步骤
1. 导出PostgreSQL全量数据
使用pg_dump工具导出源库数据,规避PostgreSQL特有权限信息:
pg_dump -h <Azure PostgreSQL主机地址> -U <用户名> -d <目标数据库名> --no-owner --no-acl -f postgres_full_dump.sql
参数说明:
--no-owner:忽略对象所有者信息,适配MySQL权限体系--no-acl:跳过权限相关语句,避免导入时出错
2. 转换SQL语法适配MySQL/PlanetScale
PostgreSQL与MySQL语法存在差异,需手动或工具调整导出的SQL文件:
- 数据类型替换:将
SERIAL/BIGSERIAL改为INT AUTO_INCREMENT/BIGINT AUTO_INCREMENT;TIMESTAMP WITH TIME ZONE改为DATETIME;TEXT[]改为JSON或拆分字段 - 函数调整:
now()替换为CURRENT_TIMESTAMP;array_to_string()替换为GROUP_CONCAT() - 语法修正:删除PostgreSQL特有的
CREATE EXTENSION、COMMENT ON COLUMN等语句;将双引号包裹的标识符改为反引号(`) - 可选工具:用
pg2mysql自动化转换大部分语法,再手动校验特殊场景
3. 确认PlanetScale环境就绪
- 确保已创建对应数据库Schema,表结构与转换后的SQL文件匹配(字段类型、索引需提前对齐)
- 在PlanetScale控制台获取MySQL格式的连接信息(主机、用户名、密码、数据库名)
4. 导入数据至PlanetScale
使用MySQL客户端执行导入命令:
mysql -h <PlanetScale主机地址> -u <用户名> -p <数据库名> < converted_dump.sql
注意事项:
- 若数据量较大,拆分SQL文件分批导入,避免超时
- 在PlanetScale控制台调整
max_allowed_packet参数,适配大文件导入需求
5. 验证迁移结果
- 对比源库与目标库的表行数:
SELECT COUNT(*) FROM <表名> - 抽查核心业务数据,确认字段值、格式无异常
- 测试应用连接PlanetScale,验证业务逻辑正常运行
额外注意事项
- 全量迁移前建议暂停源库写操作,避免数据不一致;若需在线迁移,可使用CDC工具(如Debezium)同步增量数据
- 确保字符集一致:PostgreSQL的
UTF8对应PlanetScale的utf8mb4,避免乱码 - PlanetScale默认禁用外键约束,若业务依赖外键,需手动开启并添加约束
内容的提问来源于stack exchange,提问作者Suksham
相关产品推荐
相关产品推荐

