一、定向监听

定向监听,即只监听某一个特定的表,或者库

1、创建样本案例

-- 创建监听的库(演示样本)
CREATE DATABASE `test-db-2` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'; -- 和需要监听的表 (演示样本)
CREATE TABLE `test-db-2`.`sample` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`NAME` varchar(64) DEFAULT NULL,
`TYPE` int(12) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

2、定向监听的参数项:

cd /usr/local/maxwell-1.29.2
./bin/maxwell \
--user='maxwell' \
--password='123456' \
--host='192.168.2.225' \
--port='3308' \
--producer='stdout' \
--filter="exclude:*.*, include:test-db-2.sample" \
--jdbc_options='useSSL=false&serverTimezone=Asia/Shanghai' # 定向监听,通过过滤器参数实现
--filter="exclude:*.*, include:test-db-2.sample" # exclude,表示排除
# include,表示包含

针对该库的sample表进行操作,是能够监听的

[root@localhost maxwell-1.29.2]# ./bin/maxwell \
> --user='maxwell' \
> --password='123456' \
> --host='192.168.2.225' \
> --port='3308' \
> --producer='stdout' \
> --filter="exclude:*.*, include:test-db-2.sample" \
> --jdbc_options='useSSL=false&serverTimezone=Asia/Shanghai'
Using kafka version: 1.0.0
17:01:57,280 INFO Maxwell - Starting Maxwell. maxMemory: 247332864 bufferMemoryUsage: 0.25
17:01:57,493 INFO Maxwell - Maxwell v1.29.2 is booting (StdoutProducer), starting at Position[BinlogPosition[mysql-bin.000005:656973], lastHeartbeat=1642495761716]
17:01:57,651 INFO MysqlSavedSchema - Restoring schema id 1 (last modified at Position[BinlogPosition[mysql-bin.000005:16191], lastHeartbeat=0])
17:01:57,819 INFO BinlogConnectorReplicator - Setting initial binlog pos to: mysql-bin.000005:656973
17:01:57,856 INFO BinaryLogClient - Connected to 192.168.2.225:3308 at mysql-bin.000005/656973 (sid:6379, cid:254)
17:01:57,856 INFO BinlogConnectorReplicator - Binlog connected.
17:01:58,149 INFO AbstractSchemaStore - storing schema @Position[BinlogPosition[mysql-bin.000005:657429], lastHeartbeat=1642495761716] after applying "CREATE DATABASE `test-db-2` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'" to test-db-2, new schema id is 2
17:01:58,223 INFO AbstractSchemaStore - storing schema @Position[BinlogPosition[mysql-bin.000005:657658], lastHeartbeat=1642495761716] after applying "CREATE TABLE `sample` ( `ID` bigint(20) NOT NULL AUTO_INCREMENT, `NAME` varchar(64) DEFAULT NULL, `TYPE` int(12) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4" to test-db-2, new schema id is 3
{"database":"test-db-2","table":"sample","type":"insert","ts":1642496453,"xid":87865,"commit":true,"data":{"ID":1,"NAME":"1","TYPE":11}}

如果在其他库操作,Maxwell则是不会监听的

INSERT INTO `test-db`.`day_sale` (`ID`, `PRODUCT`, `CHANNEL`, `AMOUNT`, `SALE_DATE`) VALUES
(NULL, '产品A', '拼多多', 2497.0000, NOW()),
(NULL, '产品B', '京东', 2497.0000, NOW()),
(NULL, '产品C', '淘宝', 2497.0000, NOW())

二、全量输出

全量输出,通过主库存放的maxwell库的元数据的更改,实现数据初始化

(除了这种方法还有其他3种,未列举出来)

需求:

将 test-db-2 库下的 sample 表的四条数据,全量导入到 maxwell 控制台进行打印。

操作:

INSERT INTO `maxwell`.`bootstrap` (`id`, `database_name`, `table_name`, `where_clause`, `is_complete`, `inserted_rows`, `total_rows`, `created_at`, `started_at`, `completed_at`, `binlog_file`, `binlog_position`, `client_id`, `comment`) VALUES
(NULL, 'test-db-2', 'sample', NULL, 0, 0, 0, NULL, NULL, NULL, NULL, 0, 'maxwell', NULL);

输出日志

# 不关闭maxwell也能执行,maxwell先监听了maxwell库的bootstrap表的操作,发现了初始化操作,然后执行同步
{"database":"maxwell","table":"bootstrap","type":"insert","ts":1642497749,"xid":90142,"commit":true,"data":{"id":2,"database_name":"test-db-2","table_name":"sample","where_clause":null,"is_complete":0,"inserted_rows":0,"total_rows":0,"created_at":null,"started_at":null,"completed_at":null,"binlog_file":null,"binlog_position":0,"client_id":"maxwell","comment":null}}
{"database":"test-db-2","table":"sample","type":"bootstrap-start","ts":1642497347,"data":{}}
17:15:47,541 INFO SynchronousBootstrapper - bootstrapping started for test-db-2.sample
{"database":"test-db-2","table":"sample","type":"bootstrap-insert","ts":1642497347,"data":{"ID":1,"NAME":"1","TYPE":11}}
{"database":"test-db-2","table":"sample","type":"bootstrap-insert","ts":1642497347,"data":{"ID":2,"NAME":"2","TYPE":22}}
{"database":"test-db-2","table":"sample","type":"bootstrap-insert","ts":1642497347,"data":{"ID":3,"NAME":"3","TYPE":33}}
{"database":"test-db-2","table":"sample","type":"bootstrap-insert","ts":1642497347,"data":{"ID":4,"NAME":"4","TYPE":44}}
{"database":"test-db-2","table":"sample","type":"bootstrap-insert","ts":1642497347,"data":{"ID":5,"NAME":"5","TYPE":55}}
{"database":"test-db-2","table":"sample","type":"bootstrap-complete","ts":1642497347,"data":{}}
17:15:47,592 INFO SynchronousBootstrapper - bootstrapping ended for #2 test-db-2.sample

同步完成的结果:

SELECT * FROM `maxwell`.`bootstrap`;
+----+---------------+------------+--------------+-------------+---------------+------------+------------+---------------------+---------------------+-------------+-----------------+-----------+---------+
| id | database_name | table_name | where_clause | is_complete | inserted_rows | total_rows | created_at | started_at | completed_at | binlog_file | binlog_position | client_id | comment |
+----+---------------+------------+--------------+-------------+---------------+------------+------------+---------------------+---------------------+-------------+-----------------+-----------+---------+
| 2 | test-db-2 | sample | NULL | 1 | 5 | 0 | NULL | 2022-01-18 17:22:30 | 2022-01-18 17:22:30 | NULL | 0 | maxwell | NULL |
+----+---------------+------------+--------------+-------------+---------------+------------+------------+---------------------+---------------------+-------------+-----------------+-----------+---------+

当数据全部初始化完成以后,Maxwell 的元数据会变化
is_complete 字段从 0 变为 1
started_at 字段从 null 变为具体时间(数据同步开始时间)
completed_at 字段从 null 变为具体时间(数据同步结束时间)

【Maxwell】03 定向监听&全量输出的更多相关文章

  1. 20180530利用Maxwell组件实时监听Mysql的binlog日志

    转自:https://blog.csdn.net/qq_30921461/article/details/78320750 http://kafka.apache.org/quickstart htt ...

  2. js监听全屏下的esc事件

    window.onresize = function() { if (!checkFull()) { //触发esc事件,执行业务逻辑. } }; function checkFull() { var ...

  3. js监听全屏的事件

    window.addEventListener('click',function(){ window.top.location.href = '../../loginOut.do';  //解决ifr ...

  4. vue 如何通过监听路由变化给父级路由菜单添加active样式

    1.项目需求:在项目开发中,多级菜单的情况下,勾选子菜单时,需要在父级菜单添加active样式. 2.遇到的问题:一级路由菜单的话,点击当前路由会自动在路由标签上添加router-link-exact ...

  5. 实时监听 mysql 操作,Linux 版

    效果 场景:某数据库新增了某条记录,服务器可以监听到变化的数据与操作,如 增加一条记录: id = 1009,name=''test,number = 11 服务器监听结果: 实现过程 测试过程:数据 ...

  6. Fullscreen API与DOM监听API

    前言 以下几个API,在web开发中可以简化我们一部分交互操作. Fullscreen API 有时候我们想要全屏预览的效果,比如类似于图片预览.幻灯片播放等.全屏API是一个很好的选择. 基本用法 ...

  7. Android图片加载框架最全解析(四),玩转Glide的回调与监听

    大家好,今天我们继续学习Glide. 在上一篇文章当中,我带着大家一起深入探究了Glide的缓存机制,我们不光掌握了Glide缓存的使用方法,还通过源码分析对缓存的工作原理进行了了解.虽说上篇文章和本 ...

  8. 退出全屏监听ESC事件,这里没有用keydown来监听,因为全屏时候keydown监听不到

    浏览器故意不上监听ESC键的,跟网页加载完成之后不能用程序使浏览器全屏一样的道理,避免开发者恶意全屏,不啰嗦,解决办法如下:window.onresize = function(){if(!check ...

  9. Android开发 ---基本UI组件5:监听下拉选项,动态绑定下拉选项、全选/反选,取多选按钮的值,长按事件,长按删除,适配器的使用,提示查询数据,activity控制多按钮

    效果图: 效果描述: 1.当点击 1 按钮后,进入选择城市的页面,会监听到你选中的城市名称:动态为Spinner绑定数据 2.当点击 2 按钮后,进入自动查询数据页面,只要输入首字母,就会动态查找以该 ...

  10. 从零开始学 Web 之 HTML5(三)网络监听,全屏,文件读取,地理定位接口,应用程序缓存

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

随机推荐

  1. 使用C代码实现读取文件中的hex字符串,转换为字节数组

    举例说明: ptp.txt文件中的内容为: 7a7ac0a8c80100000000003388f70002002c000004000000000000000000000000000000000000 ...

  2. Stable Diffusion 解析:探寻 AI 绘画背后的科技神秘

    AI 绘画发展史 在谈论 Stable Diffusion 之前,有必要先了解 AI 绘画的发展历程. 早在 2012 年,华人科学家吴恩达领导的团队训练出了当时世界上最大的深度学习网络.这个网络能够 ...

  3. Unity 3D 的NEW (堆内存)

    用容器装 在AWEKE NEW 运行时NEW 会导致分配内存时界面卡住, new class 的时候 才刷新程序帧 AWEKE 是程序启动时还没走完第一帧的开头执行 AWEKE 里面的代码 常量也在A ...

  4. MySQL插入中文数据时发生错误或者乱码的一些坑

    最近新入职的工作,火急火燎就下了个mysql,没想到安装时配置没弄好.今天在测试数据时,插入中文数据到mysql都是问号,先后查了半天修改表结构,数据库编码,my.ini文件都没有用. 首先第一步,打 ...

  5. Do not access Object.prototype method 'hasOwnProperty' from target object

    hasOwnProperty 判断对象是否为空 在使用 hasOwnProperty 判断对象是否为空时遇到了一下问题,总结一下 // Do not access Object.prototype m ...

  6. 如何将本地的项目,上传到github

    操作步骤: 1.github,创建一个仓库,复制仓库的地址 2.在要上传文件的目录,点击选择git bash here 3.输入[git clone],粘贴刚复制的仓库地址,clone成功后,会将仓库 ...

  7. CLR via C# 笔记 -- 委托(17)

    1. 委托是方法的包装器,使方法能通过包装器来间接回调.在一个类型中通过委托来调用另一个类型的私有成员,只要委托对象是具有足够安全性/可访问性的代码创建,便没有问题. 2. 协变性:方法能返回从委托的 ...

  8. 你了解Vim的增删改查吗 ?

    增: 在Vim的Normal模式中输入A/I/O,a/i/o字符进行对应的增加操作. 删 在Vim的Normal模式中, 输入x 删除光标对应的一个字符(4x代表删除4个字符): 输入dd删除光标所在 ...

  9. 在Markdown中使用base64存图片

    author="CKboss" date="2022-4-19" title="在Markdown中使用base64存图片" +++ 在Ma ...

  10. 深入理解Spring AOP中的@EnableAspectJAutoProxy

    本文分享自华为云社区<Spring高手之路20--深入理解@EnableAspectJAutoProxy的力量>,作者: 砖业洋__. 1. 初始调试代码 面向切面编程(AOP)是一种编程 ...