iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >数据传输 | dtle 使用初探
  • 373
分享到

数据传输 | dtle 使用初探

数据传输|dtle使用初探 2019-08-17 16:08:37 373人浏览 绘本
摘要

作者:马莹乐 爱可生研发团队成员,负责 Mysql 中间件和数据库管理平台的测试。擅长找茬(测试技术爱好者),欢迎大家试用 dtle~ 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

数据传输 | dtle 使用初探

作者:马莹乐 爱可生研发团队成员,负责 Mysql 中间件数据库管理平台的测试。擅长找茬(测试技术爱好者),欢迎大家试用 dtle~ 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


dtle 是一款爱可生 mysql 开源数据传输中间件,此文简要介绍初步使用方法。 项目地址:https://GitHub.com/actiontech/dtle

一、下载安装

环境说明:

  • 准备三台主机,主机名分别为:node4、node5、node6

  • 三台均为 agent,另将 node4 和 node5 作为 manager

1.1 下载

下载 dtle 最新的 release rpm 包 地址:Https://github.com/actiontech/dtle/releases

dtle 安装包下载:

wget https://github.com/actiontech/dtle/releases/download/v2.19.11.0/dtle-2.19.11.0.x86_64.rpm

1.2 安装

安装步骤 https://actiontech.github.io/dtle-docs-cn/4/4.0_installation.html

分别将 node4,node5 和 node6 的 dtle 安装完成。

1.3 启动 dtle

dtle 安装完成后,并未启动,需要先配置 dtle 的 conf 文件,再启动。

1.4 配置 dtle.conf

配置相关说明 https://actiontech.github.io/dtle-docs-cn/4/4.1_node_configuration.html

dtle.conf 准备:以下配置文件替分别替换原有 dtle.conf(/opt/dtle/etc/dtle/dtle.conf)

node4 的 dtle.conf

# Setup data dir
data_dir = "/opt/dtle/data"
log_level = "DEBUG"
log_file = "/opt/dtle.log"
#log_to_stdout = true

bind_addr = "172.100.9.4"

# Modify our port to avoid a collision with server
ports {
    http = 8190
}

# Enable the manager
manager {
    enabled = true

    # Self-elect, should be 3 or 5 for production,
    # Addresses to attempt to join when the server starts.
    join = [ "172.100.9.4","172.100.9.5" ]
}

# Enable the agent
agent {
    enabled = true
    managers = ["172.100.9.4:8191","172.100.9.5:8191"]
}

metric{
   collection_interval = "15s"
   publish_allocation_metrics = "true"
   publish_node_metrics = "true"
}

addresses {
    http = "172.100.9.4"
    rpc = "172.100.9.4"
    serf = "172.100.9.4"
}
advertise {
    http = "172.100.9.4"
    rpc = "172.100.9.4"
    serf = "172.100.9.4"
}

node5 的 dtle.conf

# Setup data dir
data_dir = "/opt/dtle/data"
log_level = "DEBUG"
log_file = "/opt/dtle.log"
#log_to_stdout = true

bind_addr = "172.100.9.5"

# Modify our port to avoid a collision with server
ports {
    http = 8190
}

# Enable the manager
manager {
    enabled = true

    # Self-elect, should be 3 or 5 for production,
    # Addresses to attempt to join when the server starts.
    join = [ "172.100.9.4","172.100.9.5" ]
}

# Enable the agent
agent {
    enabled = true
    managers = ["172.100.9.4:8191","172.100.9.5:8191"]
}

metric{
   collection_interval = "15s"
   publish_allocation_metrics = "true"
   publish_node_metrics = "true"
}

addresses {
    http = "172.100.9.5"
    rpc = "172.100.9.5"
    serf = "172.100.9.5"
}
advertise {
    http = "172.100.9.5"
    rpc = "172.100.9.5"
    serf = "172.100.9.5"
}

node6 的 dtle.conf

# Setup data dir
data_dir = "/opt/dtle/data"
log_level = "DEBUG"
log_file = "/opt/dtle.log"
#log_to_stdout = true

bind_addr = "172.100.9.6"

# Modify our port to avoid a collision with server
ports {
    http = 8190
}

# Enable the manager
manager {
    enabled = false

    # Self-elect, should be 3 or 5 for production,
    # Addresses to attempt to join when the server starts.
    join = [ "172.100.9.4","172.100.9.5" ]
}

# Enable the agent
agent {
    enabled = true
    managers = ["172.100.9.4:8191","172.100.9.5:8191"]
}

metric{
   collection_interval = "15s"
   publish_allocation_metrics = "true"
   publish_node_metrics = "true"
}

addresses {
    http = "172.100.9.6"
    rpc = "172.100.9.6"
    serf = "172.100.9.6"
}
advertise {
    http = "172.100.9.6"
    rpc = "172.100.9.6"
    serf = "172.100.9.6"
}

1.5 启动 dtle

启动命令说明 https://actiontech.github.io/dtle-docs-cn/4/4.2_command.html

1.6 查看 3 个节点 dtle 进程

node 4

node 5

node 6

1.7 尝试查看 dtle 架构是否符合预期

命令说明 https://actiontech.github.io/dtle-docs-cn/4/4.2_command.html

其中,members 展示的是集群中 manager 节点的信息

HTTP api https://actiontech.github.io/dtle-docs-cn/4/4.4_http_api.html

输出内容为 JSON 格式,可以安装 jq,使之格式化展示。

二、源端/目标端准备

Mysql 迁移用户准备

2.1 创建用户

源端用户创建

目标端用户创建

有关源端/目标端用户的最小权限说明 https://actiontech.github.io/dtle-docs-cn/4/4.5_mysql_user_privileges.html

2.2 数据准备

源端数据准备

目标端测试前库表情况

2.3 创建 job

创建全量 + 增量,表级别迁移 job,分别使用 node5 和 node6 节点的 dtle 作为源端和目标端迁移的 agent

job 配置相关参数 https://actiontech.github.io/dtle-docs-cn/4/4.3_job_configuration.html

2.3.1 准备 job.json

job.json
{
    "Name":"have_a_try",
    "Failover":false,
    "Orders":[],
    "Type":"synchronous",
    "Tasks":[
        {
            "Type":"Src",
            "NodeId":"ee97dc49-85ed-febc-4d3c-cfbfa87f46bd",
            "Config":{
                "Gtid":"",
                "DropTableIfExists":false,
                "SkipCreateDbTable":false,
                "ApproveHeterogeneous":true,
                "ReplChanBufferSize":"600",
                "ChunkSize":"2000",
                "ExpandSyntaxSupport":false,
                "MsgBytesLimit":"20480",
                "MsgsLimit":"65536",
                "BytesLimit":"67108864",
                "GroupMaxSize":"1",
                "GroupTimeout":"100",
                "SqlFilter":[],
                "ReplicateDoDb":[
                    {
                        "TableSchema":"test",
                        "Tables":[
                            {
                                "TableName":"test1"
                            }
                        ]
                    }
                ],
                "ConnectionConfig":{
                    "Host":"172.100.9.1",
                    "Port":"3306",
                    "User":"src_test",
                    "PassWord":"test"
                }
            }
        },
        {
            "Type":"Dest",
            "NodeId":"e623aedd-5c37-da67-4ddf-1a82ce1ac298",
            "Config":{
                "ParallelWorkers":"1",
                "ConnectionConfig":{
                    "Host":"172.100.9.2",
                    "Port":"3306",
                    "User":"dest_test",
                    "Password":"test"
                }
            }
        }
    ]
}

其中 NodeId 可通过命令或者 HTTP API 查询得知。

2.3.2 创建job

创建 job 试用 HTTP API https://actiontech.github.io/dtle-docs-cn/4/4.4_http_api.html

创建完成后查询 job 状态为 running

job 详细信息可使用 HTTP API 查询,示例

[
    {
        "CreateIndex":109,
        "ID":"ba13f3e1-0630-f141-4c60-a1f36c61cdb3",
        "JobModifyIndex":2372,
        "JobSummary":{
            "Constraints":null,
            "CreateIndex":109,
            "Datacenters":[
                "dc1"
            ],
            "EnforceIndex":false,
            "Failover":false,
            "ID":"ba13f3e1-0630-f141-4c60-a1f36c61cdb3",
            "JobModifyIndex":2372,
            "ModifyIndex":2372,
            "Name":"have_a_try",
            "Orders":[

            ],
            "Region":"global",
            "Status":"running",
            "StatusDescription":"",
            "Tasks":[
                {
                    "Config":{
                        "GroupMaxSize":"1",
                        "ChunkSize":"2000",
                        "BinlogFile":"1.000002",
                        "MsgsLimit":"65536",
                        "GroupTimeout":"100",
                        "DropTableIfExists":false,
                        "ExpandSyntaxSupport":false,
                        "BytesLimit":"67108864",
                        "MsgBytesLimit":"20480",
                        "ReplChanBufferSize":"600",
                        "NatsAddr":"172.100.9.6:8193",
                        "ApproveHeterogeneous":true,
                        "SqlFilter":[
 
                        ],
                        "BinlogPos":4261,
                        "ConnectionConfig":{
                            "Host":"172.100.9.1",
                            "Port":"3306",
                            "User":"src_test",
                            "Password":"*"
                        },
                        "TrafficAgainstLimits":0,
                        "Gtid":"8868d98f-af5e-11e8-9aa9-0242ac110002:1-16",
                        "ReplicateDoDb":[
                            {
                                "TableSchema":"test",
                                "Tables":[
                                    {
                                        "TableName":"test1"
                                    }
                                ]
                            }
                        ],
                        "SkipCreateDbTable":false
                    },
                    "ConfigLock":{
 
                    },
                    "Constraints":null,
                    "Driver":"MySQL",
                    "Leader":false,
                    "NodeID":"ee97dc49-85ed-febc-4d3c-cfbfa87f46bd",
                    "NodeName":"",
                    "Type":"Src"
                },
                {
                    "Config":{
                        "BinlogFile":"1.000002",
                        "BinlogPos":4261,
                        "ConnectionConfig":{
                            "Host":"172.100.9.2",
                            "Port":"3306",
                            "User":"dest_test",
                            "Password":"*"
                        },
                        "Gtid":"8868d98f-af5e-11e8-9aa9-0242ac110002:1-16",
                        "ParallelWorkers":"1",
                        "NatsAddr":"172.100.9.6:8193"
                    },
                    "ConfigLock":{

                    },
                    "Constraints":null,
                    "Driver":"MySQL",
                    "Leader":true,
                    "NodeID":"e623aedd-5c37-da67-4ddf-1a82ce1ac298",
                    "NodeName":"",
                    "Type":"Dest"
                }
            ],
            "Type":"synchronous"
        },
        "ModifyIndex":2372,
        "Name":"have_a_try",
        "Status":"running",
        "StatusDescription":"",
        "Type":"synchronous"
    }
]

2.4 查询目标端迁移情况

目标端迁移前后对比:

新增两个库其中 test 库是我们 job 迁移的结果。

dtle 库相关说明 https://actiontech.github.io/dtle-docs-cn/3/3.3_impact_on_dest.html

2.5 在源端执行普通 DML 操作

2.6 在源端执行普通 DDL 操作

小结

更多用法,详见项目文档,欢迎试用~ https://actiontech.github.io/dtle-docs-cn/

您可能感兴趣的文档:

--结束END--

本文标题: 数据传输 | dtle 使用初探

本文链接: https://www.lsjlt.com/news/5230.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据传输 | dtle 使用初探
    作者:马莹乐 爱可生研发团队成员,负责 mysql 中间件和数据库管理平台的测试。擅长找茬(测试技术爱好者),欢迎大家试用 dtle~ 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 ...
    99+
    2019-08-17
    数据传输 | dtle 使用初探
  • 数据传输 | dtle 之 job 实现简析
    作者:吕海龙 爱可生 DTLE 团队成员,负责 DTLE 开发 ,日常问题处理以及相关问题的排查。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 从 job 文件到源端目标端的数据传...
    99+
    2018-11-08
    数据传输 | dtle job 实现简析
  • 数据传输 | DTLE Release Notes 详细解读 2.19.11.0
    ​2.19.11.0 版本 DTLE Release Notes 以下对 DTLE 2.19.11.0 版本的 Release Notes 进行详细解读。 文章主要分为四部分内容: 一、DTLE 项目介绍 二、版本特征 三、Bug 修复...
    99+
    2014-11-11
    数据传输 | DTLE Release Notes 详细解读 2.19.11.0
  • Go语言使用Gob传输数据
    目录创建 gob 文件读取 gob 文件为了让某个数据结构能够在网络上传输或能够保存至文件,它必须被编码然后再解码。当然已经有许多可用的编码方式了,比如 JSON、XML、Googl...
    99+
    2023-05-14
    Go语言 Gob传输数据 Go语言 传输数据
  • python使用tcp传输图片数据
    本文实例为大家分享了python使用tcp传输图片数据的具体代码,供大家参考,具体内容如下 数据包格式如下 客户端: import socket import sys HOST,PORT = "172.18...
    99+
    2022-06-02
    python tcp传输图片数据 python传输数据 python传输图片数据
  • 使用PHP和Redis进行数据传输
    随着数据处理量的不断增加,如何高效地进行数据传输已成为许多企业面临的挑战。在此背景下,PHP和Redis的组合,成为了一种可行的数据处理解决方案。本文将介绍如何使用PHP和Redis进行数据传输,以及它的优势和适用场景。一、什么是Redis...
    99+
    2023-05-15
    PHP redis 数据传输
  • 怎么使用servlet向前端传输数据
    使用Servlet向前端传输数据可以通过以下步骤:1. 在Servlet中获取要传输的数据,可以从数据库、文件等地方获取数据。2. ...
    99+
    2023-08-25
    servlet
  • 怎么在ajax中使用json传输数据
    本篇文章给大家分享的是有关怎么在ajax中使用json传输数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JSON(JavaScript Object Notation) 是...
    99+
    2023-06-08
  • Go语言怎么使用Gob传输数据
    这篇文章主要讲解了“Go语言怎么使用Gob传输数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言怎么使用Gob传输数据”吧!为了让某个数据结构能够在网络上传输或能够保存至文件,它必须...
    99+
    2023-07-05
  • Java使用TCP实现数据传输实例详解
    Java使用TCP实现数据传输实例详解TCP所提供服务的主要特点:  1.面向连接的传输;  2.端到端的通信;  3.高可靠性,确保传输数据的正确性,不出现丢失或乱序;  4.全双工方式传输;  5.采用字节流方式,即以字节为单位传输字节...
    99+
    2023-05-31
    java tcp 数据传输
  • Android使用socket进行二进制流数据传输
    目录引言简单的自定义协议完整的代码结语引言 使用socket流传输二进制流数据,比如文件或者视频图片等等信息的时候,我们通常使用tcp协议传输,因为tcp协议可以保证二进制流按序到达...
    99+
    2023-05-15
    Android二进制流数据传输 Android二进制传输
  • 如何用rc5做数据传输加密
    在c++项目中使用rc5对数据传输进行加密的方法具体方法如下:#include "stdafx.h"#include#include #include #define UINT32 unsigned int#define INT32 int...
    99+
    2022-10-18
  • 数据传输用什么加密算法
    常用于数据传输加密的加密算法有以下几种RSA算法RSA算法是一种使用不同的加密密钥与解密密钥,是由已知加密密钥推导出解密密钥在计算上是不可行的密码体制,其原理是根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以...
    99+
    2022-10-19
  • Java 中怎么利用Socket传输数据
    Java 中怎么利用Socket传输数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们将这个对象串行化至文件系统,然后将之还原,Java Socket传输数...
    99+
    2023-06-17
  • 使用PHP trait DTO简化数据传输层的实现
    在PHP开发中,经常会涉及到数据传输层的设计,用于在不同层次之间传递数据。而传统的数据传输对象(Data Transfer Object,简称DTO)的实现方式往往比较繁琐,需要手动创建类并定义各个属性和方法。为了简化这一过程,我们可以利用...
    99+
    2023-10-21
    dto PHP trait 数据传输层
  • 如何使用ogg将Oracle数据传输到flume刷到kafka
    本篇内容主要讲解“如何使用ogg将Oracle数据传输到flume刷到kafka”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用ogg将Oracle数据传输到flume刷到kafka”吧!...
    99+
    2023-06-02
  • Android怎么使用socket进行二进制流数据传输
    本篇内容主要讲解“Android怎么使用socket进行二进制流数据传输”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android怎么使用socket进行二进制流数据传输”吧!简单的自定义协议...
    99+
    2023-07-06
  • 两台云服务器怎么互联使用数据传输
    选择适当的协议 在使用云计算平台时,需要选择适合您需求的协议。以下是几种常用的协议:HTTP、FTP、SMTP和POP3。您需要选择一种适合您的应用程序和数据需求的协议。 下载数据 当您开始将数据从一个主机传输到另一个主机时,您需...
    99+
    2023-10-28
    互联 数据传输 两台
  • 使用PHP trait DTO实现数据传输对象的封装
    引言:在PHP开发中,常常需要进行数据传输对象(DTO)的封装,以便于在不同层之间传递数据。而使用Trait是一种非常便利的方式来实现DTO的封装。本文将介绍如何使用PHP Trait来实现DTO的封装,并提供具体的代码示例。一、什么是数据...
    99+
    2023-10-21
    PHP dto trait
  • Python文件接口和二维码:探索高效数据存储和传输的新领域。
    Python文件接口和二维码:探索高效数据存储和传输的新领域 在当今数字化时代,数据的存储和传输已经成为企业和个人必不可少的任务。Python作为一种高效,易学习的编程语言,已经成为了数据科学和工程领域的首选工具。在本文中,我们将探讨Pyt...
    99+
    2023-10-09
    文件 接口 二维码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作