| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL Binlog温故知新 -> 正文阅读 |
|
[大数据]MySQL Binlog温故知新 |
目录 一、什么是BinlogBinlog (Binary log)是MySQL的二进制日志,以二进制的形式记录了对于数据库的变更(DDL,DML,DCL)不包括select和show 操作。Binlog日志是以事件形式记录,还包含语句执行的消耗时间。 Binlog主要的使用场景: 1. 用来查看mysql变更:通过mysqlbinlog工具来查看变更。 2. MySQL的备份恢复:通过mysqlbinlog工具来恢复数据。 ?ps: 数据库备份其他方法,如 通过导出数据或者表文件的拷贝来保护数据、数据库复制-MySQL内部复制功能建立在两个或两个以上服务器之间,通过设定它们之间的主从关系来实现的。 3. MySQL的主从复制:在主库中开启Binlog功能,这样主库就可以把Binlog传递给从库,从库拿到Binlog后实现数据恢复从而达到主从数据一致性。 二、Binlog文件记录模式
三、Binlog 日志内容
文件结构: ?使用前提: 开启binlog日志->操作之前对数据进行备份->flush logs,将缓存存磁盘 四、常用的binlog日志操作命令
五、binlog日志中间件数据最终一致性:?在数据库操作成功后,需要进行一些其他操作,如:发送一条消息到MQ中、更新缓存或者更新搜索引擎中的索引等 如何保证数据库操作与这些行为的一致性,就成为一个难题。以数据库与redis缓存的一致性为例:操作数据库成功了,可能会更新redis失败;反之亦然。很难保证二者的完全一致。 思路:?不要同时去更新数据库和其他组件,只是简单的更新数据库即可。 如果数据库操作成功,必然会产生binlog。之后,我们通过一个组件,来模拟的mysql的slave,拉取并解析binlog中的信息。通过解析binlog的信息,去异步的更新缓存、索引或者发送MQ消息,保证数据库与其他组件中数据的最终一致。 将模拟slave的组件,统一称之为binlog同步组件。目前有很多开源的实现,例如linkedin的databus,阿里巴巴的canal,美团点评的puma等。 当我们通过binlog同步组件完成数据一致性时,示意图如下: ?扩展: Databus: 低延迟、可靠的、支持事务的、保持一致性的数据变更抓取系统。由LinkedIn于2013年开源。Databus通过挖掘数据库日志的方式,将数据库变更实时、可靠的从数据库拉取出来,业务可以通过定制化client实时获取变更并进行其他业务逻辑。 canal是基于?MySQL 数据库增量日志解析,提供增量数据订阅和消费 二者对比: ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/22 18:40:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |