亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

pxc接點掛掉同步問題

老師介紹了pxc接點如果有3個,因為需要數據強一致性。假如其中一個接點數據寫不進去的話,這個寫入操作就失敗了。

那么問題來了。假如這3個接點當中有一個掛掉了。怎么辦,這個掛的接點就寫不進去。是不是會導致所有的寫入操作不管在那個接點都不能執行了?

正在回答

4 回答

同學你好,PXC集群只有在超過一半數量的節點宕機,集群才會不可用,這是為了避免異地機房部署PXC集群,因為網絡故障,導致一個PXC集群分裂成兩個集群。所以說掛掉一兩個節點沒什么問題,只要不超過一半的節點就行。

1 回復 有任何疑惑可以回復我~
#1

慕娘3202412

也就是說一個節點寫不進去的話,會返回給客戶端錯誤,還是是由另外的節點寫入?
2018-05-28 回復 有任何疑惑可以回復我~
#2

神思者 回復 慕娘3202412

可以為PXC集群配置Haproxy負載均衡,當某個PXC節點心跳檢測沒有響應,Haproxy會把SQL語句轉發到其余正常的節點,不需要人工干預。另外Haproxy單節點部署不具備高可用,Haproxy宕機就導致業務停機,所以還要為Haproxy設置雙機熱備方案。具體操作歡迎收看這門實戰課(https://coding.imooc.com/class/219.html#Anchor),里面詳細講解了PXC集群的搭建和管理,以及Redis集群、前后端分離項目的集群等等。
2018-05-28 回復 有任何疑惑可以回復我~
#3

慕娘3202412 回復 神思者

嗯,謝謝老師
2018-05-28 回復 有任何疑惑可以回復我~
#4

壯士 提問者

非常感謝!
2018-05-28 回復 有任何疑惑可以回復我~
查看1條回復

給樓上的幾位朋友的一點點心得

#? ?場景:5個宕機的節點宕掉那一瞬間的數據分別為ABCDE 這5個順序的版本 A是最老的版本 E是最新的版本? ?第一個節點是根節點

#? ?實驗:啟動第一個節點(數據版本為A的節點)

# ? It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1

# ? 大概意思是說:從這個節點啟動可能不安全,因為它不是最后一個離開集群環境的,可能不包含最新的更新.若要強制使用這個節點啟動集群,請修改grastate.bat文件,將safe_to_boostrap設置為1

# ? 啟動第二個節點(我加入的那個節點還沒啟動呢,我不著急啟動)? 無法與集群建立連接

# PS:五個節點的集群環境均為PXC,第二三四五個節點的加入的節點都是第一個幾點

# ? 啟動第N個節點(非開始節點) 與第二個同樣

# 現狀:所有的節點都宕機了,根節點不是最新節點無法啟動,其他節點因為根節點未啟動而不能啟動,該怎么處理呢?

#? ?猜想:嘗試上面所述的刪除grastate.dat文件再重第一個節點開始啟動

# ? rm -rf /var/lib/docker/volumes/mysql1-v/_data/grastate.dat

# ? rm -rf /var/lib/docker/volumes/mysql2-v/_data/grastate.dat

# ? rm -rf /var/lib/docker/volumes/mysql3-v/_data/grastate.dat

# ? rm -rf /var/lib/docker/volumes/mysql4-v/_data/grastate.dat

# ? rm -rf /var/lib/docker/volumes/mysql5-v/_data/grastate.dat

# ? 啟動第一個節點 我們發現啟動成功了,但是數據只保留了這個節點宕機時的數據

# ? 啟動第二個節點 數據被同步成了第一個節點的數據

# ? 啟動第N個節點 數據被同步成了第一個節點的數據

# 結論:當所有節點都宕機時,如果最后一個宕機的不是根節點,那么直接刪除grastate.dat文件并重啟容器的話,數據會丟失,如果最后一個宕機的是根節點,那么數據應該沒問題

# 目標:無論最后一個離開集群的節點是否是根節點,我們都希望能夠保存最新版的數據并且重啟集群

# 方案:個人方案原理如下

確定最后一個宕機的節點并讓它成為根節點重啟,再運行其他普通節點

# 問題:1.我們應該如何得知最后一個宕機的節點?

# 這個方法應該不少 比如使用haproxy負載均衡頁面中的失去連接時間來看? 失去連接時間最短的即是最后離開節點的

# ? 2.我們應該如何指定這個節點從普通節點變為根節點?

# docker好像不支持創建容器后再追加或者修改配置 那么我們可以刪除所有卷中的grastate.dat文件,重新創建并運行容器即可


0 回復 有任何疑惑可以回復我~

上面的同學說的問題,我也感到很困惑。

按照PXC強一致性的說法,只要存在一個節點無法同步,那么操作就會無法執行,會造成整個集群的癱瘓。

0 回復 有任何疑惑可以回復我~
#1

qq_無憂無慮_0

集群環境只包含正常運行的節點 比如5個節點都在運行 那么集群中就有5個節點 當你們所說的一個節點掛掉的話 集群環境會把這個掛掉的節點從集群環境中踢出去 即當前集群環境中只剩下了4個節點 我看視頻看了一部分的時候也跟你們想的一樣 但是仔細想想如果從始至終都是5個節點的話 只要一個節點掛掉 那么就表示著整個集群環境都不可用了 那這個方案還有什么高可用可言呢?這是其一 其二 應該是掛掉的那個節點重新啟動時 即重新加入到集群環境時 會從其他節點那里同步數據
2019-12-22 回復 有任何疑惑可以回復我~

你說的課程我都已經擁有了。不過就強一致性的問題。我有點萌。不是只要一個節點數據同步不進去的話就操作失敗。那么down掉一個節點后,即使在其他節點能響應但也保持不了數據的一致性啊。

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

pxc接點掛掉同步問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號