国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

翻譯:MySQL InnoDB Cluster - Navigating the Cluster

這篇具有很好參考價值的文章主要介紹了翻譯:MySQL InnoDB Cluster - Navigating the Cluster。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文是對這篇文章MySQL InnoDB Cluster - Navigating the Cluster[1]的翻譯,翻譯如有不當(dāng)?shù)牡胤?,敬請諒解,請尊重原?chuàng)和翻譯勞動成果,轉(zhuǎn)載的時候請注明出處。謝謝!

當(dāng)我們管理InnoDB Cluster時,一件非常重要的事情就是了解集群處于什么樣的狀態(tài),特別是要了解如何解釋集群狀態(tài)的報告,以及如何從各種具體失敗的故障場景中恢復(fù)。

組復(fù)制成員狀態(tài)

組成員所處的狀態(tài)取決于您是直接查詢該成員還是通過其他成員間接查詢該成員。

成員本身可見的狀態(tài):

OFFLINE
RECOVERING
ERROR
ONLINE

對其他成員可見的狀態(tài):

RECOVERING
UNREACHABLE
ONLINE

當(dāng)MySQL實例正在運行但是其尚未加入任何組時,它就處于OFFLINE的狀態(tài)。一旦它加入一個組后,MySQL實例與該組的其它節(jié)點/成員同步數(shù)據(jù)時,它將切換為RECOVERING。一旦數(shù)據(jù)同步恢復(fù)完成(分布式恢復(fù)完成),它最終切換到ONLINE狀態(tài).?如果數(shù)據(jù)同步由于某些原因失敗時,節(jié)點則會切換到ERROR狀態(tài).

如果一個ONLINE的成員停止響應(yīng)其他成員時(因為MySQL實例崩潰、網(wǎng)絡(luò)問題、極高的負載、超時等),其狀態(tài)將切換為UNREACHABLE。如果該UNREACHABLE成員在超時之前沒有恢復(fù),它將被其它成員從組中剔除/驅(qū)逐,因此在命令cluster.status()的輸出中狀態(tài)顯示為MISSING。驅(qū)逐成員的過程是通過投票完成的,因此只有在有足夠的成員并達到法定人數(shù)的情況下才會發(fā)生。

翻譯:MySQL InnoDB Cluster - Navigating the Cluster

組或副本集狀態(tài)

下圖概述了組呈現(xiàn)的可能狀態(tài)以及狀態(tài)轉(zhuǎn)換是如何發(fā)生的。

實線過渡線顯示您可以在每種狀態(tài)下執(zhí)行的 MySQL Shell 命令,而虛線則是在我們控制之外觸發(fā)的事件。

為了減少混亂,圖中省略了一些可能性。例如,只要有法定人數(shù),您就可以在任何狀態(tài)下執(zhí)行大多數(shù)命令,例如addInstance()或rejoinInstance()命令

cluster.status()命令顯示的組狀態(tài)信息:

OK???????????????–當(dāng)所有成員都屬于ONLINE狀態(tài)并且有足夠的冗余來容忍至少一個節(jié)點故障時顯示。
OK_PARTIAL???????–當(dāng)一個或多個成員不可用,但仍有足夠的冗余來容忍至少一個節(jié)點故障時。
OK_NO_TOLERANCE??–當(dāng)有足夠的ONLINE成員達到法定人數(shù),但沒有冗余節(jié)點時。兩個成員組成的團體沒有冗余,因為如果其中一個成員變成了UNREACHABLE,另一個成員就無法單獨形成大多數(shù);
????????????????????這意味著您將遇到數(shù)據(jù)庫中斷(database?outage)情況。但與單個成員組不同的是,至少您的數(shù)據(jù)在至少一個節(jié)點上仍然是安全的。
NO_QUORUM????????–?一個或多個成員可能仍然是ONLINE,但不能達到法定人數(shù)。在此狀態(tài)下,您的集群不能寫入,因此無法執(zhí)行事務(wù)。但是,只讀查詢?nèi)匀豢梢詧?zhí)行,并且您的數(shù)據(jù)是完整且安全的。
UNKNOWN??????????–?如果您從一個不是ONLINE或RECOVERING狀態(tài)的實例執(zhí)行命令status()時,則會顯示此狀態(tài)。在這種情況下,請嘗試連接到其他成員。?
UNAVAILABLE??????–?該狀態(tài)在圖中顯示,但不會出現(xiàn)在cluster.status()命令顯示中。在這種狀態(tài)下,該組的所有成員都是OFFLINE。他們可能仍在運行,但他們不再是該集群的一部分。例如,如果所有成員重新啟動而沒有重新加入集群,則可能會發(fā)生這種情況。
翻譯:MySQL InnoDB Cluster - Navigating the Cluster

InnoDB集群的狀態(tài)轉(zhuǎn)換圖。(PDF版[2]

組分區(qū)

一種特殊場景是組分區(qū),雖然這種情況很少見,但可能會造成混亂,有時甚至很危險,即組的成員實際上分為2個組或多個組。例如,如果您的成員位于不同的網(wǎng)絡(luò)中并且他們之間的通信中斷,則可能會發(fā)生這種情況。在這種情況下,所有成員都是ONLINE,但一個組的成員將被另一個組成員視為UNREACHABLE,反之亦然。由于需要多數(shù),只有一個組(最多一個組)能夠接收數(shù)據(jù)更新,從而保持?jǐn)?shù)據(jù)庫的一致性。

但是,當(dāng)使用cluster.forceQuorumUsingPartitionOf()命令時,就像下面所解釋的那樣,您必須小心,不要讓組成員處于這種情況。如果遇到這種情況,您可能會創(chuàng)建2個單獨的組來分別接收更新,這將導(dǎo)致您的數(shù)據(jù)庫獨立處理事務(wù)并使其處于不一致的狀態(tài)。

翻譯:MySQL InnoDB Cluster - Navigating the Cluster
           5個成員全部ONLINE
翻譯:MySQL InnoDB Cluster - Navigating the Cluster
           5人成員分裂為兩組

從失敗中恢復(fù)

以下場景是發(fā)生故障時可能遇到的一些最常見情況。我們解釋了如何識別它們以及如何在MySQL Shell中使用InnoDB Cluster API 來恢復(fù)它們。

服務(wù)器重新啟動

如果mysqld 由于任何原因(實例崩潰、預(yù)期重啟、重新配置等)重新啟動,那么當(dāng)它恢復(fù)時,它將不再位于該組/集群中。它需要重新加入它,這在某些情況下可能必須手動完成。為此,您可以使用cluster.rejoinInstance()命令將MySQL實例加入回組中。它用的參數(shù)是MySQL實例的URI。

示例:

cluster.rejoinInstance("root@192.168.1.50")

失去法定人數(shù)

如果副本集的大量成員變成UNREACHABLE,以至于它不再擁有多數(shù)成員,則它將不再擁有法定人數(shù),并且無法對任何更改做出決定。這包括用戶事務(wù),還包括組拓撲的更改。這意味著,即使成員從UNREACHABLE狀態(tài)恢復(fù)了, 該成員依然被阻止,無法重新加入該群組。

要從這種情況中恢復(fù),我們必須首先取消該組(unblock the group),方法是將其重新配置,僅考慮當(dāng)前ONLINE的成員并忽略所有其他成員。為此,用cluster.forceQuorumUsingPartitionOf()這個命令 傳入復(fù)制集中中一個ONLINE的成員的URL作為參數(shù)。所有可見的ONLINE成員都將添加到重新定義的組中。

請注意,這個命令是一個危險的命令。如上所述,如果您的組中碰巧有一個分區(qū),您可能會意外地出現(xiàn)裂腦,這將導(dǎo)致數(shù)據(jù)庫不一致。在使用此命令之前,請確保所有成員都是UNREACHABLE,并且狀態(tài)為OFFLINE。

例子:?cluster.forceQuorumUsingPartitionOf("root@192.168.1.30")

所有成員OFFLINE

cluster.forceQuorumUsingPartitionOf()命令要求至少有一個實例一直處于ONLINE并且屬于該組。如果不知何故,您的所有成員都是OFFLINE狀態(tài),則只有從單個種子成員中再次“引導(dǎo)”該組,您才能恢復(fù)該組。要執(zhí)行此操作,您需要在選中的種子實例上使用命令dba.restoreFromCompleteOutage(),然后在剩余成員上使用命令rejoinInstance(),直到集群完全恢復(fù)為止。

注意:此命令從 MySQL Shell 1.0.7 開始可用。

結(jié)論

MySQL InnoDB Cluster意在為擁有不同知識和經(jīng)驗水平的 MySQL 用戶提供高可用性。雖然cluster.status()命令可以讓您一目了然地監(jiān)控集群的狀態(tài),但如何了解原理非常重要,這樣您就知道何時需要該采取哪些措施來確保 MySQL 數(shù)據(jù)庫保持最佳運行狀態(tài)。

參考資料

[1]

1: https://dev.mysql.com/blog-archive/mysql-innodb-cluster-navigating-the-cluster/,

[2]

pdf: https://dev.mysql.com/blog-archive/mysqlserverteam/wp-content/uploads/2016/12/AvailabilityStateMachine.pdf文章來源地址http://www.zghlxwxcb.cn/news/detail-746954.html

到了這里,關(guān)于翻譯:MySQL InnoDB Cluster - Navigating the Cluster的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • [翻譯]——How the MySQL Optimizer Calculates the Cost of a Query (Doc ID 1327497.1)

    本文是對這篇文章 How the MySQL Optimizer Calculates the Cost of a Query (Doc ID 1327497.1) [1] 的翻譯,翻譯如有不當(dāng)?shù)牡胤剑凑堈徑?,請尊重原?chuàng)和翻譯勞動成果,轉(zhuǎn)載的時候請注明出處。謝謝! MySQL 4.0 及后續(xù)更高的版本 本文檔中的內(nèi)容適用于任何平臺。 了解 MySQL 優(yōu)化器如何計算SQL語

    2024年02月05日
    瀏覽(14)
  • How to fix the limit of 1000 shards per cluster in ES

    Let’s first take a look at the error message in the console. The error message you’re seeing indicates that the maximum number of shards allowed in your Elasticsearch cluster has been reached. By default, Elasticsearch has a limit of 1000 shards per cluster. To fix this error, you have a few options: Increase the maximum number of shards: You can increas

    2024年02月03日
    瀏覽(25)
  • K8s in Action 閱讀筆記——【13】Securing cluster nodes and the network

    K8s in Action 閱讀筆記——【13】Securing cluster nodes and the network

    Pod中的容器通常在不同的Linux名稱空間下運行,這使得它們的進程與其他容器或節(jié)點默認名稱空間下運行的進程隔離開來。 例如,我們學(xué)習(xí)到每個Pod都擁有自己的IP和端口空間,因為它使用其自己的網(wǎng)絡(luò)名稱空間。同樣,每個Pod也擁有自己的進程樹,因為它有自己的PID名稱空

    2024年02月11日
    瀏覽(37)
  • K8s in Action 閱讀筆記——【14】Securing cluster nodes and the network

    K8s in Action 閱讀筆記——【14】Securing cluster nodes and the network

    迄今為止,創(chuàng)建了 Pod 而不考慮它們允許消耗多少 CPU 和內(nèi)存。但是,正如將在本章中看到的那樣,設(shè)置 Pod 預(yù)期消耗和允許消耗的最大數(shù)量是任何 Pod 定義的重要部分。設(shè)置這兩組參數(shù)可以確保 Pod 只占用 Kubernetes 集群提供的資源中的份額,并且還影響 Pod 在集群中的調(diào)度方式

    2024年02月08日
    瀏覽(63)
  • MySQL集群(mysql-cluster)

    系統(tǒng)環(huán)境:centos7 管理節(jié)點:192.168.127.128 數(shù)據(jù)節(jié)點:192.168.127.145,192.168.127.146 sql節(jié)點:192.168.127.145,192.168.127.146 創(chuàng)建mysql用戶,將程序部署到/home/mysql 目錄下 數(shù)據(jù)節(jié)點、sql節(jié)點必須卸載mariadb 管理節(jié)點 創(chuàng)建/var/lib/mysql/mysql-cluster 目錄,且mysql賬戶有讀寫權(quán)限 /home/mysql目錄下創(chuàng)

    2024年02月11日
    瀏覽(13)
  • MySQL—MySQL的存儲引擎之InnoDB

    MySQL—MySQL的存儲引擎之InnoDB

    存儲引擎 說明 MyISAM 高速引擎,擁有較高的插入,查詢速度,但不支持事務(wù) InnoDB 5.5版本后MySQL的默認數(shù)據(jù)庫存儲引擎,支持事務(wù)和行級鎖,比MyISAM處理速度稍慢 ISAM MyISAM的前身,MySQL5.0以后不再默認安裝 MRG_MyISAM 將多個表聯(lián)合成一個表使用,在超大規(guī)模數(shù)據(jù)存儲時很有用 Me

    2024年04月26日
    瀏覽(24)
  • MySQL監(jiān)控Innodb信息

    Innodb由于支持事務(wù)操作,是mysql中使用最多的存儲引擎,所以如何監(jiān)控Innodb存儲引擎以進行性能優(yōu)化是在使用mysql過程中遇到最多的,那么如何進行監(jiān)控呢? show engine show status 通過查看日志文件 緩沖池信息 緩沖池是Innodb緩存頻繁訪問數(shù)據(jù)的地方,對緩沖池內(nèi)數(shù)據(jù)的任何更新也

    2024年02月20日
    瀏覽(23)
  • MySQL — InnoDB 鎖

    加鎖是實現(xiàn)數(shù)據(jù)庫并發(fā)控制的一個非常重要的技術(shù)。當(dāng)事務(wù)在對某個數(shù)據(jù)對象進行操作前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務(wù)就對該數(shù)據(jù)對象有了一定的控制,在該事務(wù)釋放鎖之前,其他的事務(wù)不能對此數(shù)據(jù)對象進行更新操作。 在InnoDB中,使用了多種類型的鎖: 共

    2024年02月14日
    瀏覽(45)
  • MySQL — InnoDB介紹

    MySQL — InnoDB介紹

    InnoDB是一款兼顧高可靠性和高性能的通用存儲引擎。也是默認的MySQL存儲引擎。 它的DML操作遵循ACID模型,事務(wù)具有提交、回滾和崩潰恢復(fù)功能,以保護用戶數(shù)據(jù)。 行級鎖定和oracle風(fēng)格的一致性讀取提高了多用戶并發(fā)性和性能。 InnoDB表在磁盤上排列數(shù)據(jù),以優(yōu)化基于主鍵的查

    2024年02月14日
    瀏覽(15)
  • MySQL架構(gòu) & InnoDB存儲引擎

    MySQL架構(gòu) & InnoDB存儲引擎

    我們在開發(fā)的時候,我們都需要對業(yè)務(wù)數(shù)據(jù)進行存儲,這個時候,你們就會用到MySQL 、O racal 等數(shù)據(jù)庫。 MySQL它是一個關(guān)系型數(shù)據(jù)庫, 這種關(guān)系型數(shù)據(jù)庫就有Oracal 、 MySQL,以及最近很火的PgSQL 等。 那什么是關(guān)系型數(shù)據(jù)庫呢? 就是它是 基于我們的SQL語句去執(zhí)行操作的 。 其實

    2024年02月07日
    瀏覽(59)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包