4 天前 / sjf0115
Binlog 导入是通过获取并解析 Mysql 数据库的 Binlog 日志,增量同步用户在 Mysql 数据库的所有更新操作,为 Doris 提供了一种对接 Mysql 数据库的 CDC(Change Data Capture) 功能。 Binlog 导入已在 0.15 版本发布,本文主要介绍的是 Binlog 导入的总体设计与实现思路。 作者|百度 PALO 徐洋 总体架构 Binlog 导入目前需要依赖 canal 作为中间媒介,让 canal 伪造成一个从节点去获取 Mysql 主节点上的 Binlog 并解析,再由 Doris 去获取 canal 上解析好的数据。 后续 Binlog 导入可支持除了 canal 外的不同数据源。
18 天前 / 路强
本文读完需 3 分钟,速读仅需 1 分钟。 前言阿星在前面两篇文章都详细聊过 redo log 与 binlog,有兴趣的朋友可以去看看前面两篇文章: 聊聊 redo log 是什么?你必须知道的 binlog 日志今天就来聊聊 InnoDB 是如何保证 redo log 与 binlog 两份日志之间的逻辑一致。 两阶段提交 redo log(重做日志)让 InnoDB 存储引擎拥有了崩溃恢复能力。 binlog(归档日志)保证了 MySQL 集群架构的数据一致性。 虽然它们都属于持久化的保证,但是则重点不同。
57 天前 / reesunhuang
全文建立在 MySQL 的存储引擎为 InnoDB 的基础上 先看一条 SQL 如何入库的: 这是一条很简单的更新 SQL,从 MySQL 服务端接收到 SQL 到落盘,先后经过了 MySQL Server 层和 InnoDB 存储引擎。 Server 层就像一个产品经理,分析客户的需求,并给出实现需求的方案。 InnoDB 就像一个基层程序员,实现产品经理给出的具体方案。 在 MySQL”分析需求,实现方案“的过程中,还夹杂着内存操作和磁盘操作,以及记录各种日志。 他们到底有什么用处?他们之间到底怎么配合的?MySQL 又为什么要分层呢?InnoDB 里面的那一块 Buffer Pool 又是什么? 我们慢慢分析。
386 天前 / Dr_Hydra
最近在工作中,遇到了这样一个业务场景,我们需要关注一个业务系统数据库中某几张表的数据,当数据发生新增或修改时,将它同步到另一个业务系统数据库中的表中。 一提到数据库的同步,估计大家第一时间想到的就是基于 binlog 的主从复制了,但是放在我们的场景中,还有几个问题: 第一,并不是需要复制所有表的数据,复制对象只有少量的几张表第二,也是比较麻烦的,两个业务系统数据库表结构可能不一致。例如,要同步数据库 1 的 A 表中的某些字段到数据库 2 的 B 表中,在这一过程中,A 表和 B 表的字段并不是完全相同这样的话,我们只能通过代码的方式...
699 天前 / 咖啡拿铁
背景不知道是否你还在为下面的问题而困扰: 当你使用了 redis 或者其他中间件做缓存的时候,经常发现缓存和数据库的数据不一致,只能通过定时任务或者缓存过期的方式去做一些限制。当你使用了 ES 做搜索工具,使用双写的那一套方法,还在为 ES 和数据库不是一个事务而担忧。当你需要迁移数据的时候,也还在使用双写的方法,如果是同一个数据库的还好,如果是不同数据库就不能保证事务,那么数据一致性也是个问题,就会写很多的修复 Job 和检查 Job。
1129 天前 / 马蜂窝技术
点击上方“马蜂窝技术”,关注订阅更多优质内容 一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。
1156 天前 / PingCAP
TiDB Binlog(github.com/pingcap/tidb-binlog)组件用于收集 TiDB 的 binlog,并准实时同步给下游,如 TiDB、MySQL 等。该组件在功能上类似于 MySQL 的主从复制,会收集各个 TiDB 实例产生的 binlog,并按事务提交的时间排序,全局有序的将数据同步至下游。利用 TiDB Binlog 可以实现数据准实时同步到其他数据库,以及 TiDB 数据准实时的备份与恢复。 随着大家使用的广泛和深入,我们遇到了不少由于对 TiDB Binlog 原理不理解而错误使用的情况,也发现了一些 TiDB Binlog 支持并不完善的场景和可以改进的设计。
1169 天前 / 田守枝
本文深入介绍Mysql Binlog的应用场景,以及如何与MQ、elasticsearch、redis等组件的保持数据最终一致。最后通过案例深入分析binlog中几乎所有event是如何产生的,作用是什么。 1 基于binlog的主从复制 Mysql 5.0以后,支持通过binary log(二进制日志)以支持主从复制。复制允许将来自一个MySQL数据库服务器(master) 的数据复制到一个或多个其他MySQL数据库服务器(slave),以实现灾难恢复、水平扩展、统计分析、远程数据分发等功能。 二进制日志中存储的内容称之为事件,每一个数据库更新操作(Insert、Update、Delete,不包括Select)等都对应一个事件。
1197 天前 / PingCAP
TiDB Binlog组件用于收集 TiDB 的 binlog,并准实时同步给下游,如 TiDB/MySQL等。该组件在功能上类似于 MySQL 的主从复制,会收集各个 TiDB 实例产生的 binlog,并按事务提交的时间排序,全局有序的将数据同步至下游。利用 TiDB Binlog 可以实现数据准实时同步到其他数据库,以及 TiDB 数据准实时的备份与恢复。TiDB Binlog 作为 TiDB 的核心组件之一,已经在上百家用户的生产环境中长时间稳定运行。
1198 天前 / PingCAP
本文为 DM 源码阅读系列文章的第五篇,上篇文章介绍了 dump 和 load 两个数据同步处理单元的设计实现,对核心 interface 实现、数据导入并发模型、数据导入暂停或中断的恢复进行了分析。本篇文章将详细地介绍 DM 核心处理单元 Binlog replication,内容包含 binlog 读取、过滤、路由、转换,以及执行等逻辑。文内涉及到 shard merge 相关逻辑功能,如 column mapping、shard DDL 同步处理,会在 shard merge 篇单独详细讲解,这里就不赘述了。
1255 天前 / 小旋锋
maxwell 简介Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。官网(http://maxwells-daemon.io)、GitHub(https://github.com/zendesk/maxwell) Maxwell主要提供了下列功能: 支持SELECT*FROM table的方式进行全量数据初始化 支持在主库发生failover后,自动恢复binlog位置(GTID) 可以对数据进行分区...
1310 天前 / PingCAP
TiDB Binlog Overview 这篇文章不是讲 TiDB Binlog 组件的源码,而是讲 TiDB 在执行 DML/DDL 语句过程中,如何将 Binlog 数据 发送给 TiDB Binlog 集群的 Pump 组件。目前 TiDB 在 DML 上的 Binlog 用的类似Row-based的格式。具体 Binlog 具体的架构细节可以参考这篇文章。这里只描述 TiDB 中的代码实现。 DML Binlog TiDB 采用 protobuf 来编码 binlog,具体的格式可以见binlog.proto。这里讨论 TiDB 写 Binlog 的机制,以及 Binlog 对 TiDB 写入的影响。 TiDB 会在 DML 语句提交,以及 DDL 语句完成的时候,向 pump 输出 Binlog。