mysql資料庫為啥要做主從複製?
來自專欄軟體開發
1、單資料庫,有什麼問題?
- 數據的「備份」,只能採用「冷備」的方式。一旦遇到資料庫發生重要異常,只能恢復成上次「冷備」的數據。
「冷備」:間隔1周,或者半個月,使用資料庫連接工具,對整個資料庫的「結構和數據」做一次sql導出。
而且備份期間,資料庫自動加「讀鎖」,導致我們無法向資料庫中,去寫入數據。
- 單台「資料庫」伺服器,如果發生「斷電」,「網線異常」,「系統異常」等等情況下,資料庫將無法正常提供數據訪問服務。
「斷電」、「網線異常」、「操作系統異常」等等的情況,太過於常見,一旦發生這類似的情況,資料庫在到恢復之前,系統都無法正常訪問到它。整個系統的「可用行」極差。
- 單台「資料庫」可提供的連接數有限,很容易就達到極限值
默認情況下,mysql資料庫最大連接數是100,我們可以通過修改my.ini配置文件中的max_connections屬性進行配置,一般生產環境下,我們修改成200。一個資料庫能夠具體提供多高的連接數量,受到很多因素的影響,比如:伺服器硬體,操作系統,資料庫版本……
建議通過「測試工具,編寫腳本」去對資料庫進行壓力測試,根據伺服器的質量,連接數量也是有高有低,此處不做明確的指標。200的標準,至少可以保證,目前來說,任何的電腦,都是能夠正常提供的,不會因為連接過多,而導致系統奔潰,或者反應緩慢。但是無論多少,單台的量,一定很容易就能達到,除非你的系統,訪問人群不多,在線量不大!
- 當連接大量用於「查詢」時,甚至影響到「寫」的效率時,單庫無法解決
絕大多的系統,都有這麼一個特徵,就是「用戶的操作,如果按照讀:寫比例的方式來進行分析的化,會出現這麼一個情況,80%的操作都是在對資料庫進行查詢,只有20%在對資料庫是進行修改」,「80%的查詢,都是集中在20%的核心表,以及核心數據上」。
這時,就有可能遇到一個問題就是,當大量的連接用於查詢,而只有少量,甚至沒有連接可以提供給用戶進行「寫數據」時,單庫就處理不了。
2、什麼情況下,需要主從複製?
- 對系統的整體可用性,要求較高時,比如要求:全年99.9%的時間,系統都要保證可以正常使用的情況下。
- 需要對資料庫進行「數據」實時備份時,如果進行「冷備」時,不得影響系統對資料庫進行操作的情況下。
- 當單台「資料庫」無法應付越來越多的訪問時,也就是「連接」快達到或者已經達到峰值時,業務量還在不斷「增加」的情況下。
- 分析業務量,「當用戶的操作比例中,連接,讀寫比例嚴重失衡」的情況下,用於讀的連接已經影響到用於寫的情況下。
推薦閱讀:
※MySQL入門學習筆記——七周數據分析師實戰作業
※MYSQL——Leetcode 刷題(免費版)
※讓SQL語句更可讀
※MySQL知識點總結
※SQL反模式:SQL 建模與使用指南
TAG:SQL |