成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何實現絲滑般的數據庫擴容

數據庫 MySQL
隨著數據量的不斷增大,一般我們要對數據進行水平切分,水平切分的規則你可以簡單根據用戶id或者用戶IP對數據進行取模,實現路由功能。當然也可以增加Slave跟KeepAlived來實現高可用。

[[398632]]

本文轉載自微信公眾號「sowhat1412」,作者sowhat1412。轉載本文請聯系sowhat1412公眾號。

引言

初版

如果我們的線上服務不重要,一般來個單體的數據庫DB來存儲數據即可來。

單體應用

優點:簡單,省事,方便。

缺點:數據并發性,穩定性都有問題。

進階

隨著數據量的不斷增大,一般我們要對數據進行水平切分,水平切分的規則你可以簡單根據用戶id或者用戶IP對數據進行取模,實現路由功能。當然也可以增加Slave跟KeepAlived來實現高可用。

主從+路由

但問題是,如果隨著業務發展,目前我們2個庫的性能扛不住了,還要繼續水平拆分,造出更多庫咋辦?你一般是如何實現絲滑擴容的呢?

擴容

第一版:停機擴容

停機擴容

簡單直接暴力的方法。

  • APP通知用戶在某個時間段停機維護升級。
  • 新建若干個具有高可用的庫。
  • 停止當前服務,然后寫個數據遷移程序,實現把老庫數據全部遷移到新庫中。
  • 修改代碼路由規則后重新對外提供服務。

優點:簡單

缺點:中間停服務了,無法保證高可用。數據切換前跟切換過程中需確保無任何出錯。

第二版:在線雙寫

在線雙寫

  1. 建立好新到數據庫,然后接下來用戶在寫原有數據庫到同時也寫一份數據到我們的新庫中。
  2. 寫個數據遷移程序,實現舊庫中的歷史數據遷移到新庫中。
  3. 遷移過程中,每次插入數據時,需檢測數據的更新情況。比如,如果新的表中沒有當前的數據,則直接新增;如果新表有數據并沒有我們要遷移的數據新的話,我們就更新為當前數據,只能允許新的數據覆蓋舊的數據,推薦使用Canal這樣到中間件。
  4. 經過一段時間后需要校驗新庫跟舊庫兩邊數據是否一樣。如果檢查到一樣了,則直接切換即可。

優點:高可用了。

缺點:不夠絲滑,來回挪動數據較大。

第三版:絲滑般擴容

目標:打算將原來到兩個數據庫擴容到4個。

第一步:修改配置

修改配置

修改配置信息,注意舊庫跟新庫之間到映射關系。確保擴容后數據可以正確路由到服務器。

  • Id % 2 = 0 的庫變為了 id % 4 = 0 或 id % 4 = 2
  • Id % 2 = 1 的庫變為了 id % 4 = 1 或 id % 4 = 3

第二步:reload配置

服務層reload配置,可以重啟服務,也可以CLoud那樣配置中心發送信號來實現重讀配置文件。

至此,數據庫的2 --> 4 擴容完成,原來是2個數據庫實例提供服務,現在變為4個數據庫實例提供服務。

第三步:收縮數據

絲滑擴容

此時 id % 4 = 0 跟 id % 4 = 2 的兩個DB 還在同步數據。id % 4 = 1 跟 id % 4 = 3的兩個DB還在同步數據。需做一些收尾操作。

  1. 接觸上面的兩個同步操作。
  2. 對新庫新建高可用。
  3. 刪除冗余數據,比如id % 4 = 0的機器中刪除id % 4 = 2的冗余數據,只為id % 4 = 0的數據提供服務,其余三個類似操作。
  4. 至此實現成倍擴容,還避免來數據遷移。

 

 

責任編輯:武曉燕 來源: sowhat1412
相關推薦

2021-08-18 06:40:54

KubernetesDocker Containerd

2017-10-31 13:20:00

H5翻頁庫框架

2022-07-15 07:58:18

SteampipeCLI 工具

2024-05-21 10:28:51

API設計架構

2023-03-03 17:00:00

部署Linux內核

2023-09-27 07:49:23

2011-03-18 09:07:02

數據庫擴容

2025-03-03 12:00:00

JavaScriptfor 循環語言

2023-07-18 07:56:20

2022-11-03 07:49:52

JS原生元素

2022-08-16 08:37:09

視頻插幀深度學習

2020-07-22 15:15:28

Vue前端代碼

2012-10-19 10:21:07

數據庫負載均衡mssqlserver

2022-12-19 14:53:07

模型訓練

2022-06-16 09:55:58

css輪播圖

2017-02-08 11:00:50

數據庫索引類型

2010-06-02 16:57:50

MySQL數據庫同步

2024-05-16 12:03:54

Python代碼開發

2010-06-09 10:09:39

MySQL 數據庫導入

2010-05-20 11:23:12

卸載MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲三级免费看 | 国产黄色大片网站 | 亚洲高清视频在线观看 | 免费精品视频在线观看 | 亚洲一区二区视频 | 亚洲一区二区三区久久 | 国产一区二区精 | 久久久五月天 | 免费在线观看成年人视频 | 午夜天堂精品久久久久 | 亚洲免费网站 | 久久久久久久久久久久一区二区 | 视频三区| chengrenzaixian| 久久久久国产一区二区三区 | 自拍亚洲 | 国产a级黄色录像 | 成人免费视屏 | 精品国产91亚洲一区二区三区www | 欧洲一级黄 | 成人久久18免费网站麻豆 | 99久久婷婷国产综合精品首页 | 色婷婷亚洲一区二区三区 | 91一区二区三区在线观看 | 免费成人在线网站 | 精品综合久久久 | 六月色婷 | 久久国产99 | 成人a在线 | 久久久久久国产精品久久 | av免费网址 | 欧美一区视频在线 | 涩涩视频大全 | 国产精品一区二区三区久久久 | 欧美一区二区三区在线 | 欧美激情网站 | 999热视频 | 久久综合888 | 国产精品视频网站 | 日日操夜夜操视频 | 亚洲免费视频在线观看 |