AnalyticDB PostgreSQL(以下简称 ADB PG 版)作为阿里云上热门的实时数仓产品, 已经赢得大量对大规模数据实时分析需求客户的肯定, 目前在阿里云上已经提供了多种方式 (包括但不限于 DataWorks,DTS,rds_dbsync 等) 将数据从 MySQL 中同步到 ADB PG 版中进行数据分析. 但是有点缺陷的是, 由于 ADB PG 版是一个分布式的分析型数据库, 表结构的定义和传统的关系型数据库差异较大, 前面的工具中都没有提供表结构的同步, 这也成为困扰客户的问题, 因此我们基于开源工具贴身做了个表结构转换的工具.
功能介绍
该工具主要提供将 MySQL 中的表结构转换为 ADB PG 版规范的表结构, 只需要有简单的 python 环境和 mysqldump 就可以使用. MySQL 中的无主键表需要单独处理一下, 因为 ADB PG 版在建表时是需要指定分布列的, 工具默认会将 MySQL 中的主键列设置为分布列, 对于无主键表, 用户需要修改生成的建表语句, 为无主键表指定分布列.
获取工具
db_converter 的 GitHub 地址: https://github.com/wuchase/mysql-postgresql-converter
使用步骤
使用 mysqldump dump 出 PG 兼容的 MySQL 建表语句(修改下面语句中的 databasename 和 dumpfile.sql), 此处 dump 语句很重要, 一定要转为 PG 兼容的建表语句:
mysqldump --opt --compatible=PostgreSQL --default-character-set=utf8 -d databasename -r dumpfile.sql -u username -p
执行转换脚本, dumpfile.sql 和 adbforpg.sql 填写真实的值
python db_converter.py dumpfile.sql adbforpg.sql
adbforpg.sql 是转换后的 ADB for PG 的建表语句, 如果需要有需改需求, 可以直接在文件中进行修改. 重点要关注一下分布列的选择, 默认选择 MySQL 表中的主键作为分布列, 如果 MySQL 表结构中无主键, 请手动修改选择分布列.
作者: chasewu
阅读原文
来源: http://www.jianshu.com/p/78731d755bbf