寫教學的最大目的是教會未來的自己

MYSQL 轉mariaDB+galera的兩三事

前幾個月我們公司的網站的資料庫系統從MYSQL 5.1.3轉移到mairaDB ,其中最大的目的就是使用galera 同步技術,這當中碰到一些狀況…..

這一篇 主要就是說明一些我所知道的事,至於怎麼安裝的,請自己google吧…..

 

 

一開始我要說的是”MYSQL 轉 mariaDB 不保證完全相容….”,沒錯就是不完全相容,架設你的網站用的SQL 有點複雜,強烈建議先去測試一下,個人猜測是這樣的,mariaDB 只保證 從他所說的MYSQL版本移植過去是相容的,其他版本號不保證,另外因為mariaDB有些加速的手法會導致部分語法失靈,個人目前碰到兩種狀況

1.mariaDB 在文字拆解組合上有問題,尤其碰到中文字,這點到目前我仍然無法有效解決……

2.在sub_query中的排序預設是失效的,沒錯為了優化,子搜尋中是不會做排序的,恩 沒錯邏輯上沒錯,但是我們公司有個不太好的習慣,就是透過sub query 做排序後再做group by,這樣就可取出每個分組的最小值,雖然我們的寫法並不符合標準 但是有效率……這部分的解決方式是 在sub query中加入limit,強制讓他運算

 

 

接下來是galera ,這東西效率很高 先說明他的運作原理吧

首先 這東西只能運作在innoDB上,他的同步方式是這樣的,在所有cluster中的DB前面都設置一個快取區,cluster中 的DB收到query 只要經過系統認定會對DB做修正的(insert / update) 就會把這句指令傳送給cluster中的其他DB 的快取中,並且打上時間戳記,確保執行順序正確,這樣就可以確保他的資料相同,不過有一點要注意,假如cluster中的某一個DB下線後重新上線,如果兩邊資料差距差過快取區,就會讓galera 執行完全同步…..,恩 這就會影響到cluster中其他DB的效能,cluster越大影像越少(被分攤掉了),因為是完全同步,所以部分資料庫會備鎖死,所以如果可以請把快取區開大一點,另外 經過我的測試,他的同步速度比我自己會入資料還快……200G的資料只要半小時…….,而平常匯入時間超過三小時。

另外 galera DB 基本上只要有兩台DB就可以執行,他可以做為互相備援或是分攤壓力的好方案,但是最好要有三台以上,原因就像我前面講的,在只有兩台的情況下,只要有一台掛了,重啟之後….正常的那一台也會備嚴重脫類…….這是沒解的,因為他要同步…….然後不要問我為什麼lock不是不影響select嗎? ….我不知道 反正就是有影響……

Post to Twitter Post to Plurk Post to Facebook Send Gmail

3 Responses to MYSQL 轉mariaDB+galera的兩三事

發表迴響

Copyright © 2024. All Rights Reserved.

歡迎光臨
初音