Maxwell安装部署

1 Maxwell输出格式

  • database:变更数据所属的数据库
  • table:变更数据所属的表
  • type:数据变更类型
  • ts:数据变更发生的时间
  • xid:事务id
  • commit:事务提交标志,可用于重新组装事务
  • data:对于insert类型,表示插入的数据;对于update类型,表示修改之后的数据;对于delete类型,表示删除的数据
  • old:对于update类习惯,表示修改之前的数据,只包含变更字段

2.Maxwell部署

2.1 安装Maxwell 

(1)解压安装包

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

(2)修改解压后的maxwell名字

mv maxwell-1.29.2/ maxwell

2.2 配置MySQL

2.2.1 判断MySQL是否已经开启binlog

MySQL服务器的Binlog默认是未开启的,如需进行同步,需要先进行开启

SHOW VARIABLES LIKE 'log_bin';

查看MySQL的binlog模式

show global variables like "binlog%";

开启binlog日志

修改  MySQL  的  my.cnf  配置文件

一般默认在  /etc/my.cnf  下

#第一种方式:
#开启binlog日志
log_bin=ON
#binlog日志的基本文件名
log_bin_basename=/var/lib/mysql/mysql-bin
#binlog文件的索引文件,管理所有binlog文件
log_bin_index=/var/lib/mysql/mysql-bin.index
#配置serverid
server-id=1

注:MySQL Binlog模式

Statement-based:基于语句,Binlog会记录所有写操作的SQL语句,包括insert、update、delete等。

优点: 节省空间

缺点: 有可能造成数据不一致,例如insert语句中包含now()函数。

Row-based:基于行,Binlog会记录每次写操作后被操作行记录的变化。

优点:保持数据的绝对一致性。

缺点:占用较大空间。

mixed:混合模式,默认是Statement-based,如果SQL语句可能导致数据不一致,就自动切换到Row-based。

Maxwell要求Binlog采用Row-based模式。

修改完配置后,重启MySQL。

重启MySQL服务

systemctl restart mysqld

执行  SHOW VARIABLES LIKE 'log_bin';   value值为  ON  即可。

2.2.2 创建Maxwell所需数据库和用户

Maxwell需要在MySQL中存储其运行过程中的所需的一些数据,包括binlog同步的断点位置(Maxwell支持断点续传)等等,故需要在MySQL为Maxwell创建数据库及用户。

(1)创建数据库
msyql> CREATE DATABASE maxwell;
(2)更改MySQL数据库密码级别(可选操作)
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=4;
(3)创建Maxwell用户并赋予必要权限
mysql> CREATE USER 'maxwell'@'%' IDENTIFIED BY 'abc';
mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';

2.3 配置Maxwell

(1)修改Maxwell配置文件

cd /opt/module/maxwell
cp config.properties.example config.properties
vim config.properties
 
#Maxwell数据发送目的地,可选配置有stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis
producer=kafka
#目标Kafka集群地址
kafka.bootstrap.servers=bigdata1:9092,bigdata2:9092,bigdata3:9092
#目标Kafka topic,可静态配置,例如:maxwell,也可动态配置,例如:%{database}_%{table}
kafka_topic=maxwell
 
#MySQL相关配置
host=bigdata1
user=maxwell
password=123456
jdbc_options=useSSL=false&serverTimezone=Asia/Shanghai

3.Maxwell使用

3.1启动Kafka集群

若Maxwell发送数据的目的地为Kafka集群,则需先确保Kafka集群为启动状态。

3.2 Maxwell启停

(1)启动

/opt/module/maxwell/bin/maxwell --config /opt/module/maxwell/config.properties --daemon

(2)停止Maxwell

ps -ef | grep maxwell | grep -v grep | grep maxwell | awk '{print $2}' | xargs kill -9

(3)Maxwell启停脚本

创建启停脚本

        vim mxw.sh

内容

#!/bin/bash
 
MAXWELL_HOME=/opt/module/maxwell
 
status_maxwell(){
    result=`ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | wc -l`
    return $result
}
 
 
start_maxwell(){
    status_maxwell
    if [[ $? -lt 1 ]]; then
        echo "启动Maxwell"
        $MAXWELL_HOME/bin/maxwell --config $MAXWELL_HOME/config.properties --daemon
    else
        echo "Maxwell正在运行"
    fi
}
 
 
stop_maxwell(){
    status_maxwell
    if [[ $? -gt 0 ]]; then
        echo "停止Maxwell"
        ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | awk '{print $2}' | xargs kill -9
    else
        echo "Maxwell未在运行"
    fi
}
 
 
case $1 in
    start )
        start_maxwell
    ;;
    stop )
        stop_maxwell
    ;;
    restart )
       stop_maxwell
       start_maxwell
    ;;
esac

赋予权限

chmod 777 mxw.sh

3.3 增量数据同步

(1)启动Kafka消费者

bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic maxwell

(2)模拟生成数据

java -jar gmall2020-mock-db-2021-01-22.jar

(3)观察Kafka消费者

{"database":"gmall","table":"comment_info","type":"insert","ts":1634023510,"xid":1653373,"xoffset":11998,"data":{"id":1447825655672463369,"user_id":289,"nick_name":null,"head_img":null,"sku_id":11,"spu_id":3,"order_id":18440,"appraise":"1204","comment_txt":"评论内容:12897688728191593794966121429786132276125164551411","create_time":"2020-06-16 15:25:09","operate_time":null}}
{"database":"gmall","table":"comment_info","type":"insert","ts":1634023510,"xid":1653373,"xoffset":11999,"data":{"id":1447825655672463370,"user_id":774,"nick_name":null,"head_img":null,"sku_id":25,"spu_id":8,"order_id":18441,"appraise":"1204","comment_txt":"评论内容:67552221621263422568447438734865327666683661982185","create_time":"2020-06-16 15:25:09","operate_time":null}}

3.4 历史数据全量同步

可能需要使用到MySQL数据库中从历史至今的一个完整的数据集。这就需要我们在进行增量同步之前,先进行一次历史数据的全量同步。这样就能保证得到一个完整的数据集。

3.4.1Maxwell-bootstrap

历史数据的全量同步的命令

/opt/module/maxwell/bin/maxwell-bootstrap --database gmall --table user_info --config /opt/module/maxwell/config.properties

3.4.2 bootstrap数据格式

采用bootsrtap方式同步输出数据格式

{
    "database": "fooDB",
    "table": "barTable",
    "type": "bootstrap-start",
    "ts": 1450557744,
    "data": {}
}
{
    "database": "fooDB",
    "table": "barTable",
    "type": "bootstrap-insert",
    "ts": 1450557744,
    "data": {
        "txt": "hello"
    }
}
{
    "database": "fooDB",
    "table": "barTable",
    "type": "bootstrap-insert",
    "ts": 1450557744,
    "data": {
        "txt": "bootstrap!"
    }
}
{
    "database": "fooDB",
    "table": "barTable",
    "type": "bootstrap-complete",
    "ts": 1450557744,
    "data": {}
}

第一条type为bootstrap-start和最后一条type为bootstrap-complete的数据,是bootstrap开始和结束的标志,不包含数据,中间的type为bootstrap-insert的数据才包含数据。

一次bootstrap输出的所有记录的ts都相同,为bootstrap开始的时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/398593.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

政安晨:【示例演绎机器学习】【剖析神经网络】【学习核心的Keras API】

打开这篇文章,相信您已经了解了TensorFlow的一些基础知识,可以用它从头开始实现一个简单模型。 如果您对这些概念还不是太清晰,可以浏览一下我这个栏目中的相关文章: 政安晨的机器学习笔记http://t.csdnimg.cn/DHcyL 尤其是其中…

C 语言 devc++ 使用 winsock 实现 windows UDP 利用 IP 进行局域网发送消息

UDP 通信流程_udp通信过程-CSDN博客参考来源 UDP 通信流程_udp通信过程-CSDN博客 这里移植到windows 上 &#xff0c;使用 devc 开发。 服务端代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <…

爬虫知识--02

免费代理池搭建 # 代理有免费和收费代理 # 代理有http代理和https代理 # 匿名度&#xff1a; 高匿&#xff1a;隐藏访问者ip 透明&#xff1a;服务端能拿到访问者ip 作为后端&#xff0c;如何拿到使用代理人的ip 请求头中&#xff1a;x-forwor…

基于芯驰 X9HP PTG4.1 在 yocto 中添加 Linux 应用

1.参考例程并添加应用 1.1 参考例程 &#xff08;1&#xff09;查看自带的串口测试例程 uart_test &#xff0c;查看 bb 文件怎么写的。 1.2 添加 printf-test 应用 &#xff08;1&#xff09;在 yocto/meta-semidrive/recipes-bsp/ 目录中 copy 自带例程 uart-test 改名为 …

Java后端底座从无到有的搭建(随笔)

文章目录 开发模式的演变草创时期1.0时期&#xff08;基座时期&#xff09;1.1时期&#xff08;低代码时期&#xff09;2.0时期&#xff08;无代码时期&#xff09; 前言&#xff1a;本文是笔者在初创公司&#xff0c;一年多来Java后端服务底座搭建过程的总结&#xff0c;如有不…

notepad++的下载与使用

1.进入官网下载 https://notepad-plus-plus.org/ 点击下载即可 2.选择中文简体 3.建议安装在D盘 其余步骤按照指示就行 4.安装后这几个是必选的 设置完成后就可以写中文了 以此为例 结果为

实例分析AnnexB格式h264流startcode

我们知道&#xff0c;h264 流格式有两种&#xff1a;avcC与AnnexB。 avcC 就是在 NALU 前面写上几个字节&#xff0c;这几个字节组成一个整数&#xff08;大端字节序&#xff09;这个整数表示了整个 NALU 的长度。在读取的时候&#xff0c;先把这个整数读出来&#xff0c;拿到…

django rest framework 学习笔记-实战商城

01项目环境搭建_哔哩哔哩_bilibili 本博客借鉴至大佬的视频学习笔记 # 创建项目 django-admin startproject MyShop# 创建app E:\desktop\my_drf\MyShop>django-admin startapp goodsE:\desktop\my_drf\MyShop>django-admin startapp orderE:\desktop\my_drf\MyShop>…

MongoDB 权限管理

文章目录 前言1. 权限控制1.1 MongoDB 默认角色1.1.1 读写角色1.1.2 管理角色1.1.3 其他角色1.1.4 超级用户角色 1.2 用户管理1.2.1 查看用户1.2.2 创建新用户1.2.3 调整角色1.2.4 删除用户1.2.4 修改密码 前言 上一篇 《MongoDB 单机安装部署》 文章中&#xff0c;为 MongoDB…

MySQL安装教程(详细版)

今天分享的是Win10系统下MySQL的安装教程&#xff0c;打开MySQL官网&#xff0c;按步骤走呀~ 宝们安装MySQL后&#xff0c;需要简单回顾一下关系型数据库的介绍与历史&#xff08;History of DataBase&#xff09; 和 常见关系型数据库产品介绍 呀&#xff0c;后面就会进入正式…

Pytorch学习05_常见的transforms01

案例解释 创建新的py文件 引入transforms模块 from torchvision import transforms 按住”Ctrl“&#xff0c;鼠标左键点击”transforms“&#xff0c;跳转到”__init__.py“ 再次按住”Ctrl“&#xff0c;鼠标点击”.transforms”&#xff0c;跳转到transforms.py中 __call_…

微服务—RabbitMQ高级(业务在各方面的可靠性)

本博客为个人学习笔记&#xff0c;学习网站&#xff1a;2023黑马程序员RabbitMQ入门到实战教程 高级篇章节 目录 生产者可靠性 生产者重连机制 生产者确认机制 介绍 实现 总结与建议 MQ可靠性 数据持久化 LazyQueue 消费者可靠性 消费者确认机制 失败重试机制 失…

Nginx 403 forbidden

1、没有权限问题 Linux系统中如果Nginx没有web目录的操作权限&#xff0c;也会出现403错误。解决办法&#xff1a;修改web目录的读写权限&#xff0c;或者是把Nginx的启动用户改成目录的所属用户&#xff0c;重启Nginx即可解决。(windows 下则用管理员启动nginx即可)。 chmod -…

uniapp上传文件到腾讯云

官方API地址 javaScript_SDK 下载cos npm i cos-js-sdk-v5 --save 生成签名 获取secretId和secretKey let cos new COS({SecretId: *******************************,SecretKey: ******************************,}) 参考文章&#xff1a;腾讯云如何获取secretId和secret…

力扣精选算法100道——提莫攻击(模拟专题)

目录 &#x1f6a9;题目解析 &#x1f6a9;算法原理 &#x1f6a9;实现代码 &#x1f6a9;题目解析 输入&#xff1a;timeSeries [1,4], duration 2 输出&#xff1a;4 解释&#xff1a;提莫攻击对艾希的影响如下&#xff1a; - 第 1 秒&#xff0c;提莫攻击艾希并使其立即…

【Git】:分支管理

分支管理 一.概念二.分支管理基本操作三.分支管理策略1.noff模式2.分支策略 一.概念 在版本回退⾥&#xff0c;你已经知道&#xff0c;每次提交&#xff0c;Git都把它们串成⼀条时间线&#xff0c;这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前&#xff0c;只有⼀条时间线&…

搜索中关于稀疏检索和稠密向量检索的召回效果比较

不同检索方式说明 最近在做搜索召回提升相关的研究工作。对比了稀疏检索和稠密向量检索的效果。其中使用的搜索引擎为elasticsearch8.x版本。稀疏检索包括BM25的检索方式&#xff0c;以及es官方在8.8之后版本提供的稀疏向量模型的方式。稠密向量检索&#xff0c;是指借助机器学…

tqdm,Python进度条库快速上手

前言 在编程中&#xff0c;尤其是处理长时间运行的任务时&#xff0c;了解程序的进度是非常重要的。Python中有一个非常实用的库&#xff0c;名为 tqdm &#xff0c;它能够以极简的方式帮助我们快速创建进度条。本文将向初学者介绍如何在Python中使用 tqdm 库来制作进度条。 …

2、电源管理入门之开机详解

目录 1. 硬件上电 2. ATF运行 3. Linux启动 3.1 内核启动start_kernel 3.2 平台启动setup_arch 3.4 DTS初始化psci_dt_init 3.5 系统rest创建kernel_init线程 3.6 SMP初始化smp_init 3.7 PSCI接口psci_cpu_on 3.8 SMC返回secondary_entry 系统开机牵扯到:“我是…

Springboot 中使用 Redisson+AOP+自定义注解 实现访问限流与黑名单拦截

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…