Mysql
MySQL XtraDB/Galera 集群高可用性 RamDisk SuperFast
好的,所以這將是一個推測性的問題,主要是面向設計的,而且是一個相當長的問題。如果我是你,我會喝杯咖啡。
前言:所以我一直在研究數據庫,想要一個非常快(就像真的)數據庫(引擎),它具有以下必備條件,
- 酸合規
- In-Memory-ish 用於超快的 IO。
- 持久的(嗯…呃)
- 可擴展為集群/主從/等
- 高可用性(HA)
- MySQL Drop-In 替換
- 開源
- 應該在商品伺服器(IYKWIM)上執行
所以從我過於樂觀的需求清單來看,你已經跳到了….嗯
好吧,好吧,除了笑話,我知道如果
innodb_buffer_pool_size
調整得當它會在大多數情況下耗盡記憶體,但我說它不在記憶體中喲!
但是你會說嘿,它的 2k18 人可能已經創建了大約 100% 的記憶體數據庫,對吧?嗯…實際上他們有,但每個人都有自己的權衡。
- VoltDB 社區版 一切似乎都很好,直到您意識到它不是替代品。它需要一些儲存過程——java中的命令,這需要你重寫整個應用程序或至少你的php應用程序的數據庫層/驅動程序/等。所以?破壞者!!!
- MemSQL,嗯,這似乎是我們“有史以來最好的開源 In-Mem Scalable SQL Acid DB ”競賽的有力競爭者。只為,memSQL Boss 就像…
不用說,memSQL 至少需要 4 個核心和 8Gigs 的 RAM,推薦4 個核心和每個核心32 個gigs 的記憶體非常瘋狂!!!!此外,memSQL 的社區版本(順便說一句,不是完全開源的!,它只是免費的)不支持高可用性,因為它是一項付費功能。還有它的 NoSQL。所以?破壞者!!!
- 所有其他 NoSQLish 數據庫,如 membase、Redis、Memcached 等,都被排除在外。
所以現在我的天才想法!
我想知道我們是否可以執行一個 XtraDB/Galera 集群,其中所有實例都執行在RAMDisc上並帶有正常快照?
它會勾選所有復選框。
聽我說完,首先解決房間裡的大象,我們知道從 RAMDiscs 執行完整的 mysql Dbs 是非常嗯…大膽,以最禮貌的方式。那麼如果伺服器崩潰/關閉/等我們失去一個節點會發生什麼。雖然我們所有的數據庫集群作為一個整體仍然活著並且在踢**。我們所要做的就是從上一個快照啟動數據庫並與集群同步回來,順便說一下,集群本身就非常擅長!
好的,偷看,不要對我太鹹,如果您發現我的實施存在缺陷,請指導我。
好的,3個 Galera 節點,具有:
- 每個都將所有磁碟內容放在 RAM 磁碟中。
- 足夠的 RAM 使之成為可能。
- 這些節點在地理上是分開的,因此火山、洪水等無法一次將它們全部消滅。
- 高速網路。
筆記:
- 這將允許從一台伺服器失去中完全自動恢復。
- 故障期間的唯一延遲是將客戶端切換到其他兩個節點之一。
- 但是,您可能會發現網路是慢點。(糾纏還沒有完善。)
- 不需要快照。(您總是有 2 個具有完整數據副本的其他節點。)