在实际使用Datax的时候,可能会使用Datax同步mysq数据到mysql,实现数据库跨库同步或者多个mysql之间相互同步,那么怎么实现呢?我们一步步来实现(基于Datax 
3.0.0)
1、检查环境,需要安装完一个Datax
2、在mysql中创建源表和目标表,并在原表中插入数据,我们的目标是把源表的mysql数据同步到目标表中,我们当前测试表如下
(注意,数据库的源表以及目标表都需要有,Datax不会帮你创建)
源数据库:test
源表结构:
CREATE TABLE `student` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `name` varchar(100) DEFAULT NULL,
   `score` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
插入数据如下
 目标数据库名:datax
目标表
CREATE TABLE `test` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `name` varchar(100) DEFAULT NULL,
   `score` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
3、我们在安装Datax的服务器上创建json文件,我们文件创建在/opt/datax/job目录下,开发者可自定义保存文件路径
vim mysql2mysql.json
4、文件内容如下(需要修改的或者重要的已标红,大家直接修改即可)
{
     "job": {
         "content": [
             {
                 "reader": {
                     "name": "mysqlreader",
                     "parameter": {
                         "username": "mysql登录用户名",
                         "password": "mysql登录密码",
                         "connection": [
                             {
                                 "querySql": [
                                     "select id,name from student;"
                                 ],
                                 "jdbcUrl": [
                                     "jdbc:mysql://node01:3306/test"
                                 ]
                             }
                         ]
                     }
                 },
                 "writer": {
                     "name": "mysqlwriter",
                     "parameter": {
                         "writeMode": "insert",
                         "username": "mysql登录用户名",
                         "password": "mysql登录密码",
                         "column": [
                             "id",
                             "name"
                         ],
                         "preSql": [
                             "delete from test"
                         ],
                         "connection": [
                             {
                                 "jdbcUrl": 
"jdbc:mysql://node01:3306/datax?useUnicode=true",
                                 "table": [
                                     "test"
                                 ]
                             }
                         ]
                     }
                 }
             }
         ],
         "setting": {
             "speed": {
                 "channel": "1"
             }
         }
     }
 }
标红解释如下:
jdbcUrl:数据库的jdbcurl链接
username:mysql用户名
password:mysql用户登陆密码
querySql:mysqlreader中的参数,用作自定义sql,根据sql的灵活编写实现数据的增量、全量、特定列数据的同步,注意需要sql和mysqlwriter中的column字段数量、名称、类型需要对应上
column:mysqlwriter中的配置,写出你要写入目标表的列
preSql:在写入目标表的时候执行的语句,我们写了删除表中数据,这样才能保证目标表中没有脏数据
table:目标表名称
channel:执行的并行度,写大点性能会提高一些,不过要根据实际情况合理配置,数据量少1个够了
5、执行Datax,首先去到Datax的bin目录,然后执行
./datax.py /opt/datax/job/mysql2mysql.json
6、看到如下则证明执行成功
 再看数据库已经同步成功了