全部产品
阿里云办公

同步数据库的数据(无公网IP)

更新时间:2017-11-21 10:04:58

出于安全的考虑,您可能会在无公网 IP 服务器上搭建数据库,同时想将此种数据库中的数据同步上云,但是网络连通性会存在问题,导致此环境的数据不能直接同步。本文将为您介绍如何将无公网 IP 环境的下的 MySQL 数据同步到 MaxCompute。

环境准备

一般有 购买云服务 ECS 搭建 MySQL 数据库,没有分配公网 IP(弹性公网 IP)本地 IDC 机房无公网 IP 两种场景,详情如下:

场景一:购买云服务 ECS 搭建 MySQL 数据库 ,没有分配公网 IP(弹性公网 IP)

此场景下的操作流程,如下图所示:

  • 由于 ECS2 服务器没有访问公网的能力,所以本实验需要准备一台跟 ECS2 在同一网段的 ECS1 服务器并且有访问公网的能力。

  • ECS1 作为资源组,同步任务将在此机器运行。

  • 从 ECS2 服务器的 MySQL 数据库数据写入到 MaxCompute 中。

    注意:

    要给数据库赋权限,让 ECS2 服务器能访问到相应的数据库,这样才能将此数据库的数据读取到 ECS1 中,授权命令如下所示:

    1. grant all privileges on *.* to 'demo_test'@'%' identified by '密码'; --> %号代表给所有 IP 授权
  1. 购买 ECS。

    使用云账号 购买一台 ECS 服务器

    • ECS 服务器(弹性公网:120.76.2.21),作为调度资源组。

    • 本地机房搭建 MySQL 数据库 database:demo_test,表名:mytest。

    注意:

    • 推荐您使用 centos6、centos7 或者 aliyunos。

    • 添加的 ECS 服务器需要执行同步任务,需要检查当前 ECS 的 python 版本是否是 python2.6.5 以上的版本(centos 的版本 6.5 64 位)。

    • 建议不要分配公网 IP,可以绑定弹性公网 IP。

    • 购买 ECS 相应的情况,请登录 ECS 管理控制台进行查询。

  2. 自定义 ECS 需要购买公网带宽,具备访问公网能力。

    您可以通过以下两种方式进行自定义:

    • 购买 ECS 时,直接 分配 公网 IP 地址。

    • 如果不分配公网 IP,那么需要配置并绑定 弹性公网 IP,详情请参见 绑定弹性公网 IP

    ECS 服务器需要具备访问公网的能力,如果该 ECS 服务器既没有系统分配的公网 IP,也没有绑定弹性 IP,那么连接 Dataworks 时将出现问题,因为弹性公网(公网)IP 对于 Dataworks 的汇报心跳非常重要。

  3. 添加安全组。

    安全组是一个逻辑上的分组,是一种虚拟防火墙,由同一个地域(Region)内具有相同安全保护需求并相互信任的实例组成,可用于设置单台或多台 ECS 实例的网络访问控制,是重要的网络安全隔离手段。每个实例至少属于一个安全组,在创建时就需要指定。同一安全组内的实例之间网络互通,不同安全组的实例之间默认内网不通。可以授权两个安全组之间互访,详情请参见 应用案例。ECS1 添加安全组的情况,如下图所示:

    注意:

    添加安全组 172.31.46.0/24,端口范围设置为 -1/-1,这样添加私有网络的 IP 段,可以让整个172.31.46.0 的 IP 段连通,这样就保证了 ECS 能够连通本地机房的数据库,0.0.0.0/0是允许 ECS 访问所以 IP 段。

场景二:本地 IDC 机房无公网 IP

由于 机器1 没有访问公网的能力,所以需要准备一台跟机器1同一网段的 机器2,并且具备访问公网的能力。

  • 机器2 服务器(公网:120.76.2.21),作为调度资源组。

  • 本地机房搭建 MySQL 数据库 database:demo_test,表名:mytest。

操作步骤

新增调度资源

  1. 项目管理员进入 DataWorks > 调度资源列表,单击 新增调度资源,填写新增的调度资源名称,如下图所示:

  2. 添加调度资源后,单击弹出框中新建调度资源操作栏中的 服务器管理,进入服务器添加页面,将购买的 ECS 云服务器添加到资源组,如下图所示:

  3. 单击 增加服务器

    配置项说明如下:

    • 网络类型:选择经典网络和专有网络类型,根据您的网络类型而设定。

    • 服务器名称:输入真实主机的名称,不可自定义。

      经典网络下的获取方式:登录服务器,执行 hostname 命令,取返回值。

    • 机器 IP:输入专有网络 IP。

    完成上述操作后,即成功将新服务器的信息注册到 DataWorks 中,但是目前暂不能服务。

登录远程服务器

  1. 进入 管理控制台 > ECS 云服务器 > 实例 > 远程连接 页面,登录远程服务器进行相应的操作,如下图所示:

  2. 单击 远程连接

    注意:

    远程连接密码只出现一次,您以后每次远程连接登录时都需要输入该密码,请做好记录存档工作。

  3. 输入远程登录密码。

  4. 单击 复制命令输入,输入 hostname 命令,查找相关的结果。

    注意:

    如果您是机器2,那么您可以直接登入命令 hostname 查找相关的信息,不需要远程登入。

  5. 服务器初始化。

  6. 用 root 权限,登录服务器,su root,然后输入您设置的密码。

  7. 执行命令(该行命令直接 copy 界面提示,并执行):wget https://alisaproxy.shuju.aliyun.com/install.sh --no-check-certificate;

  8. 执行命令(该行命令直接 copy 界面提示,并执行):
    sh install.sh --user_name=zz_[调度资源唯一标识] --password=[AK 密码] --enable_uuid=false;

  9. 稍后(大约 15 秒)在添加服务器页面,单击 刷新 按钮,观察服务状态是否转 正常 状态,若显示正常则表示新建服务器注册成功。

执行完此处后,服务状态可能一直是 停止 状态,那么您可能碰到以下问题:

上图的错误原因是没有绑定 host,请参见以下步骤进行修改:

  1. 切换到 admin 账号。

  2. hostname -i 查看 host 绑定情况。

  3. vim / etc / hosts 添加 IP 地址和主机名。

  4. 刷新界面服务状态,若显示正常则表示新建服务器注册成功。

    注意:

    如果刷新后还是 停止 状态,您可以重启 alisa 命令:切换到 admin 账号 /home/admin/alisatatasknode/target/alisatatasknode/bin/serverct1 restart。

配置 MySQL 数据源

  1. 以开发者身份进入 DataWorks 管理控制台,单击对应项目操作栏中的 进入工作区

  2. 单击顶部菜单栏中的 数据集成,导航至 数据源 页面。

  3. 单击 新增数据源,弹出支持的数据源类型。如下图:

  4. 选择数据源类型为 MySQL。


    配置项说明:

    • 数据源类型:无公网 IP。

    • 数据源名称:由英文字母、数字、下划线组成且需以字符或下划线开头,长度不超过 60 个字符。

    • 数据源描述: 对数据源进行简单描述,不得超过 80 个字符。

    • JDBC URL:JDBC 连接信息,格式是jdbc:mysql://ServerIP:Port/Database 。

    • 用户名/密码:数据库对应的用户名和密码。

  5. 单击 测试连通性

  6. 此时测试连通性是 失败 的,直接单击 确认

配置同步任务

  1. 提供脚本配置样例如下:
  2. {
  3. "configuration": {
  4. "reader": {
  5. "plugin": "mysql",
  6. "parameter": {
  7. "datasource": "ecs_mysql",
  8. "column": [
  9. "id",
  10. "name",
  11. "sex",
  12. "age"
  13. ],
  14. "where": "",
  15. "splitPk": "",
  16. "table": "mytest"
  17. }
  18. },
  19. "writer": {
  20. "plugin": "odps",
  21. "parameter": {
  22. "odpsServer": "http://service.odps.aliyun.com/api",
  23. "tunnelServer": "http://dt.odps.aliyun.com",
  24. "partition": "",
  25. "truncate": false,
  26. "datasource": "odps_first",
  27. "column": [
  28. "id",
  29. "name",
  30. "sex",
  31. "age"
  32. ],
  33. "table": "mytest"
  34. }
  35. },
  36. "setting": {
  37. "errorLimit": {
  38. "record": "0"
  39. },
  40. "speed": {
  41. "concurrent": "10",
  42. "mbps": "10"
  43. }
  44. }
  45. },
  46. "type": "job",
  47. "version": "1.0"
  48. }

注意

MaxCompute 及其 Tunnel 服务的连接地址:

目前 MaxCompute 服务和 MaxCompute tunnel 连接默认的 MaxCompute 数据源地址可以连通,详情请参见 访问域名和数据中心,此文档详细介绍了在不同区域下,不同网络环境下,访问 MaxCompute 及其 Tunnel 服务的连接地址。

修改调度资源组

您配置好同步任务后调度任务仍未成功,只有配置的同步任务在之前添加的调度资源组中运行,才能成功,所以要修改调度资源组,操作步骤如下:

  1. 进入 DataWorks > 运维中心 页面,在 周期任务手动任务 中修改相应的调度任务。

  2. 选择同步任务,单击 修改资源组

  3. 选择要添加的资源组,单击 确认

    任务重跑结果:

    数据源的 mytest 表数据:

    同步到 MaxCompute 的结果: