使用py-mysql2pgsql 简单实现mysql数据库迁移到pgsql

本文涉及的产品
全球加速 GA,每月750个小时 15CU
简介:

参考:https://pypi.python.org/pypi/py-mysql2pgsql


公司的有个项目,原先用的是MySQL数据库,现在要改成postgres。 于是搜了下,找到个py-mysql2pgsql工具。下面是笔记:


假设我们要把本机的mysql里面的gitlab_ci_production、gitlabhq_production 这2个库导入到本机的pgsql中(本地地址:192.168.2.100)


1、安装pgsql10

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-6-x86_64/pgdg-centos10-10-1.noarch.rpm


yum install postgresql10 postgresql10-server

yum install  postgresql10-devel


service postgresql-10 initdb

chkconfig postgresql-10 on

service postgresql-10 start


修改绑定地址

vim /var/lib/pgsql/10/data/postgresql.conf

listen_addresses = '*'


添加客户端IP放行(生产环境不建议放行0.0.0.0/0 范围太大了)

vim pg_hba.conf  

host    all    all   0.0.0.0/0    md5


/etc/init.d/postgresql-10 restart



2、在pgsql里面创建用户及相关的库:

su - postgres

psql

create user gitlab with password '123456' ;

create database gitlab_ci_production;

create database gitlabhq_production;

alter database gitlab_ci_production owner  to gitlab;

alter database gitlabhq_production owner  to gitlab;



echo "export PATH=/usr/pgsql-10/bin/:$PATH" >> /etc/profile

source /etc/profile




3、安装py-mysql2pgsql

pip install py-mysql2pgsql 


4、编写导出文件的yml,如下:

[root@localhost ~]# cat convert.yml  内容如下:

# if a socket is specified we will use that

# if tcp is chosen you can use compression

mysql:

hostname: localhost

port: 3306

socket: /tmp/mysql.sock

username: root

password: 123456

database: gitlab_ci_production

compress: false

destination:

# if file is given, output goes to file, else postgres

file:

postgres:

  hostname: 192.168.2.100

  port: 5432

  username: gitlab

  password: 123456

  database: gitlab_ci_production


[root@localhost ~]# cat convert2.yml   内容如下:

# if a socket is specified we will use that 

# if tcp is chosen you can use compression

mysql:

hostname: localhost

port: 3306

socket: /tmp/mysql.sock

username: root

password: 123456

database: gitlabhq_production

compress: false

destination:

# if file is given, output goes to file, else postgres

file:

postgres:

  hostname: 192.168.2.100

  port: 5432

  username: gitlab

  password: 123456

  database: gitlabhq_production



5、执行导入数据的命令:

py-mysql2pgsql -v -f convert.yml

py-mysql2pgsql -v -f convert2.yml


6、稍后去pgsql下验证下数据是否正常


具体参考:https://pypi.python.org/pypi/py-mysql2pgsql










本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1975363,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
235
分享
相关文章
【瑶池数据库动手活动及话题本周精选(体验ADB、 SelectDB,参与 RDS 迁移训练营)】(4.21-4.27)
本文为 “瑶池数据库动手活动及话题精选” 系列第一期,聚焦 SelectDB 日志分析、AnalyticDB Zero-ETL 集成、RDS 迁移训练营三大实战,设积分、实物等多重奖励,同步开启话题互动。点击链接参与,每周解锁数据库实战新场景。
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
用 YashanDB Migration Platform,数据库迁移不再是“高风险动作”
数据库迁移一直是企业信息化中的难题,耗时长、风险高。YashanDB Migration Platform(YMP)提供一站式解决方案,涵盖评估、改写、迁移与校验全流程。其核心能力包括SQL自动适配、智能对象迁移、高性能数据通道及数据对比校验,显著降低人力成本与业务风险。适合从Oracle、MySQL等迁移到YashanDB的企业,以及需异构整合或国产化替代的集团、政府和国企项目。YMP不仅是工具,更是推动数据库国产化的关键平台。
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
【YashanDB知识库】Kettle迁移MySQL到YashanDB
本文介绍了使用Kettle将MySQL数据库中的中文数据迁移到YashanDB的方法,解决因YMP不支持Latin1字符集导致的乱码问题。提供了Windows和Linux两种环境下的操作步骤,包括配置JAVA环境、解压作业包、设置数据库连接(MySQLInput与YashanOutput)、修改表列表配置文件及运行迁移任务。Windows环境支持图形界面便于调试,Linux环境网络性能更优。通过详细的操作指南,确保数据迁移成功并可重试无冲突。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
本文探讨了在使用YMP 23.2.1.3迁移MySQL Server字符集为latin1的中文数据至YashanDB时出现乱码的问题。问题根源在于MySQL latin1字符集存放的是实际utf8编码的数据,而YMP尚未支持此类场景。文章提供了两种解决方法:一是通过DBeaver直接迁移表数据;二是将MySQL表数据转换为Insert语句后手动插入YashanDB。同时指出,这两种方法适合单张表迁移,多表迁移可能存在兼容性问题,建议对问题表单独处理。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
238 0
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
176 0
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等