日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

binlog以及Canel

發布時間:2024/9/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 binlog以及Canel 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/github_38687585/article/details/80944824
一、NDB存儲引擎
在介紹binlog之前,需要先了解一下NDB?
NDB 存儲引擎也叫NDB Cluster 存儲引擎,主要用于MySQL Cluster 分布式集群環境。

NDB特點:?
? 分布式:分布式存儲引擎,可以由多個NDBCluster存儲引擎組成集群分別存放整體數據的一部分?
? 支持事務:和Innodb一樣,支持事務?
? 可與mysqld不在一臺主機:可以和mysqld分開存在于獨立的主機上,然后通過網絡和mysqld通信交互?
? 內存需求量巨大:新版本索引以及被索引的數據必須存放在內存中,老版本所有數據和索引必須存在與內存中

二、Mysql集群
mysql主從備份實現:

master將改變記錄到二進制日志(binary log)中(這些記錄叫做二進制日志事件,binary log events,可以通過show binlog events進行查看);
slave將master的binary log events拷貝到它的中繼日志(relay log);
slave重做中繼日志中的事件,將改變反映它自己的數據。?

如果你能將自己偽裝為一個mysql slave,就可以欺騙mysql master給自己推送中繼日志,從而實現增量獲取事件的功能。阿里開源的canel就是這樣做的。

三、Binlog
簡單點說:

binlog是一個二進制格式的文件,用于記錄用戶對數據庫更新的SQL語句信息,例如更改數據庫表和更改內容的SQL語句都會記錄到binlog里,但是對庫表等內容的查詢不會記錄。
mysql的binlog數據格式,按照生成的方式,主要分為:statement-based、row-based、mixed。
使用mysqlbinlog解析查看

一般來說開啟二進制日志大概會有1%的性能損耗(參見MySQL官方中文手冊 5.1.24版)。二進制有兩個最重要的使用場景:?
其一:MySQL Replication在Master端開啟binlog,Mster把它的二進制日志傳遞給slaves來達到master-slave數據一致的目的。 (數據庫的主從復制)?
其二:自然就是數據恢復了,通過使用mysqlbinlog工具來使恢復數據。

一、開啟binlog日志:?
vi編輯打開mysql配置文件

?# vi /usr/local/mysql/etc/my.cnf
1
在[mysqld] 區塊?
設置/添加 log-bin=mysql-bin 確認是打開狀態(值 mysql-bin 是日志的基本名或前綴名);?
重啟mysqld服務使配置生效

# pkill mysqld
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
1
2
二、也可登錄mysql服務器,通過mysql的變量配置表,查看二進制日志是否已開啟 單詞:variable[?v?ri?b?l] 變量?
登錄服務器

# /usr/local/mysql/bin/mysql -uroot -p123456
mysql> show variables like 'log_%';?
1
2


三、常用binlog日志操作命令
1.查看所有binlog日志列表

? ? mysql> show master logs;
1
2.查看master狀態,即最后(最新)一個binlog日志的編號名稱,及其最后一個操作事件pos結束點(Position)值

? ? mysql> show master status;
1
3.刷新log日志,自此刻開始產生一個新編號的binlog日志文件

? ? ?mysql> flush logs;
1
注:每當mysqld服務重啟時,會自動執行此命令,刷新binlog日志;在mysqldump備份數據時加 -F 選項也會刷新binlog日志;?
4.重置(清空)所有binlog日志

? ? ?mysql> reset master;
1
四、查看某個binlog日志內容?
這里介紹一種方便的查詢命令:

mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
1
選項解析:?
IN ‘log_name’ 指定要查詢的binlog文件名(不指定就是第一個binlog文件)?
FROM pos 指定從哪個pos起始點開始查起(不指定就是從整個文件首個pos點開始算)?
LIMIT [offset,] 偏移量(不指定就是0)?
row_count 查詢總條數(不指定就是所有行)

四、Canel
canal是阿里巴巴旗下的一款開源項目,純Java開發。基于數據庫增量日志解析,提供增量數據訂閱&消費,目前主要支持了MySQL(也支持mariaDB)。

起源:早期,阿里巴巴B2B公司因為存在杭州和美國雙機房部署,存在跨機房同步的業務需求。不過早期的數據庫同步業務,主要是基于trigger的方式獲取增量變更,不過從2010年開始,阿里系公司開始逐步的嘗試基于數據庫的日志解析,獲取增量變更進行同步,由此衍生出了增量訂閱&消費的業務,從此開啟了一段新紀元。

基于日志增量訂閱&消費支持的業務:

數據庫鏡像
數據庫實時備份
多級索引 (賣家和買家各自分庫索引)
search build
業務cache刷新
價格變化等重要業務消息
1
2
3
4
5
6
原理相對比較簡單:

1、canal模擬mysql slave的交互協議,偽裝自己為mysql slave,向mysql master發送dump協議
2、mysql master收到dump請求,開始推送binary log給slave(也就是canal)
3、canal解析binary log對象(原始為byte流)
1
2
3


架構設計?
個人理解,數據增量訂閱與消費應當有如下幾個點:

1、增量訂閱和消費模塊應當包括binlog日志抓取,binlog日志解析,事件分發過濾(EventSink),存儲(EventStore)等主要模塊。
2、如果需要確保HA可以采用Zookeeper保存各個子模塊的狀態,讓整個增量訂閱和消費模塊實現無狀態化,當然作為consumer(客戶端)的狀態也可以保存在zk之中。
3、整體上通過一個Manager System進行集中管理,分配資源。
1
2
3
源碼以及項目介紹: https://github.com/alibaba/canal?
canal消費端項目開源:Otter(分布式數據庫同步系統),地址:https://github.com/alibaba/otter
---------------------?
作者:HY_Chan?
來源:CSDN?
原文:https://blog.csdn.net/github_38687585/article/details/80944824?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的binlog以及Canel的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。