【課程背景】
隨著移動互聯(lián)時代的到來,數(shù)據(jù)量、并發(fā)量急劇增加,針對海量數(shù)據(jù)的特點,如何設計滿足企業(yè)應用的高可用分布式數(shù)據(jù)庫架構也變得越來越具有挑戰(zhàn)性。企業(yè)在規(guī)劃和設計高可用分布式數(shù)據(jù)庫架構,涉及到方方面面的知識點,可選的方案也很多,如何在各種各樣,紛繁復雜的技術中構建適合企業(yè)的高可用分布式數(shù)據(jù)庫技術架構,變成了一件很具挑戰(zhàn)的事情。一個好的高可用分布式數(shù)據(jù)庫技術架構可以以較低的成本、更靈活的方式,滿足企業(yè)用戶需求。相反,糟糕的架構,不但花費了重金,而且架構過于復雜、過于笨重,線上故障不斷,架構靈活性差,阻礙業(yè)務的發(fā)展。
我個人一直從事分布式RDBMS(MySQL)&NoSQL(MongoDB、Redis、Memcached等)數(shù)據(jù)庫架構設計工作,根據(jù)在百度、58同城等六年內滿足海量用戶請求的數(shù)據(jù)庫架構設計經(jīng)驗,帶領大家一起學習數(shù)據(jù)庫架構如何玩?理論結合實踐,并重點講述案例,深入剖析海量分布式數(shù)據(jù)庫架構設計的高可用性。并一同探討如何滿足貴企業(yè)的高可用的分布式數(shù)據(jù)庫架構設計。
來吧,一起揭開“高可用分布式RDBMS&NoSQL數(shù)據(jù)庫設計與實踐”的神秘面紗!
【環(huán)境準備】
硬件:物理機盡量4g以上內存
OS:Centos 5.9及以上 64位
SecureCRT、VIM等等
【培訓對象】
本課程適用于對RDBMS(MySQL等)、NoSQL(MongoDB等)感興趣的學員。本次課程,將會通過循序漸進、步步深入的方式講解,理論結合實踐,每節(jié)課的講解都會基于線上億級別實際的使用實踐來展開,使同學們可以熟練掌握RDBMS、NoSQL。因此學員最好有一定的數(shù)據(jù)存儲的基礎。
【培訓收益】
本課程會采用理論結合實踐的方式,循序漸進的講述。學習完本課程,可以系統(tǒng)了解互聯(lián)網(wǎng)高可用分布式數(shù)據(jù)庫架構是如何設計和實踐的。課程中講述的高可用分布式數(shù)據(jù)庫架構實踐方法一定會對個人架構能力提升和貴公司的架構優(yōu)化提供較好的參考依據(jù),從而能讓大家系統(tǒng)性的掌握高可用分布式數(shù)據(jù)庫架構設計的方法論,并應用于實際工作中。
【課程大綱】
RDBMS(MySQL)
第一課:MySQL體系架構&常用部署
1. MySQL體系架構組成;
2. MySQL單點部署方式及其適用場景;
3. MySQL復制部署方式及其適用場景;
4. MySQL分布式集群部署方式及其適用場景;
第二課:MySQL存儲引擎
1. MySQL存儲引擎概述;
2. MySQL存儲引擎原理;
3. MySQL MyISAM引擎;
4. MySQL InnoDB引擎;
5. MySQL存儲引擎適用場景;
第三課:MySQL數(shù)據(jù)庫開發(fā)設計規(guī)范
1. MySQL Schema設計規(guī)范;
2. MySQL命名規(guī)則;
3. MySQL字段類型設計規(guī)范;
4. MySQL索引設計規(guī)范;
5. MySQL鎖設計規(guī)范;
6. MySQL事務設計規(guī)范;
7. MySQL其他設計規(guī)范;
第四課:MySQL鎖和事務設計
1. MySQL事務概述;
2. MySQL鎖機制概述;
3. MySQL MyISAM表鎖及其使用;
4. MySQL InnoDB行鎖及其使用;
5. MySQL InnoDB 鎖實現(xiàn)及其借鑒;
第五課:MySQL索引設計
1. MySQL數(shù)據(jù)庫索引是什么;
2. MySQL數(shù)據(jù)庫索引類型;
3. MySQL索引存儲;
4. MySQL索引更新;
5. 我們的實踐案例;
第六課:MySQL庫設計
1. MySQL庫設計原則;
2. MySQL海量數(shù)據(jù)如何分庫;
3. 我們的實踐案例;
第七課:MySQL表設計
1. MySQL表設計原則;
2. MySQL海量數(shù)據(jù)如何分表;
3. 我們的實踐案例;
第八課:MySQL高可用架構設計
1. MySQL異步復制機制是什么;
2. MySQL集群Replication實現(xiàn)機制及其配置;
3. MySQL一主多從高可用架構;
4. MySQL一主多從(級聯(lián))高可用架構;
5. MySQL多主高可用架構;
6. MySQL雙主多從高可用架構;
7. 我們的實踐案例;
第九課:MySQL性能優(yōu)化方法
1. MySQL性能評估方法;
2. MySQL索引優(yōu)化方法;
3. MySQL SQL語句優(yōu)化方法;
4. MySQL Schema設計優(yōu)化方法;
5. MySQL Server性能優(yōu)化方法;
6. 我們的實踐案例;
第十課:MySQL監(jiān)控
1. MySQL監(jiān)控的重要性;
2. MySQL監(jiān)控的手段是什么;
3. MySQL進程監(jiān)控、語義監(jiān)控、錯誤監(jiān)控、慢查詢監(jiān)控、數(shù)據(jù)波動監(jiān)控方法;
4. 我們的實踐案例;
第十一課:MySQL數(shù)據(jù)備份與恢復
1. MySQL數(shù)據(jù)備份的重要性;
2. MySQL數(shù)據(jù)備份的方法;
3. MySQL數(shù)據(jù)快速恢復的方法;
4. 我們的實踐案例;
NoSQL(MongoDB等)
第一課:NoSQL小生態(tài)
1. NoSQL產生背景;
2. NoSQL數(shù)據(jù)模型及其操作模型;
3. NoSQL數(shù)據(jù)可靠性;
4. NoSQL數(shù)據(jù)擴展性;
5. NoSQL數(shù)據(jù)一致性;
6. NoSQL數(shù)據(jù)持久化;
7. 我們的MongoDB實踐
第二課:MongoDB入門
1. NoSQL簡介;
2. MongoDB是什么;
3. MongoDB的關鍵特性都有哪些;
4. MongoDB適用場景是什么;
5. MongoDB版本回顧;
第三課:MongoDB部署
1. MongoDB的體系架構解讀;
2. MongoDB生態(tài)系統(tǒng)節(jié)點類型;
3. MongoDB主從復制模式解讀;
4. MongoDB副本集復制模式解讀;
5. MongoDB分片解讀;
6. MongoDB集群部署方式都有哪些?如何做選擇;
7. 我們的MongoDB集群部署實踐;
第四課:MongoDB庫如何設計
1. MongoDB Autosharding是否靠譜;
2. MongoDB 庫級sharding是否需要開啟;
3. MongDB 庫設計原則;
4. 我們的MongoDB庫設計實踐;
第五課:MongoDB 表如何設計
1. collection sharding 是否靠譜;
2. collection sharding 是否需要開啟;
3. free scheme 真的free?怎么應對;
4. collection 字段名如何選??;
5. collection 索引如何設計;
6. collection 空間地理索引是否靠譜?如何設計;
7. collection 設計原則;
8. collection 單表數(shù)據(jù)量大如何sharding;
9. 我們的MongoDB 表設計實踐;
第六課:MongoDB GridFS
1. GridFS是什么;
2. GridFS適用場景是什么;
3. GridFS如何使用;
4. 我們的GridFS使用實踐;
第七課:MongoDB Map Reduce
1. MongoDB集群Map Reduce原理;
2. MongoDB集群上如何做Map Reduce;
3. 我們的MongoDB Map Reduce實踐;
第八課:MongoDB集群監(jiān)控
1. MongoDB集群監(jiān)控的方式都有哪些;
2. Mongosniff能監(jiān)控什么,如何監(jiān)控;
3. Mongostat能監(jiān)控什么,如何監(jiān)控;
4. MongoDB內部工具能監(jiān)控什么,如何監(jiān)控;
5. MMS能監(jiān)控什么,如何監(jiān)控;
6. 第三方監(jiān)控能監(jiān)控什么,如何監(jiān)控;
7. 我們的MongoDB集群監(jiān)控實踐;
第九課:MongoDB集群數(shù)據(jù)安全性和一致性
1. MongoDB集群會出現(xiàn)數(shù)據(jù)是否會丟失;
2. MongoDB集群數(shù)據(jù)安全性如何保證;
3. MongoDB集群是否會出現(xiàn)數(shù)據(jù)不一致;
4. MongoDB集群一致性如何保證;
5. 我們的MongoDB集群數(shù)據(jù)安全性和一致性實踐;
第十課:MongoDB集群線上典型問題案例分析及解決
1. 大量刪除數(shù)據(jù)問題及其解決方案;
2. 大量數(shù)據(jù)空洞問題及其解決方案;
3. 存儲量&并發(fā)量增大,CPU飆升問題及其解決方案;
4. Sharding遷移數(shù)據(jù)抖動問題及其解決方案;
5. 內存頻繁swap、磁盤IO性能不足問題及其解決方案;
6. 地理空間索引查詢和重構消耗過多CPU資源問題及其解決方案;
第十一課:MongoDB集群性能優(yōu)化方案
1. 導致MongoDB集群性能低下原因是什么;
2. 如何盡早發(fā)現(xiàn)MongoDB集群性能問題;
3. 如何收縮數(shù)據(jù)提升性能;
4. 如何Scale Up方式提升性能;
5. 如何Scale Out方式提升性能;
6. 我們的MongoDB集群性能優(yōu)化實踐;
第十二課:MongoDB集群如何無縫擴容擴展
1. 什么情況下我們需要擴容MongoDB集群;
2. 常用的MongoDB集群擴容方案都有哪些;
3. 如何做到無縫的MongoDB集群擴容擴展;
4. 我們的MongoDB集群擴容擴展實踐;
第十三課:MongoDB集群如何無縫版本升級
1. 什么情況下我們需要做版本的升級;
2. 如何無縫對MongoDB集群版本升級;
3. 我們的MongoDB集群無縫升級實踐;
第十四課:MongoDB 3.0及其應對方案
1. MongoDB 3.0關鍵特性是什么;
2. 我們如何應對;