[分享] 如何迁移MySQL数据到PostgreSQL

Gitlab 中使用MySQL数据库已经成为过去式,早在GitLab 12.1版本开始,已经不支持使用MySQL数据库作为后台数据库,全面替换为了PostgreSQL数据库,其实在GitLab 9.x开始Omnibus安装方式已经停止了提供内置的 MySQL 程序,实例初始化只能将数据库初始化为PostgreSQL,

因此如果你所使用的GitLab实例依然使用的是MySQL数据库,如果有升级的需求就需要迁移数据库到PostgreSQL,官方提供了简单的迁移方式pgloader,此工具可以简单的进行数据迁移,文档中提供的迁移包含omnibus和source两种,但是从实际看,只推荐omnibus的方式进行迁移,在omnibus完成首次初始化后,即可将数据从其他MySQL数据库直接迁移到omnibus管理的PostgreSQL中。

如果你的omnibus实例使用了外置的PostgreSQL数据库,首先必须手动创建所需要的用户、数据库和扩展程序,然后通过omnibus实例执行migrate操作,以完成表的初始化构建,然后才能进行数据的迁移。虽然pgloader支持元数据的迁移,但是经过实际测试迁移后的元数据和内置的标准格式会有些许差异,虽然不影响使用,但是不保证是否会有潜在的风险。