Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

0.0_QuickStart

lulu2panpan edited this page Dec 28, 2019 · 40 revisions

概要

  • 【环境准备】

    1. 操作系统

    a. DataLink为纯java编写,windows/linux/Mac均可支持,建议linux
    b. jdk建议使用1.8以上的版本,稳定可靠,目前DataLink使用1.8版本

    2. 组成部分

    a. 整个DataLink数据同步由Manager和Worker两部分组成,分别需要预先进行安装
    b. 受限于架构设计,Manager提供的部分页面操作,需要依赖于Worker(原因:需要通过Worker调用部分插件提供的功能,只有worker提供了classloader隔离机制),所以操作manager时,请至少启动一个worker,后续我们会对该缺陷进行重构

    3. Zookeeper

    DataLink依赖于Zookeeper进行分布式调度,需要安装一个Zookeeper节点或者集群

    4. Mysql

    Datalink的运行需要依赖各种配置信息、以及在运行过程中会动态产生监控和统计数据,统一保存到Mysql中

环境安装

Manager_Quickstart

  • 【环境准备】

    1. 初始化Mysql

    DataLink运行需要依赖各种配置信息统一用Mysql存储,所以需要预先安装mysql,并初始化DataLink Manager的系统表结构
    a. 安装mysql
    b. 初始化DataLink Manager系统表:
    //下载数据库脚本文件:
    wget https://github.com/ucarGroup/DataLink/blob/master/dl-biz/src/main/resources/biz/sql/ucar_datalink.sql
    //导入数据库脚本:
    source ucar_datalink.sql

    2. 安装Zookeeper

    DataLink Manager的高可用依赖于zookeeper,所以需要预先安装zookeeper.
    a. manager需要在manager.properties中指定zookeeper集群地址,格式:ip:port,ip:port,...

  • 【启动步骤】

    1. 下载DataLink Manager

    //直接下载 ,可访问: https://github.com/ucarGroup/DataLink,会列出所有历史的发布版本包下载方式
    or
    //将项目的Git仓库复制一份出来
    git clone git@ github.com/ucarGroup/DataLink.git
    //在项目根目录下打包
    mvn clean package -Dmaven.test.skip=true
    打包完成后,会在根目录下产生target文件夹,下面包含dl-manager子文件夹和dl-manager.tar.gz,这里使用dl-manager子文件,也可以将dl-manager.tar.gz解压之后使用。

    2. 配置修改

    cd /target/dl-manager/conf
    //根据需要修改zk与数据库配置

    (1)设置zk的地址:
    manager.properties里面zk的默认配置如下
    zookeeper.servers=localhost:2181
    注:若zk没有在本机器启动,需要将localhost设置为zk所在机器的ip
    (2)设置ucar_datalink数据库的ip、用户名、密码:
    datasource.properties里面数据库的默认配置如下
    datasource.url=jdbc:mysql://localhost:3306/ucar_datalink
    datasource.username=root
    datasource.password=722b14aca98fcafe
    注:将localhost设置为ucar_datalink所在机器的ip,密码可以设置为明文或密文(通过代码中DbConfigEncryption的encrypt方法加密),(上述默认配置中的密码"722b14aca98fcafe"对应的明文是"121121",可以参考使用)。

    3. 准备启动

    //通过脚本启动manager
    sh /target/dl-manager/bin/startup.sh
    注意:
    Mac终端下执行sh startup.sh脚本可能会报如下日志
    /var/spool/cron/root: No such file or directory
    /var/spool/cron/root: Permission denied
    首先查看是否存在目录/var/spool/cron,若存在则直接用管理员权限创建root文件:sudo -s touch root,若不存在该目录需要先创建。
    然后,针对mac 下终端访问文件出现"Permission Denied",解决方案如下:
    一个文件有3种权限,读、写、可执行,你这个文件没有可执行权限,需要加上可执行权限。
    1)终端下先 cd到该文件的目录下
    2)执行命令sudo chmod a+x ./root
    这样就可以打开该文件了

    4. 查看日志

    more /target/dl-manager/logs/manager/manager.log
    2018年07月19日 16:22:59.350 [main] INFO com.ucar.datalink.manager.core.server.JettyServer - ##Jetty Embed Server is started.
    2018年07月19日 16:22:59.353 [main] INFO com.ucar.datalink.manager.core.monitor.MonitorManager - MonitorManager is started.
    2018年07月19日 16:22:59.362 [main] INFO com.ucar.datalink.manager.core.schedule.ScheduleService - schedule service change to standby mode success.
    2018年07月19日 16:22:59.362 [main] INFO com.ucar.datalink.manager.core.schedule.ScheduleServer - ##ScheduleServer is started.
    2018年07月19日 16:22:59.362 [main] INFO com.ucar.datalink.manager.core.server.ServerContainer - ServerContainer is started.
    2018年07月19日 16:22:59.362 [main] INFO com.ucar.datalink.manager.core.boot.ManagerBootStrap - ## the datalink manager is running now ......
    出现类似日志,代表启动成功

    5. 验证

    访问: http://ip:8080/,ip即为manager所部署机器的ip,出现DataLink的页面,即代表启动成功:

    mainPage 访问: http://ip:8080/userReq/login,初始用户名和密码为:admin/admin,即可完成登录。admin默认角色为超级管理员,拥有所有操作权限,开发者可以根据场景需求自定义用户角色,通过分配角色权限来进行系统的权限控制,目前的权限控制精确到按钮和action级别。

    6. 关闭

    //通过脚本关闭manger
    sh /target/dl-manager/bin/stop.sh

Worker_Quickstart

  • 【环境准备】

    1. 安装DataLink Manager

    DataLink Worker会受DataLink Manager进行管理,所以需要预先按上述步骤安装DataLink Manager。

    2. 配置Worker

    完成Manager安装后,需要在Manager页面为Worker配置信息
    a. 由于每个Worker都属于一个分组,所以首先新增分组信息:访问Manager页面的集群管理/分组管理页面,点击新增按钮添加分组:

    group
    b.访问Manager页面的集群管理/机器管理页面,点击新增按钮添加机器:

    worker
    几点说明:
    分组名称和机器名称可以随意定义,方便自己记忆即可
    所属分组:每个Worker节点都有唯一一个所属的分组
    机器ip:对应Worker节点将要部署的机器ip
    Rest端口:对应Worker节点提供rest服务的端口,建议值:8083
    注:原则上允许单机多Worker指定不同的端口,通过client.id显示指定Worker,但是在非开发环境为了简化运维成本,一台机器上部署一个Worker,这样,可以通过IP反查来定位Worker。

  • 【启动步骤】

    1. 下载DataLink Worker

    //直接下载 ,可访问: https://github.com/ucarGroup/DataLink ,会列出所有历史的发布版本包下载方式
    or
    //将项目的Git仓库复制一份出来
    git clone git@ github.com/ucarGroup/DataLink.git
    //在项目根目录下打包
    mvn clean package -Dmaven.test.skip=true
    打包完成后,会在根目录下产生target文件夹,下面包含dl-worker子文件夹和dl-worker.tar.gz,这里使用dl-worker子文件夹。

    2. 配置修改

    cd /target/dl-worker/conf
    //根据需要修改worker.properties中的manager和zk配置,以及其他配置

    (1)设置跟worker进行通信的manager配置
    #datalink-manager
    bootstrap.servers=localhost:8898,localhost:8899
    注:若manager没有在本机启动,则需要将localhost设置为manager所在机器的ip
    (2)设置zk配置
    #zookeeper
    zookeeper.servers=localhost:2181
    注:若zk没有在本机器启动,需要将localhost设置为zk所在机器的ip
    其他配置默认如下:
    #worker运行模式,distributed/standalone
    worker.bootMode=distributed
    zookeeper.session.timeout.ms = 30000
    zookeeper.connection.timeout.ms = 10000
    注:Worker支持两种启动方式:standalone和distributed,前者启动时只依赖于数据库,后者启动时需要同时依赖数据库、datalink-manager和zookeeper

    3. 准备启动

    sh /target/dl-worker/bin/startup.sh
    注意:
    如果下载的是0.0.1版本,由于该版本设置的启动内存为5G,最大内存为6G,启动的时候可能会报错'Cannot allocate memory',需要手动修改脚本,将内存调小点。

    4. 查看日志

    more /target/dl-worker/logs/worker/worker.log

    2018年09月18日 08:08:09.071 [main] INFO com.ucar.datalink.worker.core.runtime.WorkerController - Worker Controller started.
    2018年09月18日 08:08:09.071 [main] INFO com.ucar.datalink.worker.core.boot.WorkerBootStrap - ## the datalink worker is running now ......

    出现类似日志,代表启动成功

    5. 验证

    访问: http://ip:8080,ip即为manager所部署机器的ip,查看集群管理/机器管理列表中对应的Worker节点状态,如果机器状态变为了"正常",并且启动时间变为了你刚刚启动的时间,代表已经正常启动,否则,机器状态会是"异常"。

    workerStatus

    6. 关闭

    sh /target/dl-worker/bin/stop.sh
    关闭后,可查看下Manager页面,检查下Worker节点状态.

IDEA_Quickstart

【相关资源】

推荐开发工具:IDEA
Jdk版本要求:8
开发库配置:ucar_datalink

【搭建流程】

1. 配置Manager

(若需启动多个Manager,添加新的配置文件和启动配置即可),如下所示:

idea-1

2. 配置Worker

(若需启动多个worker,添加新的配置文件和启动配置即可),如下所示:

idea-2

3. 创建分组

在t_dl_group表中创建一个自己的分组(不要使用别人的分组)。
或者,也可以如上述Worker_QuickStart中介绍的在页面上创建分组

idea-3

4. 注册Worker

在t_dl_worker表中添加自己的机器配置,主要是指定IP和GroupId(不要将自己的机器注册到别人的分组下面,以免影响他人的使用)。
或者,也可以如上述Worker_QuickStart中介绍的在页面上配置Worker

idea-4

5. 修改worker1.properties文件

设置client.id的值为上一步中worker的id值
(注:Worker端支持两种类型的worker配置发现方式,一种是通过client.id显示指定,一种是通过IP定位,前者一般在开发环境使用,便于在一台机器上启动多个worker进程,在非开发环境采用的都是第二种方式)

idea-5
设置bootstrap.servers的值为Manager的host和port,多个的话,逗号分隔
设置classloader.type的值为Dev,开发环境用Dev,部署环境用Rel

6. 启动Zookeeper

Manager需要依托于Zookeeper实现高可用,Worker端需要将任务运行状态注册到Zookeeper

7. 设置profile

开源版本只有release版本的profile,开发过程中可以根据需要添加其他版本例如dev、test、pre、prod等环境的profile。
profile的指定比较灵活,下图是开发环境所指定的dev环境,当需要去测试环境Debug时当然可以设置成测试环境的profile,指定环境是为了保证编译后的配置是对应环境的配置。

idea-6

8. 编译项目并打包

必须提前打一次包,原因在于:Task运行时,插件依赖的jar包需要从打包后的路径获取
(注:为了实现版本隔离,我们自定义了DevPluginClassLoader,不会用编译器提供的classloader)

idea-7

9. 开启愉快之旅

启动Manager,启动Worker,To Meet a new world!!!

同步任务示例

【示例说明】

  1. 确保源数据库已开启binlog,并且binlog_format为ROW。
mysql> show variables like '%binlog_format%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |
+---------------+-------+
  1. 进行一张表的数据同步测试,测试的源表名为t_dl_test_source,包含id、name、create_time、modify_time几个字段,目标表名为t_dl_test_target,字段与源表相同。
//在源库创建表
CREATE TABLE `t_dl_test_source` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`create_time` datetime NOT NULL,
`modify_time` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
//在目标库创建表
CREATE TABLE `t_dl_test_target` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`create_time` datetime NOT NULL,
`modify_time` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

【同步任务配置步骤】

1. 添加数据源

在介质管理新增两个RDBMS数据库,分别作为源库和目标库。RDBMS数据库配置如下图所示:

RDBMS
schema:为目标库的名字
host配置:一个写IP,两个读IP分别作为主备(需要新增一个读IP),一个Etl-Host用于全量同步,不需要的话可以配置成跟读IP一样的(我们在公司内部的系统还集成了全量同步部分,但此次开源只有增量部分)
读写库用户配置:同时配置读写库用户是为了复用数据源,一个数据源可以作为一个同步任务的源端,亦可作为另一个同步任务的目标端
注:这里配置的数据库密码要用明文。

2. 添加Task

在增量任务-Task管理-MysqlTask新增Task,执行源端为Mysql的同步任务
a. 基础配置:选择Task所属分组和目标状态,Task名称格式为"源库名称_2_xxx"
b. Reader配置:关联数据源选择正确的源端数据库,其他参数无特殊需求可使用默认设置
c. Writer配置:选择目标库类型,其他参数无特殊需求可使用默认设置

3. 添加同步映射(同步表信息、映射规则等)

a. 任务名称:选择上一步新建的Task
b. 目标库名称:选择要同步到的目标库
c. 源表名称:选择源端要同步的表t_dl_test_source
d. 表别名:为源表对应的目标端的表名,默认和源表名称相同,这里改为t_dl_test_target
e. 更多配置:点击"修改",可以设置同步的映射模式(列的黑白名单、列别名)、拦截器、主键跳过等其他功能

4. 添加映射成功之后,重启Task

5. 同步任务配置完成后,测试数据

手动在源库插入或更改数据,例如:

INSERT INTO `t_dl_test_source` (`name`, `create_time`, `modify_time`) VALUES ('release', now(), now());

然后快速在目标库进行查看数据,验证数据是否同步成功:

mysql> select * from t_dl_test_target;
+----+---------+---------------------+---------------------+
| id | name | create_time | modify_time |
+----+---------+---------------------+---------------------+
| 53 | release | 2018年09月19日 18:30:12 | 2018年09月19日 18:30:12 |
+----+---------+---------------------+---------------------+

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /