自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一個月后,我們又從 MySQL 雙主切換成了主-從!

數(shù)據(jù)庫 新聞
經(jīng)過這一個月的 MySQL 雙主模式的試運行,最后我們還是決定切換到 MySQL 主-從模式。

一、遇到的坑

一個月前,我們在測試環(huán)境部署了一套 MySQL 高可用架構,也就是 MySQL 雙主 + Keepalived 的模式。?

在這一個月遇到了很多坑

  • 因為兩個 MySQL 節(jié)點都可以寫入,極其容易造成主鍵重復,進而導致主從同步失敗。
  • 同步失敗后,Slave_SQL_Thread 線程就停了,除非解決了同步的錯誤,才能繼續(xù)進行同步。
  • 同步失敗的錯誤,不會只有一條記錄有問題,往往是一大片的同步問題。
  • 兩個節(jié)點互相缺少對方的數(shù)據(jù)。
  • 主從的同步延遲,切換到新主庫后,數(shù)據(jù)不是最新。
  • 當出現(xiàn)不一致時,無法確定以哪個庫為準。

造成上面問題的主要原因就是因為兩個節(jié)點都支持寫入 + 雙主可以隨時切換。

解決這種問題的方案有 改進自增主鍵的步長(影響未評估),使用 GTID 方案(未驗證)。即使這樣,雙主同步的風險還是有,而且不同步后,如何處理是個大難題。

那么回到我們最初的想法:為什么會選擇雙主?

最開始的目的就是為了高可用。雙主就是說有一臺 MySQL 節(jié)點掛了,另外一臺能夠頂上,對于用戶來說是無感的,給運維人員一定的緩沖時間來排查 MySQL 故障。另外老的主節(jié)點恢復后,不用改配置就能立即成為從節(jié)點。

經(jīng)過這一個月的 MySQL 雙主模式的試運行,最后我們還是決定切換到 MySQL 主-從模式。

雙主模式就是兩個節(jié)點即是主節(jié)點也是從節(jié)點,那我們現(xiàn)在切換到一主一從模式,就可以認為是降級。接下來我們聊聊雙主換成主從的思路和步驟。

二、雙主降為主從

雙主模式

雙主模式的原理圖如下:

圖片

兩個主節(jié)點,都安裝了 KeepAlived 高可用組件,對外提供了一個 VIP,只有一個節(jié)點接管 VIP,客戶端訪問的請求都是到這個 VIP,另外一個節(jié)點處于待機狀態(tài)。

主從模式

和雙主不一樣的地方如下,從節(jié)點是只讀的。

圖片

一主一從是主從模式中的一種,具有以下特點:

  • 一個主節(jié)點,一個從節(jié)點,主節(jié)點提供給客戶端訪問,從節(jié)點只通過主節(jié)點的 binlog 進行數(shù)據(jù)同步。
  • 從節(jié)點是只讀的。從節(jié)點可以作為只讀節(jié)點提供類似報表查詢等耗時讀操作。
  • 主節(jié)點宕機后,從節(jié)點成為主節(jié)點,也是高可用的一種方案。

相對于雙主的高可用方案,不同之處如下:

  • 主從切換需要用腳本將從庫設置為可讀可寫。
  • 主從切換后,需要將從庫設置為不同步老主庫。
  • 主從切換后,老的主庫恢復后,需要人工設置為只讀,且開啟同步新主庫的功能。

這樣來看,主從模式在異常情況下,多了些人工操作。

在異常情況下,主從切換一般是這樣處理的:通過腳本監(jiān)測主節(jié)點是否宕機,如果主庫宕機了,則從庫自動切換為新的主庫,待老主庫恢復后,就作為從庫同步新主庫數(shù)據(jù),新主庫上的 Keepalived 接管 VIP。

目前改為主從模式有兩種方式:

  • 簡單方式:人工切換模式,主節(jié)點故障后需要人工切換主從。
  • 復雜方式:高可用方式,主節(jié)點故障后,主從自動切換,讀寫分離自動切換。

本篇只涉及簡單方式,復雜方式的原理和配置步驟放到下篇專門講解。

三、改為主從的簡單方式

簡單方式的主從切換流程如下:

圖片

和雙主模式的主從切換的區(qū)別是,從節(jié)點是只讀的,Keepalived 沒有啟動,需要人工操作主從切換和啟動 Keepalived。

修改配置的步驟如下

① 為了避免從節(jié)點上的 Keepalived 自動接管 VIP 的情況出現(xiàn),將從節(jié)點的 Keepalived 停止,如果遇到主節(jié)點故障,則需要人工干預來進行主從切換。從節(jié)點切換為主節(jié)點后,重新啟動從節(jié)點 Keepalived。

systemctl status keepalived

② 保留主節(jié)點的 Keepalived,保證 MySQL 的連接信息都不需要變。

③ 主節(jié)點 node1 停用 MySQL 的同步線程。

STOP SLAVE

④ 從節(jié)點 node2 設置 MySQL 為只讀模式。

# 修改 my.cnf 文件
read_only = 1

⑤ 移除主節(jié)點 node1 同步 node2 MySQL 的權限。

⑥ 從節(jié)點 node1 的開機啟動項中移除 keepalived 服務自啟動。

# 修改啟動項配置
sudo vim /etc/rc.local
# 移除以下腳本
systemctl start keepalived

四、總結

雙主高可用的坑確實比較多,沒有 MySQL 的硬核知識真的很難搞定。筆者在這一個月的實踐中,深刻體會到了雙主同步的難點所在,最后還是選擇了一主一從的模式。

另外因為最開始的配置都是雙主模式下的,所以要修改一些配置,來改為主從模式。因項目時間比較緊,目前采取的是非高可用的主從模式。

對于高可用的主從模式,因涉及的原理和步驟較多,我會在下篇中進行講解。各位卷王也請給我一點時間進行探索和實踐~?

責任編輯:張燕妮 來源: 悟空聊架構
相關推薦

2022-07-12 18:00:00

MySQL模式高可用

2019-04-01 14:17:36

kotlin開發(fā)Java

2025-01-20 08:10:00

AI模型研究

2012-09-24 10:10:35

打樁機AMDFX-系列

2023-02-08 15:38:14

2019-06-20 19:10:19

華為美國5G

2019-10-08 11:07:55

Python 開發(fā)編程語言

2022-03-09 12:26:04

MySQL高可用性主備延遲

2017-11-30 16:23:46

逆向華為云工程師

2015-10-22 16:26:59

MySQL數(shù)據(jù)庫雙主配置

2017-07-02 16:28:06

MySQL數(shù)據(jù)庫集群

2017-11-23 10:59:17

程序員代碼編程

2025-01-09 10:46:01

2021-07-20 08:57:26

滴滴上市網(wǎng)絡安全審查

2021-10-09 06:40:38

比特幣薩爾瓦多數(shù)字錢包

2012-11-26 10:17:44

InnoDB

2013-05-27 09:47:33

Java開發(fā)Java跨平臺

2018-01-10 12:09:12

Android開發(fā)程序員

2010-09-14 16:09:49

sql日期函數(shù)

2009-11-23 08:52:02

Windows 7首月銷量
點贊
收藏

51CTO技術棧公眾號