pxc接點掛掉同步問題
老師介紹了pxc接點如果有3個,因為需要數(shù)據(jù)強一致性。假如其中一個接點數(shù)據(jù)寫不進去的話,這個寫入操作就失敗了。
那么問題來了。假如這3個接點當(dāng)中有一個掛掉了。怎么辦,這個掛的接點就寫不進去。是不是會導(dǎo)致所有的寫入操作不管在那個接點都不能執(zhí)行了?
老師介紹了pxc接點如果有3個,因為需要數(shù)據(jù)強一致性。假如其中一個接點數(shù)據(jù)寫不進去的話,這個寫入操作就失敗了。
那么問題來了。假如這3個接點當(dāng)中有一個掛掉了。怎么辦,這個掛的接點就寫不進去。是不是會導(dǎo)致所有的寫入操作不管在那個接點都不能執(zhí)行了?
2018-05-27
舉報
2018-05-27
同學(xué)你好,PXC集群只有在超過一半數(shù)量的節(jié)點宕機,集群才會不可用,這是為了避免異地機房部署PXC集群,因為網(wǎng)絡(luò)故障,導(dǎo)致一個PXC集群分裂成兩個集群。所以說掛掉一兩個節(jié)點沒什么問題,只要不超過一半的節(jié)點就行。
2019-12-22
給樓上的幾位朋友的一點點心得
#? ?場景:5個宕機的節(jié)點宕掉那一瞬間的數(shù)據(jù)分別為ABCDE 這5個順序的版本 A是最老的版本 E是最新的版本? ?第一個節(jié)點是根節(jié)點
#? ?實驗:啟動第一個節(jié)點(數(shù)據(jù)版本為A的節(jié)點)
# ? 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
# ? 大概意思是說:從這個節(jié)點啟動可能不安全,因為它不是最后一個離開集群環(huán)境的,可能不包含最新的更新.若要強制使用這個節(jié)點啟動集群,請修改grastate.bat文件,將safe_to_boostrap設(shè)置為1
# ? 啟動第二個節(jié)點(我加入的那個節(jié)點還沒啟動呢,我不著急啟動)? 無法與集群建立連接
# PS:五個節(jié)點的集群環(huán)境均為PXC,第二三四五個節(jié)點的加入的節(jié)點都是第一個幾點
# ? 啟動第N個節(jié)點(非開始節(jié)點) 與第二個同樣
# 現(xiàn)狀:所有的節(jié)點都宕機了,根節(jié)點不是最新節(jié)點無法啟動,其他節(jié)點因為根節(jié)點未啟動而不能啟動,該怎么處理呢?
#? ?猜想:嘗試上面所述的刪除grastate.dat文件再重第一個節(jié)點開始啟動
# ? 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
# ? 啟動第一個節(jié)點 我們發(fā)現(xiàn)啟動成功了,但是數(shù)據(jù)只保留了這個節(jié)點宕機時的數(shù)據(jù)
# ? 啟動第二個節(jié)點 數(shù)據(jù)被同步成了第一個節(jié)點的數(shù)據(jù)
# ? 啟動第N個節(jié)點 數(shù)據(jù)被同步成了第一個節(jié)點的數(shù)據(jù)
# 結(jié)論:當(dāng)所有節(jié)點都宕機時,如果最后一個宕機的不是根節(jié)點,那么直接刪除grastate.dat文件并重啟容器的話,數(shù)據(jù)會丟失,如果最后一個宕機的是根節(jié)點,那么數(shù)據(jù)應(yīng)該沒問題
# 目標:無論最后一個離開集群的節(jié)點是否是根節(jié)點,我們都希望能夠保存最新版的數(shù)據(jù)并且重啟集群
# 方案:個人方案原理如下
確定最后一個宕機的節(jié)點并讓它成為根節(jié)點重啟,再運行其他普通節(jié)點
# 問題:1.我們應(yīng)該如何得知最后一個宕機的節(jié)點?
# 這個方法應(yīng)該不少 比如使用haproxy負載均衡頁面中的失去連接時間來看? 失去連接時間最短的即是最后離開節(jié)點的
# ? 2.我們應(yīng)該如何指定這個節(jié)點從普通節(jié)點變?yōu)楦?jié)點?
# docker好像不支持創(chuàng)建容器后再追加或者修改配置 那么我們可以刪除所有卷中的grastate.dat文件,重新創(chuàng)建并運行容器即可
2019-09-28
上面的同學(xué)說的問題,我也感到很困惑。
按照PXC強一致性的說法,只要存在一個節(jié)點無法同步,那么操作就會無法執(zhí)行,會造成整個集群的癱瘓。
2019-03-15
你說的課程我都已經(jīng)擁有了。不過就強一致性的問題。我有點萌。不是只要一個節(jié)點數(shù)據(jù)同步不進去的話就操作失敗。那么down掉一個節(jié)點后,即使在其他節(jié)點能響應(yīng)但也保持不了數(shù)據(jù)的一致性啊。