《數(shù)據(jù)庫中間件MyShard》課件_第1頁
《數(shù)據(jù)庫中間件MyShard》課件_第2頁
《數(shù)據(jù)庫中間件MyShard》課件_第3頁
《數(shù)據(jù)庫中間件MyShard》課件_第4頁
《數(shù)據(jù)庫中間件MyShard》課件_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

MyShard介紹歡聚時代:喻先兵12022/11/21MyShard介紹歡聚時代:喻先兵12022/11/21MyShard是什么/p/myshard/MyShard是一個數(shù)據(jù)庫中間件位于應用程序和MySQL之間截取用戶SQL請求、SQLRewrite、轉發(fā)到MySQLMyShard是一種高可用數(shù)據(jù)庫實現(xiàn)在主主復制功能跨IDC部署22022/11/21MyShard是什么http://code.google.c高可用系統(tǒng)數(shù)據(jù)層服務層代理層APP高可用系統(tǒng):透明的應用故障切換、消除單點故障應用程序故障發(fā)生時,可以自動透明地切換到其他服務器上應用程序和查詢不會中斷,用戶感覺不到故障的發(fā)生代理層服務層高可用代理層智能路由服務層多點連接讀寫分離數(shù)據(jù)層集群容錯技術磁盤備份技術多機房容災技術APP32022/11/21高可用系統(tǒng)數(shù)據(jù)層服務層代理層APP高可用系統(tǒng):透明的應用故障為什么要開發(fā)MyShard4主數(shù)據(jù)庫IDC1從數(shù)據(jù)庫IDC2從數(shù)據(jù)庫IDC3數(shù)據(jù)服務讀寫分離主數(shù)據(jù)庫IDC1主數(shù)據(jù)庫IDC2主數(shù)據(jù)庫IDC3數(shù)據(jù)服務寫代理高可用可伸縮數(shù)據(jù)服務MyshardIDC1MyshardMyshardMyshardIDC3MyshardIDC2MyshardIDC12022/11/21為什么要開發(fā)MyShard4主數(shù)據(jù)庫IDC1從數(shù)據(jù)庫IDC2開源的NoSQL5mongoDBHBase為什么不采用這些NoSQL?跨IDC的高可用全局第二索引2022/11/21開源的NoSQL5mongoDBHBase為什么不采用這些NMyShard部署模型高可用性、分區(qū)容錯性、最終一致性Multi-Master【主主服務】模型專業(yè)靈活高效的版本沖突檢測解決機制可伸縮性靈活的分布式策略和路由能力海量存儲能力高并發(fā)服務能力其他特性MySQL協(xié)議的服務能力和半關系型操作模型高效可靠數(shù)據(jù)同步能力MyShard[IDC1]服務代理客戶端同步服務MySQL分區(qū)MyShard[IDC3]服務代理客戶端同步服務MySQL分區(qū)MyShard[IDC2]服務代理客戶端同步服務MySQL分區(qū)62022/11/21MyShard部署模型高可用性、分區(qū)容錯性、最終一致性MySbinlog同步原理Myshard(g1)MySQLMySQLIO線程IO線程中繼日志BinlogBinlogIO線程Myshard(g2)MySQLMySQLIO線程IO線程中繼日志BinlogBinlogIO線程SQL線程SQL線程72022/11/21binlog同步原理Myshard(g1)MySQLMySQCAP原理ConsistencyAvailabilityToleerancetonetworkPartitionsC:Consistency一致性A:Availability可用性P:ToleranceofnetworkPartition

分區(qū)容錯性

傳統(tǒng)關系型數(shù)據(jù)庫:CA非關系型數(shù)據(jù)庫:AP82022/11/21CAP原理ConsistencyAvailabilityToBASE模型BasicallyAvailble

基本可用Soft-state

軟狀態(tài)/柔性事務EventualConsistency

最終一致性92022/11/21BASE模型BasicallyAvailble92022/QuorumNRWN:復制的節(jié)點數(shù)量R:成功讀操作的最小節(jié)點數(shù)W:成功寫操作的最小節(jié)點數(shù)W+R〉N,可以保證強一致性典型的場景:

強一致性:W=N,R=1

高可用性:W=1HBase:W=N,R=1MyShard:W=1,R=1102022/11/21QuorumNRWN:復制的節(jié)點數(shù)量HBase:W=N,R最終一致性模型機房A機房B機房C最近版本值最近版本值最近版本值(k:0)(k:1)(k:0)(k:2)(k:0)(k:3)w(k:2)w(k:3)(k:3)w(k:1)w(k:3)(k:3)w(k:1)w(k:2)(k:3)實現(xiàn)簡單優(yōu)化資源高效適用w(k:1)w(k:2)w(k:3)112022/11/21最終一致性模型機房A機房B機房C最近版本值最近版本值最近版本第二索引MySQLMySQLMySQLMyShard用戶表[uid分區(qū)]按用戶名查詢怎么辦?MySQLMySQLMySQL數(shù)據(jù)第二索引用戶索引[按用戶名分區(qū)]MyShardSelect*fromuserwhereuid=1andnamelike=‘%’;Select*fromuserwherename=‘henry’;122022/11/21第二索引MySQLMySQLMySQLMyShard用戶表[索引類型全局第二索引一致性第二索引建表存儲索引數(shù)據(jù)存儲所有字段

存儲所有數(shù)據(jù)createindexidx_order_uidonorderpartitionkeyuidsharding_rulehash_int_100;CREATEQUICKINDEXidx_order_qONorderPARTITIONKEYuidSHARDING_RULEhash_int_100WITHtype=“10";selectcount(*)fromorderwhereuid=1andtype=10;建表存儲索引數(shù)據(jù)存儲主鍵、索引、版本字段可存儲部分數(shù)據(jù)以空間換時間以效率換一致性本地索引在原表上建索引

mysql的索引格式以空間換時間ALTERTABLEorderaddINDEXidx_order_local(prod_id,order_time);132022/11/21索引類型全局第二索引一致性第二索引建表存儲索引數(shù)據(jù)存儲所shardingMySQLMySQLMySQLMyShard數(shù)據(jù)hash分區(qū)根據(jù)分區(qū)鍵查詢,支持in語法范圍分區(qū)根據(jù)范圍查詢,支持跨分片的范圍查詢142022/11/21shardingMySQLMySQLMySQLMyShard結構化數(shù)據(jù)模型和半關系操作模型用戶標識用戶姓名1張三2李四用戶標識數(shù)學語文1908028756用戶表考分表KVHASET[table_name]SETV1=:v1,V2=:v2WHEREK1=:k1andK2=:k2HADELETE[table_name]WHEREK1=:k1andK2=:k2讀操作Select*fromawherepartition_key=1and

(其他條件);Selectf1,f2,f3fromawherepartition_key=1and(其他條件);Selectt1.f2,count(t1.f3),sum(t2.f1)fromat1,bt2wheret1.partition_key=t2.partition_keyandt1.partition_key=1

and(其他條件)

復雜條件可選,目前支持的其他條件有:

i)

關系型比較a=1

,a<1,a>1

ii)

between

語法:abetweenv1andv2

iii)like語法:alike'adfadfa'

iv)in語法:ain(v1,v2,v3)

v)函數(shù):mysql的函數(shù)基本上都能支持

Selectt1.f2,count(t1.f3),sum(t2.f1)fromat1,bt2wheret1.partition_key=t2.partition_keyandt1.partition_key=1

and(其他條件)DMLINSERTINTOT(f1,f2,f3)values(v1,v2,v3)UPDATETsetf2=v2wheref1=v1andf3<v3;DELETEFROMTwheref1=v1andf3<123;152022/11/21結構化數(shù)據(jù)模型和半關系操作模型用戶標識用戶姓名1張三2李四用

對于數(shù)據(jù)進行批量更新和版本控制對數(shù)據(jù)進行批量刪除功能

批量插入主數(shù)據(jù)和第二索引,用于數(shù)據(jù)維護快速的批量查詢功能

批量SET批量刪除批量插入批量查詢批量處理功能批量數(shù)據(jù)處理:1、通過擴展MySQL語句實現(xiàn),不增加程序復雜性;2、把訪問接口擴展為key-value訪問,避免SQL解析;3、提供大規(guī)模數(shù)據(jù)的訪問和存儲能力;162022/11/21

統(tǒng)計查詢功能17MySQLMySQL導出文件格式(CSV格式)“1”,“abc”,“cde\”\r\n”“2”,“cdf”,”ddd“MySQLMySQLMetaDataMyshardHiveMyshardHandlerPluginMySQLSerDe2022/11/21統(tǒng)計查詢功能17MySQLMySQL導出文件格式(CSV格式Myshard訂閱器Myshard主庫

Myshard生態(tài)Myshard(g3)Myshard(g2)Myshard(g1)Myshard從庫(g0)Myshard發(fā)布系統(tǒng)Rabbitmq訂閱器內部隊列訂閱器文件訂閱器可擴展訂閱框架MySQL訂閱器182022/11/21Myshard訂閱器Myshard主庫MyShard的安裝1、準備myshard_deploy.xmlbusiness_name

default_admin_port,default_sync_port,default_shard_port,redipdb_collate,db_charsetidc

information2、執(zhí)行安裝pythondeploy_myshard.py192022/11/21MyShard的安裝1、準備myshard_deploy.xMyShard維護DDL創(chuàng)建/刪除數(shù)據(jù)庫創(chuàng)建/刪除表創(chuàng)建/刪除索引添加字段其他管理SQL語句添加/刪除紅名單添加/刪除服務器添加/刪除分區(qū)規(guī)則202022/11/21MyShard維護DDL其他管理SQL語句202022/11運維狀態(tài)1.節(jié)點故障2.增刪節(jié)點工作狀態(tài)系統(tǒng)進入運維狀態(tài)后,所有的請求都將會進行查詢轉移到其他的Myshard上執(zhí)行。系統(tǒng)狀態(tài)模型3.創(chuàng)建刪除表4.創(chuàng)建刪除索引212022/11/21運維狀態(tài)1.節(jié)點故障2.增刪節(jié)點工作狀態(tài)系統(tǒng)進入運維狀態(tài)后,故障轉移自動選取下一個GroupNo可以配置制定故障轉移的GroupNoMyShard[IDC1]服務代理客戶端同步服務MySQL分區(qū)MyShard[IDC2]服務代理客戶端同步服務MySQL分區(qū)MyShard之間的故障轉移222022/11/21故障轉移自動選取下一個GroupNoMyShard[IDC數(shù)據(jù)導入/導出工具23OracleMySQL標準格式文本文件批量導入工具MyShardMySQL導出文件格式(CSV格式)“1”,“abc”,“cde\”\r\n”“2”,“cdf”,”ddd“批量導入工具2022/11/21數(shù)據(jù)導入/導出工具23OracleMySQL標準格式批量導入統(tǒng)計監(jiān)控功能24MyshardMyshardMyshard性能指標:1)處理速度2)同步記錄處理速度3)跨機房傳輸速度4)同步延遲處理延遲指標:1、讀30ms、100ms、1s2、寫30ms、100ms、1s細節(jié)指標:1、讀處理數(shù)2、寫處理數(shù)3、異常次數(shù)監(jiān)控系統(tǒng)2022/11/21統(tǒng)計監(jiān)控功能24MyshardMyshardMyshard性監(jiān)控數(shù)據(jù)252022/11/21監(jiān)控數(shù)據(jù)252022/11/21謝謝!262022/11/21謝謝!262022/11/21MyShard介紹歡聚時代:喻先兵272022/11/21MyShard介紹歡聚時代:喻先兵12022/11/21MyShard是什么/p/myshard/MyShard是一個數(shù)據(jù)庫中間件位于應用程序和MySQL之間截取用戶SQL請求、SQLRewrite、轉發(fā)到MySQLMyShard是一種高可用數(shù)據(jù)庫實現(xiàn)在主主復制功能跨IDC部署282022/11/21MyShard是什么http://code.google.c高可用系統(tǒng)數(shù)據(jù)層服務層代理層APP高可用系統(tǒng):透明的應用故障切換、消除單點故障應用程序故障發(fā)生時,可以自動透明地切換到其他服務器上應用程序和查詢不會中斷,用戶感覺不到故障的發(fā)生代理層服務層高可用代理層智能路由服務層多點連接讀寫分離數(shù)據(jù)層集群容錯技術磁盤備份技術多機房容災技術APP292022/11/21高可用系統(tǒng)數(shù)據(jù)層服務層代理層APP高可用系統(tǒng):透明的應用故障為什么要開發(fā)MyShard30主數(shù)據(jù)庫IDC1從數(shù)據(jù)庫IDC2從數(shù)據(jù)庫IDC3數(shù)據(jù)服務讀寫分離主數(shù)據(jù)庫IDC1主數(shù)據(jù)庫IDC2主數(shù)據(jù)庫IDC3數(shù)據(jù)服務寫代理高可用可伸縮數(shù)據(jù)服務MyshardIDC1MyshardMyshardMyshardIDC3MyshardIDC2MyshardIDC12022/11/21為什么要開發(fā)MyShard4主數(shù)據(jù)庫IDC1從數(shù)據(jù)庫IDC2開源的NoSQL31mongoDBHBase為什么不采用這些NoSQL?跨IDC的高可用全局第二索引2022/11/21開源的NoSQL5mongoDBHBase為什么不采用這些NMyShard部署模型高可用性、分區(qū)容錯性、最終一致性Multi-Master【主主服務】模型專業(yè)靈活高效的版本沖突檢測解決機制可伸縮性靈活的分布式策略和路由能力海量存儲能力高并發(fā)服務能力其他特性MySQL協(xié)議的服務能力和半關系型操作模型高效可靠數(shù)據(jù)同步能力MyShard[IDC1]服務代理客戶端同步服務MySQL分區(qū)MyShard[IDC3]服務代理客戶端同步服務MySQL分區(qū)MyShard[IDC2]服務代理客戶端同步服務MySQL分區(qū)322022/11/21MyShard部署模型高可用性、分區(qū)容錯性、最終一致性MySbinlog同步原理Myshard(g1)MySQLMySQLIO線程IO線程中繼日志BinlogBinlogIO線程Myshard(g2)MySQLMySQLIO線程IO線程中繼日志BinlogBinlogIO線程SQL線程SQL線程332022/11/21binlog同步原理Myshard(g1)MySQLMySQCAP原理ConsistencyAvailabilityToleerancetonetworkPartitionsC:Consistency一致性A:Availability可用性P:ToleranceofnetworkPartition

分區(qū)容錯性

傳統(tǒng)關系型數(shù)據(jù)庫:CA非關系型數(shù)據(jù)庫:AP342022/11/21CAP原理ConsistencyAvailabilityToBASE模型BasicallyAvailble

基本可用Soft-state

軟狀態(tài)/柔性事務EventualConsistency

最終一致性352022/11/21BASE模型BasicallyAvailble92022/QuorumNRWN:復制的節(jié)點數(shù)量R:成功讀操作的最小節(jié)點數(shù)W:成功寫操作的最小節(jié)點數(shù)W+R〉N,可以保證強一致性典型的場景:

強一致性:W=N,R=1

高可用性:W=1HBase:W=N,R=1MyShard:W=1,R=1362022/11/21QuorumNRWN:復制的節(jié)點數(shù)量HBase:W=N,R最終一致性模型機房A機房B機房C最近版本值最近版本值最近版本值(k:0)(k:1)(k:0)(k:2)(k:0)(k:3)w(k:2)w(k:3)(k:3)w(k:1)w(k:3)(k:3)w(k:1)w(k:2)(k:3)實現(xiàn)簡單優(yōu)化資源高效適用w(k:1)w(k:2)w(k:3)372022/11/21最終一致性模型機房A機房B機房C最近版本值最近版本值最近版本第二索引MySQLMySQLMySQLMyShard用戶表[uid分區(qū)]按用戶名查詢怎么辦?MySQLMySQLMySQL數(shù)據(jù)第二索引用戶索引[按用戶名分區(qū)]MyShardSelect*fromuserwhereuid=1andnamelike=‘%’;Select*fromuserwherename=‘henry’;382022/11/21第二索引MySQLMySQLMySQLMyShard用戶表[索引類型全局第二索引一致性第二索引建表存儲索引數(shù)據(jù)存儲所有字段

存儲所有數(shù)據(jù)createindexidx_order_uidonorderpartitionkeyuidsharding_rulehash_int_100;CREATEQUICKINDEXidx_order_qONorderPARTITIONKEYuidSHARDING_RULEhash_int_100WITHtype=“10";selectcount(*)fromorderwhereuid=1andtype=10;建表存儲索引數(shù)據(jù)存儲主鍵、索引、版本字段可存儲部分數(shù)據(jù)以空間換時間以效率換一致性本地索引在原表上建索引

mysql的索引格式以空間換時間ALTERTABLEorderaddINDEXidx_order_local(prod_id,order_time);392022/11/21索引類型全局第二索引一致性第二索引建表存儲索引數(shù)據(jù)存儲所shardingMySQLMySQLMySQLMyShard數(shù)據(jù)hash分區(qū)根據(jù)分區(qū)鍵查詢,支持in語法范圍分區(qū)根據(jù)范圍查詢,支持跨分片的范圍查詢402022/11/21shardingMySQLMySQLMySQLMyShard結構化數(shù)據(jù)模型和半關系操作模型用戶標識用戶姓名1張三2李四用戶標識數(shù)學語文1908028756用戶表考分表KVHASET[table_name]SETV1=:v1,V2=:v2WHEREK1=:k1andK2=:k2HADELETE[table_name]WHEREK1=:k1andK2=:k2讀操作Select*fromawherepartition_key=1and

(其他條件);Selectf1,f2,f3fromawherepartition_key=1and(其他條件);Selectt1.f2,count(t1.f3),sum(t2.f1)fromat1,bt2wheret1.partition_key=t2.partition_keyandt1.partition_key=1

and(其他條件)

復雜條件可選,目前支持的其他條件有:

i)

關系型比較a=1

,a<1,a>1

ii)

between

語法:abetweenv1andv2

iii)like語法:alike'adfadfa'

iv)in語法:ain(v1,v2,v3)

v)函數(shù):mysql的函數(shù)基本上都能支持

Selectt1.f2,count(t1.f3),sum(t2.f1)fromat1,bt2wheret1.partition_key=t2.partition_keyandt1.partition_key=1

and(其他條件)DMLINSERTINTOT(f1,f2,f3)values(v1,v2,v3)UPDATETsetf2=v2wheref1=v1andf3<v3;DELETEFROMTwheref1=v1andf3<123;412022/11/21結構化數(shù)據(jù)模型和半關系操作模型用戶標識用戶姓名1張三2李四用

對于數(shù)據(jù)進行批量更新和版本控制對數(shù)據(jù)進行批量刪除功能

批量插入主數(shù)據(jù)和第二索引,用于數(shù)據(jù)維護快速的批量查詢功能

批量SET批量刪除批量插入批量查詢批量處理功能批量數(shù)據(jù)處理:1、通過擴展MySQL語句實現(xiàn),不增加程序復雜性;2、把訪問接口擴展為key-value訪問,避免SQL解析;3、提供大規(guī)模數(shù)據(jù)的訪問和存儲能力;422022/11/21

統(tǒng)計查詢功能43MySQLMySQL導出文件格式(CSV格式)“1”,“abc”,“cde\”\r\n”“2”,“cdf”,”ddd“MySQLMySQLMetaDataMyshardHiveMyshardHandlerPluginMySQLSerDe2022/11/21統(tǒng)計查詢功能17MySQLMySQL導出文件格式(CSV格式Myshard訂閱器Myshard主庫

Myshard生態(tài)Myshard(g3)Myshard(g2)Myshard(g1)Myshard從庫(g0)Myshard發(fā)布系統(tǒng)Rabbitmq訂閱器內部隊列訂閱器文件訂閱器可擴展訂閱框架MySQL訂閱器442022/11/21Myshard訂閱器Myshard主庫MyShard的安裝

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論