实时数据同步工具<Maxwell入门简介及原理解析、安装部署>


简述: 对于离线数仓项目中将MySQL中的数据同步到大数据平台使用的工具是sqoop,而我们在大数据处理中并不是只有离线计算,随着技术的发展,目前实时分析处理在大数据中占据了非常大的部分,那么在实时大数据项目中我们可以使用什么工具为我们将MySQL中的数据同步到大数据平台中呢!本文中的Maxwell就是为了解决这个问题的,接下来,让我们一起细细了解。

一、Maxwell的定义

Maxwell 是一个读取 MySQL binlogs 并将修改行字段的更新写入 Kafka, Kinesis, RabbitMQ, Google Cloud Pub/Sub 或 Redis (Pub/Sub or LPUSH) 以作为 JSON 的应用程序。

Maxwell 拥有可对底层进行操作的操作栏 (operational bar),可生成一致、易于获取的更新流,你可以轻松 “固定” 流处理系统的一些优点,而无需通过整个代码库来添加(不可靠)检测点。

  • 常见用例包括 ETL、缓存构建 / 到期、指标收集、搜索索引和服务间通信。
  • 可在表的初始加载过程中执行 SELECT * from table (bootstrapping)
  • 支持在 master promotion 上的自动位置恢复
  • 为 Kakfa 提供灵活的分区方案 —— 按数据库、表、主键或字段进行

Maxwell 通过充当完整的 mysql 副本来完成所有这些操作,包括用于 create/alter/drop 语句的 SQL 解析器。

官网地址:https://maxwells-daemon.io/

二、Maxwell的工作原理

由于maxwell的工作是同步MySQL中的数据,那么我们先思考一下在MySQL集群中,MySQL集群节点间是如何实现数据同步的。

2.1 MySQL之间的数据同步原理—主从复制

  • MySQL集群的Master主库将改变记录,写入到二进制日志(binary log)中;

  • MySQL从节点从库中向Master发送dump协议,将master主库的binary log events 拷贝到它的中继日志(relay log)中;

  • MySQL从节点从库中读取并重做中继日志中的事件,将改变的数据同步到自己的数据库。

    MySQL主从复制原理图:
    在这里插入图片描述

2.2 MySQL的binlog文件

  • 1 什么是binlog

binlog是MySQL 的一个二进制日志文件,它以事件形式记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里(但是对库表等内容的查询不会记录),还包含语句所执行的消耗的时间,MySQL 的二进制日志是事务安全型的。
一般来说开启二进制日志大概会有 1%的性能损耗。二进制有两个最重要的使用场景:
     ➢ - 其一:MySQL Replication 在 Master 端开启 binlog,Master 把它的二进制日志传递给 slaves 来达到 master-slave 数据一致的目的。
     ➢ 其二:自然就是数据恢复了,通过使用 mysqlbinlog 工具来使恢复数据。
二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的 DDL 和 DML(除了数据查询语句)语句事件。

  • 2 binlog的开启
    开启MySQL的binlog功能的步骤:

    1. 再安装MySQL的机器中找到MySQL配置文件的位置
      通过命令 locate my.cnf 查找
    2. 修改配置文件,添加 log-bin=mysql-bin
      mysql-bin这个是之后logbin文件命名的前缀,可自定义
      生成的文件实例:mysql-bin.000001,文件后面的数字按顺序生成,每次 mysql 重启或者到达单个文件大小的阈值时,新生一个文件,按顺序编号。
  • 3 binlog 的分类设置
    mysql binlog 的格式有三种,分别是 STATEMENT,MIXED,ROW。
    在配置文件中可以选择配置 binlog_format= statement|mixed|row
    三种格式的区别:
    statement

    语句级,binlog 会记录每次一执行写操作的语句。
    相对 row 模式节省空间,但是可能产生不一致性,比如
    update test set create_date=now();
    如果用 binlog 日志进行恢复,由于执行时间不同可能产生的数据就不同。
    优点: 节省空间
    缺点: 有可能造成数据不一致。

    row

    行级, binlog 会记录每次操作后每行记录的变化。
    优点:保持数据的绝对一致性。因为不管 sql 是什么,引用了什么函数,他只记录
    执行后的效果。
    缺点:占用较大空间。

    mixed

    混合级别,statement 的升级版,一定程度上解决了 statement 模式因为一些情况
    而造成的数据不一致问题。
    默认还是 statement,在某些情况下,譬如:
    (1)当函数中包含 UUID() 时;
    (2)包含 AUTO_INCREMENT 字段的表被更新时;
    (3)执行 INSERT DELAYED 语句时;
    (4)用 UDF 时;
    会按照 ROW 的方式进行处理
    优点:节省空间,同时兼顾了一定的一致性。
    缺点:还有些极个别情况依旧会造成不一致,另外 statement 和 mixed 对于需要对
    binlog 监控的情况都不方便。

    综合比较,maxwell做监控分析使用row格式比较合适

  • 2.4 为什么原则maxwell
    常用的实时数据同步工具由Maxwell和Canal,那么我们对这两个组件进行一下比较:

    对比MaxwellCanal
    语言javajava
    数据格式json格式自由
    采集数据模式全量/增量增量
    数据落地支持kafka等多种平台定制
    HA支持支持

三、Maxwell的安装部署

  • 3.1 安装包下载地址与版本选择
    链接:https://pan.baidu.com/s/1QhDun9j8X8iZJVGdW-2Uqw?pwd=1111
    提取码:1111
    版本选择的是1.29.2,因为高于这个版本的进行了改版,只有基于Java11才能运行,但是1.29.2及前面版本支持java8,而企业中目前大多数都是基于Java8设计的系统。因此本文中选择的版本就是1.29.2

  • 3.2 安装部署
    1) 提前安装好zookeeper 和 kafka,以及MySQL
    2)上传maxwell-1.29.2.tar.gz到/opt/soft/目录下
    3)解压maxwell-1.29.2.tar.gz到/opt/module目录下

    tar -zvxf maxwell-1.29.2.tar.gz -C /opt/module/

  • 3.3 MySQL环境准备
    1)修改mysql的配置文件,开启binlog设置

    [root@bigdata01 /]# vim /usr/my.cnf[mysqld]模块下添加一下内容
    [mysqld]
    server_id=1
    log-bin=mysql-bin
    binlog_format=row
    #binlog-do-db=test_maxwell
    
    重启MySQL服务
    [root@bigdata01 /]# service mysql restart
    
    登录mysql并查看是否修改完成
    [root@bigdata01 /]# mysql -uroot -p123456
    
    mysql> show variables like '%binlog%';
    当有下列属性时表示开启成功
    | binlog_format                           | ROW                  |
    

    2)进入/var/lib/mysql目录下,查看MySQL是否生成的binlog文件
    当出现下面两个文件时就表示

    [root@bigdata01 /]# cd var/lib/mysql/
    [root@bigdata01 mysql]# ll
    -rw-rw----. 1 mysql mysql      154 Oct  1 10:53 mysql-bin.000001
    -rw-rw----. 1 mysql mysql       19 Oct  1 22:03 mysql-bin.index
    
    

    注意:

    MySQL 生成的 binlog 文件初始大小一定是 154 字节,然后前缀是 log-bin 参数配
    置的,后缀是默认从.000001,然后依次递增。除了 binlog 文件文件以外,MySQL 还会额外
    生产一个.index 索引文件用来记录当前使用的 binlog 文件。

    3) 初始化Maxwell元数据库
    (1)再MySQL中创建一个数据库maxwell,用于存储Maxwell的元数据信息

    	[root@bigdata01 mysql]# mysql -uroot -p123456
    	
    	create database maxwell;
    

    (2) MySQL5.7一下忽略此步骤,因为再mysql.5.7以及之后的版本中默认密码最少为八位,因此如果我们使用的话许需要修改用户密码的安全级别

    set global validate_password_length=4;
    set global validate_password_policy=0;
    

    (3)为Maxwell库创建一个用户,并将maxwell的所有权限都交给该用户

     grant all on maxwell.* TO 'maxwell'@'%' identified by '123456';
    

    (4) 为用户maxwell分配监控其他数据库的权限(只读权限)

    grant  select , replication slave , replication client on *.* to maxwell@'%'; 
    

    (5)刷新mysql表权限

     flush privileges
    
  • 3.4 Maxwell的启动
    Maxwell的启动方式通常有两种

  • 1)使用命令行参数启动Maxwell

    [atguigu@hadoop102 maxwell-1.29.2]$ bin/maxwell --user=‘maxwell’ --password=‘123456’ --host=‘hadoop102’ --producer=stdout

    参数解释:
    –use:连接数据库的用户名
    –password:连接数据库的用户名对应密码
    –host: 数据库所在的主机名或者IP地址
    –producer 生产者模式(stdout表示输出到控制台,kafka表示输出到kafka集群)

    2)配置好config.properties定制化启动Maxwell
    首先将/opt/module/maxwell…/目录下的config.properties.exmple文件改名

    mv config.properties.exmple config.properties
    

    对config.properties进行配置

    [root@bigdata01 maxwell-1.29.2]# vim config.properties
    producer=stdout
    kafka.bootstrap.servers=bigdata01:9092
    host=bigdata01
    user=maxwell
    password=123456
    

    启动Maxwell

    bin/maxwell
    

    在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ANSYS Maxwell是ANSYS公司推出的一款专业的电磁场仿真软件。其主要用于电磁场的建模与分析,可以在二维和三维空间中进行电磁场的求解和参数优化。 ANSYS Maxwell的入门操作包括以下几个步骤: 1. 下载软件:可以在ANSYS官方网站上下载ANSYS Maxwell的试用版或购买正式版。下载完毕后,按照指示进行安装。 2. 打开软件:在安装完成后,可以选择打开ANSYS Maxwell软件。进入软件界面后,可以进行新建项目或打开现有项目。 3. 创建几何模型:在建模之前,需要先创建几何模型。可以通过绘制几何图形、导入CAD图纸或使用现有模型库来创建几何模型。 4. 定义物理属性:在几何模型创建完成后,需要为不同的几何体定义其物理属性,如材料属性、电磁性质等。 5. 设置边界条件:根据实际问题需求,设置各边界的边界条件,如电磁场的边界类型、电压、电流等。 6. 设定求解器参数:选择适当的求解器,并设定相应的参数,如求解精度、迭代次数等。 7. 进行仿真计算:完成模型设置后,可以开始进行仿真计算。在计算过程中,可以实时观察电磁场分布、场强分布或其他所需的结果。 8. 分析结果:仿真计算结束后,可以对仿真结果进行分析和评估。根据分析结果,可以进一步优化和改进模型。 以上就是ANSYS Maxwell入门及相关基础操作的简要介绍。通过学习和实践,可以更深入地了解和掌握ANSYS Maxwell软件的使用方法和技巧,应用于各种电磁场分析和设计任务中。 ### 回答2: Ansoft Maxwell是一款专业的电磁场仿真软件,在电子、电气、通信等领域具有广泛的应用。接下来我将介绍Ansoft Maxwell的入门与相关基础操作下载要点。 首先,要下载Ansoft Maxwell软件,你可以登录Ansys官网(https://www.ansys.com/),在产品页面找到Ansoft Maxwell的相关信息,选择适合你操作系统的版本,并进行购买或试用。 安装完成后,你可以通过以下几个步骤来了解Ansoft Maxwell的基础操作: 1. 打开Ansoft Maxwell软件,你会看到一个初始界面,包含菜单栏和工具栏。你可以通过菜单栏的不同选项来进行相关操作。 2. 创建新工程:点击菜单栏的“File”选项,选择“New Project”来创建新工程。在弹出的对话框中,输入工程的名称与保存路径。 3. 导入几何模型:Ansoft Maxwell可以导入各类几何模型文件,如.step、.iges、.stl等。点击菜单栏的“Model”选项,选择“Import Geometry”来导入几何模型。选择对应的模型文件,点击“Open”进行导入。 4. 设置材料性质:在导入几何模型后,需要为材料设置相应的性质。点击菜单栏的“Model”选项,选择“Materials”来创建并设置材料。 5. 设置仿真参数:在进行仿真前,需要设置仿真参数,如频率范围、网格设置等。点击菜单栏的“Analysis”选项,选择“Set Analysis Type”来设定仿真类型。然后选择“Set Frequency”设定频率范围。 6. 创建仿真网格:点击菜单栏的“Mesh”选项,选择“Build Mesh”来创建仿真网格。根据模型复杂程度和精度要求,选择适当的网格类型和参数进行设置。 7. 运行仿真:完成以上设置后,点击菜单栏的“Analysis”选项,选择“Analyze All”或者点击工具栏的仿真按钮来运行仿真。 以上就是Ansoft Maxwell的入门与相关基础操作下载要点。随着对软件的更深入了解,你可以学习更多高级操作,如边界条件设定、结果分析等,来更好地应用Ansoft Maxwell进行电磁场仿真。 ### 回答3: ANSYS Maxwell是一款用于电磁场仿真的软件,可用于分析电磁场中的电场、磁场、电流、感应等现象。如果您想入门学习这款软件并进行相关基础操作,以下是一些步骤和指导。 首先,您需要到ANSYS官网上注册一个账号,然后下载适用于您的操作系统的ANSYS Student版本。安装完成后,填写注册信息并获取许可证。 打开ANSYS Maxwell软件后,您会看到主界面。首先,我们需要创建一个新的项目。点击“File”,然后选择“New Project”。为项目命名,并选择保存的路径。 接下来,我们需要导入要进行仿真的模型。点击“File”菜单,选择“Import Geometry”选项。您可以选择导入不同的模型格式,如STEP、IGES、SolidWorks等。导入完成后,您可以对模型进行一些基本的编辑,例如缩放、旋转、平移等操作。 然后,我们需要设置仿真的性质。点击“Project”窗口下方的“Properties”选项卡,您可以定义材料性质、网格设置、电磁场设置等参数。确保所有设置都与您的需求一致。 接下来,我们需要定义仿真的初始条件。点击“Project”窗口下方的“Initial Conditions”选项卡,您可以设置电流、电压、磁场等初始条件。 然后,我们需要定义仿真的求解器。点击“Project”窗口下方的“Solve”选项卡,选择合适的求解器类型,并设置其他相关参数。 最后,我们可以点击“Run”按钮开始仿真计算。ANSYS Maxwell将会对您的模型进行电磁场仿真,并输出相应的结果。您可以在仿真过程中观察模型内部的电场、磁场分布情况,并进行一些后处理操作,如绘制场强图、计算感应电流等。 以上是ANSYS Maxwell入门及相关基础操作的简要概述。通过不断实践和学习,您将能够更深入地了解和掌握该软件的功能和使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

似懂非dong

你的肯定使我加倍努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值