数据库迁移工具Datax初步使用(Win上启动迁移mysql8的数据)

Mars 2020年09月10日 34次浏览

环境准备(我在win下测试,linux同理)

  • datax包下载
    datax下载
  • python2.x准备
    我本机是python3的环境
    image.png
    因此下载python2的安装包
    python2官网下载
    本站下载(windows环境的安装包)
    测试(由于已有python环境,为了简单直接指定python路径)
    image.png
  • 由于我的mysql都是8以上的版本,datax不支持,因此替换mysql驱动包
    进入datax目录下的\plugin\writer\mysqlwriter\libs和\plugin\writer\mysqlreader\libs下面删除mysql5.x的包,粘贴进mysql8.x的驱动包(可以找找自己本地maven仓库的mysql\mysql-connector-java下的驱动包)
    image.png

准备mysql.json配置文件,并放到datax目录下

我是本地mysql数据迁移到服务器的mysql,以下为配置示例

{
    "job": {
        "content": [{
            "reader": {
                "name": "mysqlreader",
                "parameter": {
                    "username": "root",
                    "password": "admin",
                    "column": ["id", "user_name", "create_time", "del_time"],

                    "connection": [{
                        "table": [
                            "user"
                        ],
                        "jdbcUrl": [
                            "jdbc:mysql://localhost:3306/study?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=UTF-8"
                        ]
                    }]
                }
            },
            "writer": {
                "name": "mysqlwriter",
                "parameter": {
                    "username": "root",
                    "password": "密码",
                    "column": ["id", "user_name", "create_time", "del_time"],
                    "connection": [{
                        "table": [
                            "user"
                        ],
                        "jdbcUrl": "jdbc:mysql://ip:端口/study?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=UTF-8"
                    }]
                }
            }
        }],
        "setting": {
            "speed": {
                "channel": 1,
                "byte": 104857600
            },
            "errorLimit": {
                "record": 10,
                "percentage": 0.05
            }
        }
    }
}

表user创建脚本如下,分别在源数据库和目标数据库创建表

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `password` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `real_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `img` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `is_del` int(1) DEFAULT NULL COMMENT '1 删除 0 未删除 默认1',
  `create_time` date DEFAULT NULL,
  `del_time` date DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

启动datax

  • 本地user库插入几条数据
  • 指定python版本,切换到datax目录下执行启动命令
C:\Python27\python bin/datax.py mysql.json

image.png

  • 观察日志,查看目标数据库是否有数据
    迁移完成会有个统计日志
    image.png
    目标数据库也有了数据
    image.png