pxc接點掛掉同步問題
老師介紹了pxc接點如果有3個,因為需要數據強一致性。假如其中一個接點數據寫不進去的話,這個寫入操作就失敗了。
那么問題來了。假如這3個接點當中有一個掛掉了。怎么辦,這個掛的接點就寫不進去。是不是會導致所有的寫入操作不管在那個接點都不能執行了?
老師介紹了pxc接點如果有3個,因為需要數據強一致性。假如其中一個接點數據寫不進去的話,這個寫入操作就失敗了。
那么問題來了。假如這3個接點當中有一個掛掉了。怎么辦,這個掛的接點就寫不進去。是不是會導致所有的寫入操作不管在那個接點都不能執行了?
2018-05-27
舉報
2018-05-27
同學你好,PXC集群只有在超過一半數量的節點宕機,集群才會不可用,這是為了避免異地機房部署PXC集群,因為網絡故障,導致一個PXC集群分裂成兩個集群。所以說掛掉一兩個節點沒什么問題,只要不超過一半的節點就行。
2019-12-22
給樓上的幾位朋友的一點點心得
#? ?場景: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文件,重新創建并運行容器即可
2019-09-28
上面的同學說的問題,我也感到很困惑。
按照PXC強一致性的說法,只要存在一個節點無法同步,那么操作就會無法執行,會造成整個集群的癱瘓。
2019-03-15
你說的課程我都已經擁有了。不過就強一致性的問題。我有點萌。不是只要一個節點數據同步不進去的話就操作失敗。那么down掉一個節點后,即使在其他節點能響應但也保持不了數據的一致性啊。