MySql教程

使用DolphinScheduler调度DataX完成Mysql到Mysql的数据同步

本文主要是介绍使用DolphinScheduler调度DataX完成Mysql到Mysql的数据同步,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

使用DolphinScheduler调度DataX完成Mysql到Mysql的数据同步

  • DolphinScheduler集群的部署

    • 基础环境:

      • Mysql(5.7.25)

      • JDK(1.8.0_144)

      • Zookeeper(3.4.10)

  • 节点部署安排

    • 三台主机hadoop01,hadoop02,hadoop03
      • hadoop01 : master、alert、api machine
      • hadoop02:worker machine
      • hadoop03:worker machine
  • 集群部署步骤

    1. 将下载的二进制tar.gz包解压到部署目录。

      mkdir -p /opt/module/dolphinscheduler;
      cd /opt/module/dolphinscheduler;
      tar -zxvf apache-dolphinscheduler-1.3.6-bin.tar.gz -C /opt/module/dolphinscheduler;
      mv apache-dolphinscheduler-1.3.6-bin  dolphinscheduler;
      
    2. 创建用户:在所有部署调度的机器上创建部署用户,并且一定要配置sudo免密。假如我们计划在hadoop01,hadoop02,hadoop03这3台机器上部署调度,首先需要在每台机器上都创建部署用户。

      useradd dolphinscheduler;
      echo "密码" | passwd --stdin dolphinscheduler;
      sudo echo 'dolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers;
      sudo sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers;
      
    3. 配置hosts和ssh,为后续的一键部署做准备。

      vi /etc/hosts
      
      #127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
      ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
      192.168.32.10 hadoop01
      192.168.32.11 hadoop02
      192.168.32.12 hadoop03
      

      在hadoop01上,切换到部署用户并配置ssh本机免密登录

      su dolphinscheduler
      
      ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      chmod 600 ~/.ssh/authorized_keys
      
      ssh-copy-id  hadoop02
      ssh-copy-id  hadoop03
      
    4. 修改目录权限,使得部署用户对dolphinscheduler目录有操作权限

      sudo chown -R dolphinscheduler:dolphinscheduler dolphinschedule
      
    5. 数据库初始化

      mysql -h192.168.xx.xx -P3306 -uroot -p;
      
      mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
      mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY '1qaz2wsx';
      mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost' IDENTIFIED BY '1qaz2wsx';
      mysql> flush privileges;
      
    6. 修改 conf 目录下 datasource.properties ,配置存储元数据的数据库配置,这里主要是注释默认的postgresql,配置成mysql

      vi conf/datasource.properties
      
      # postgresql
      #spring.datasource.driver-class-name=com.mysql.jdbc.Driver
      #spring.datasource.url=jdbc:mysql://hadoop01:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true
      #spring.datasource.username=root
      #spring.datasource.password=945100
      
      # mysql
      spring.datasource.driver-class-name=com.mysql.jdbc.Driver
      spring.datasource.url=jdbc:mysql://hadoop01:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true
      spring.datasource.username=**
      spring.datasource.password=***
      
    7. 添加jar包,手动添加 [ mysql-connector-java 驱动 jar ] 包到 lib 目录下

    8. 执行创建元数据表及导入基础数据脚本

      sh script/create-dolphinscheduler.sh
      
    9. 修改 conf/env 目录下的 dolphinscheduler_env.sh 环境变量(以dataX任务为例,其他的配置先注销)

      #export HADOOP_HOME=/opt/soft/hadoop
      #export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
      #export SPARK_HOME1=/opt/soft/spark1
      #export SPARK_HOME2=/opt/soft/spark2
      export PYTHON_HOME=/opt/module/python 
      export JAVA_HOME=/opt/module/jdk1.8.0_144
      #export HIVE_HOME=/opt/soft/hive
      #export FLINK_HOME=/opt/soft/flink 
      export DATAX_HOME=/opt/module/dataX/datax
          
      #export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME:$PATH
      export PATH=$PYTHON_HOME/bin:$JAVA_HOME/bin:$DATAX_HOME:$PATH
      

      ​ 这里有几个坑,首先 DATAX_HOME的路径需要指定到datax.py所在路径,在PATH变量处不需要添加/bin,此外,dataX的同步依赖Python,因此需要配置Python的安装路径,并且Python的版本不能低于2.7!!!,我本来使用的Centos6自带的Python是2.6.5版本,导致后续启动dataX任务一直报错!!!

    10. 将jdk软链到/usr/bin/java下

      sudo ln -s /usr/java/jdk1.8.0_181-cloudera/bin/java /usr/bin/java
      
    11. 修改一键部署配置文件 conf/config/install_config.conf中的各参数(以dataX任务为例,其他的配置先注销)

      [dolphinscheduler@test1 dolphinscheduler-bin]$vi conf/config/install_config.conf
      # 这里填 mysql or postgresql
      dbtype="mysql"
      
      # 数据库连接地址
      dbhost="hadoop01:3306"
      
      # 数据库名
      dbname="dolphinscheduler"
      
      # 数据库用户名,此处需要修改为上面设置的{user}具体值
      username="root"   
      
      # 数据库密码, 如果有特殊字符,请使用\转义,需要修改为上面设置的{passowrd}具体值
      passowrd="xxxx"
      
      #Zookeeper地址,单机本机是localhost:2181,记得把2181端口带上
      zkQuorum="hadoop01:2181,hadoop02:2181,hadoop03:2181"
      
      #将DS安装到哪个目录,如: /usr/local/src/dolphinscheduler,不同于现在的目录
      installPath="/opt/module/dolphinscheduler"
      
      #使用哪个用户部署,使用之前创建的用户
      deployUser="dolphinscheduler"
      
      # 邮件配置,以qq邮箱为例
      # 邮件协议
      mailProtocol="SMTP"
      
      # 邮件服务地址,这是是qq邮箱
      mailServerHost="smtp.qq.com"
      
      # 邮件服务端口
      mailServerPort="587"
      
      # mailSender和mailUser配置成一样即可
      # 发送者
      mailSender="1009XXXXXX@qq.com"
      
      # 发送用户
      mailUser="1009XXXXXX@qq.com"
      
      # 邮箱密码,这里是开启协议后服务商提供的密码
      mailPassword="asdfrewgbvct"
      
      # TLS协议的邮箱设置为true,否则设置为false
      starttlsEnable="true"
      
      # 开启SSL协议的邮箱配置为true,否则为false。注意: starttlsEnable和sslEnable不能同时为true
      sslEnable="false"
      
      # 邮件服务地址值,参考上面 mailServerHost
      sslTrust="smtp.qq.com"
      
      # 业务用到的比如sql等资源文件上传到哪里,可以设置:HDFS,S3,NONE,单机如果想使用本地文件系统,请配置为HDFS,因为HDFS支持本地文件系统;如果不需要资源上传功能请选择NONE。强调一点:使用本地文件系统不需要部署hadoop
      resourceStorageType="HDFS"
      
      # 这里以保存到HDFS为例
      #注:但是如果你想上传到HDFS的话,NameNode启用了HA,则需要将hadoop的配置文件core-site.xml和hdfs-site.xml放到conf目录下,并配置namenode cluster名称;如果NameNode不是HA,则修改为具体的ip或者主机名即可
      #     本地文件系统:"file:///data/dolphinscheduler"   或    HDFS集群: hdfs://{具体的ip/主机名}:8020   
      defaultFS="hdfs://192.168.110.100:8020"
      
      # 如resourcemanager HA启用,则配置为ResourceManager节点的主备ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是单ResourceManager请配置yarnHaIps=""即可
      yarnHaIps=""
      
      # 如果ResourceManager是HA或者没有使用到Yarn保持默认值"yarnIp1"即可;如果是单ResourceManager,请配置真实的ResourceManager主机名或者ip
      singleYarnIp="192.168.xxx.xxx"
      
      # 资源上传根路径,支持HDFS和S3,由于hdfs支持本地文件系统,需要确保本地文件夹存在且有读写权限
      resourceUploadPath="/data/dolphinscheduler"
      
      # 具备权限创建resourceUploadPath的用户
      hdfsRootUser="hdfs"
      
      #在哪些机器上部署DS服务,本机选localhost(如下配置为单机配置,需要集群配置,直接参考默认值即可)
      ips="hadoop01,hadoop02,hadoop03"
      
      #ssh端口,默认22
      sshPort="22"
      
      #master服务部署在哪台机器上
      masters="hadoop01"
      
      #worker服务部署在哪台机器上,并指定此worker属于哪一个worker组,下面示例的default即为组名
      workers="hadoop02:default,hadoop03:default"
      
      #报警服务部署在哪台机器上
      alertServer="hadoop01"
      
      #后端api服务部署在在哪台机器上
      apiServers="hadoop01"
      
    12. 开始一键部署

      • 切换到部署用户dolphinscheduler,然后执行一键部署脚本

        sh install.sh
        
      • 脚本完成后,以下5个服务会分布启动在各个节点上

        MasterServer ----- master服务
        WorkerServer ----- worker服务
        LoggerServer ----- logger服务
        ApiApplicationServer ----- api服务
        AlertServer ----- alert服务
        


        如果以上服务都正常启动,说明自动部署成功部署成功后,可以进行日志查看,日志统一存放于logs文件夹内,dolphinscheduler的log日志目录: /opt/dolphinscheduler/logs

    13. 此时就可以登录Web UI界面(启动DolphinScheduler之前需要启动zookeeper和元数据库)

       地址: http://hadoop01:12345/dolphinscheduler
       用户名: admin
       密 码: dolphinscheduler123
      
    14. 集群启动命令

       1.一键停止集群所有服务
       	sh ./bin/stop-all.sh
       2.一键开启集群所有服务
       	sh ./bin/start-all.sh
       3.启停Master
           sh ./bin/dolphinscheduler-daemon.sh start master-server
           sh ./bin/dolphinscheduler-daemon.sh stop master-server
       4.启停Worker
       	sh ./bin/dolphinscheduler-daemon.sh start worker-server
       	sh ./bin/dolphinscheduler-daemon.sh stop worker-server
       5.启停Api
       	sh ./bin/dolphinscheduler-daemon.sh start api-server
       	sh ./bin/dolphinscheduler-daemon.sh stop api-server
       6.启停Logger
       	sh ./bin/dolphinscheduler-daemon.sh start logger-server
       	sh ./bin/dolphinscheduler-daemon.sh stop logger-server
       7.启停Alert
       	sh ./bin/dolphinscheduler-daemon.sh start alert-server
       	sh ./bin/dolphinscheduler-daemon.sh stop alert-server
      
  • 登录DolphinScheduler Web进行任务部署

    1.创建租户,租户是DS Job在集群中运行时使用的用户身份,如果配置的用户不存在,会自动创建该用户.

    2.创建用户,用户是登录客户端的账户,第一次使用admin,创建用户后既可以使用创建的用户登录Web客户端

  1. 创建告警组管理,设置组类型为邮件,并添加上面添加的用户,这个主要是邮件告警功能.
  2. 重新登录Web 客户端,使用test01登录.
  3. 在数据源中心,创建数据源,选择mysql,添加配置,并测试连接(使用高版本,如8.0.19时,需要将DolphinScheduler的lib下的依赖更新,并更新相应的驱动,否则再添加数据源时会报错。)

  1. 在项目管理中,添加项目,选择工作流定义,创建工作流,

​ 7. 上线工作流,并手动运行.可在工作流实例中查看工作流,待运行结束,可在任务实例中查看运行日志.

在这里插入图片描述

​ 这里dataX同步任务执行成功,并查看了dataX运行日志.

至此,使用DS调度DataX完成mysql到mysql的数据同步任务完成.

Tips:

	1.  集群启动时要启动zookeeper集群和元数据库服务
	2.  注意Python的版本,要保证是2.7以上
	3.  配置dataX的路径时要指定到datax.py的所在路径,PATH中要注意不要bin 
	4.  如果涉及到文件权限问题, 要注意设置文件访问权限,保证dolphinScheduler的操作权限.

这篇关于使用DolphinScheduler调度DataX完成Mysql到Mysql的数据同步的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!