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

MySQL高可用架構(gòu)選型,言簡意賅全是要點

數(shù)據(jù)庫 MySQL
MySQL發(fā)展至今,在高可用性方面不斷前進(jìn),從最初的異步復(fù)制、半同步復(fù)制、群組復(fù)制,演進(jìn)到現(xiàn)在的InnoDB Cluster和InnoDB Replica Set。本文將說明各種高可用架構(gòu)以及適用場景。

 MySQL發(fā)展至今,在高可用性方面不斷前進(jìn),從最初的異步復(fù)制、半同步復(fù)制、群組復(fù)制,演進(jìn)到現(xiàn)在的InnoDB Cluster和InnoDB Replica Set。本文將說明各種高可用架構(gòu)以及適用場景。

一 、高可用架構(gòu)

MySQL Replication

經(jīng)典的主從復(fù)制,需要多個步驟手動進(jìn)行配置。例如,用戶管理、備份恢復(fù)、配置復(fù)制......MySQL僅提供了核心功能,整體架構(gòu)需要用戶自己決定(大部分情況下需要定制)。在這種情況下,組織或者公司需要使用不同的技術(shù)組件,技術(shù)專家或DBA需要將大量的工作和時間投入到自動化處理。

MySQL InnoDB Cluster

2016年,MySQL推出了MySQL InnoDB Cluster,InnoDB Cluster主要包括MySQL Group Replication(群組成員變化管理、網(wǎng)絡(luò)分區(qū)控制、集群范圍一致性......),MySQL Shell(強(qiáng)有力的接口,自動化整合全部的組件),MySQL Router(應(yīng)用透明路由、負(fù)載均衡、自動應(yīng)用故障轉(zhuǎn)移......)以及MySQL Clone(自動化部署成員,完全整合至InnoDB Cluster)。

MySQL InnoDB Replica Set

2020年,MySQL推出MySQL InnoDB Replica Set。該功能基于經(jīng)典的主從復(fù)制,完全整合MySQL Shell和MySQL Router。

二、InnoDB Cluster和InnoDB Replica Set

上面簡要介紹了MySQL高可用的過去和現(xiàn)在的解決方案,下面將詳細(xì)地介紹InnoDB Cluster和InnoDB Replica Set。

MySQL InnoDB Cluster是MySQL的一體化產(chǎn)品解決方案,具有高可用性和可伸縮性的特點,組件包括MySQL Server、MySQL Shell、MySQL Router和MySQL Group Replication。它的目標(biāo)是提供一個MySQL一體化產(chǎn)品,全部的組件統(tǒng)一開發(fā),整合全部的組件,并進(jìn)行全棧測試。此外,簡單易用也是該產(chǎn)品的特色,使用一個統(tǒng)一的客戶端MySQL Shell統(tǒng)一進(jìn)行集群編排和管理。

MySQL Group Replication

MySQL Group Replication是分布式高可用MySQL數(shù)據(jù)庫,具有容錯、自動故障轉(zhuǎn)移、多節(jié)點更新、自動成員管理、沖突檢測/解決以及防止數(shù)據(jù)丟失功能。它是復(fù)制數(shù)據(jù)庫狀態(tài)機(jī)理論的實現(xiàn),能夠保證整體寫入順序,保證一致性。集群范圍內(nèi)最終一致,如果使用8.0.14之后的MySQL可以實現(xiàn)會話和全局范圍的讀寫強(qiáng)一致性。MySQL 5.7版本將這個功能GA,并支持全部的MySQL平臺,包括Linux、Windows、Solaris、macOS 、FreeBSD等。

MySQL Group Replication可以用于如下場景:

  •  一致性:數(shù)據(jù)零丟失(RPO=0)

          ○ 主要成員故障時,數(shù)據(jù)不會丟失。

          ○ 防止網(wǎng)絡(luò)分區(qū),通過大多數(shù)在線原則防止網(wǎng)絡(luò)分區(qū)。

  •  高可用性:自動故障轉(zhuǎn)移

         ○ 自動選取主要成員

         ○ 自動控制網(wǎng)絡(luò)分區(qū)

  •  讀取擴(kuò)展:

         ○ 按需增加/刪除節(jié)點

         ○ 使用流程控制處理延遲

         ○ 可配置一致性級別

             ◉ 最終一致

             ◉ 完整一致性

  •  主主環(huán)境:

         ○ 同時寫入多個成員

            ◉ 組內(nèi)順序?qū)懭耄╔COM,PAXOS理論的實現(xiàn))

            ◉ 保證一致性

         ○ 寫入性能良好

            ◉ 樂觀鎖(取件于工作負(fù)載)

MySQL Router

透明訪問數(shù)據(jù)庫的架構(gòu),在應(yīng)用程序和后端的MySQL數(shù)據(jù)庫之間提供透明的路由連接。

  •  透明客戶端連接路由

         ○ 負(fù)責(zé)均衡

         ○ 應(yīng)用程序連接故障轉(zhuǎn)移

         ○ 配置簡單

  •  無縫設(shè)計提供簡單的HA客戶端路由

         ○ 路由作為應(yīng)用程序棧的一部分

  •  整合InnoDB Cluster和InnoDB Replica Set
  •  2個TCP端口用于主節(jié)點和非主節(jié)點通信

MySQL Shell

提供一個數(shù)據(jù)庫管理接口,可以執(zhí)行MySQL相關(guān)的全部任務(wù)。

  •  支持多種語言:JavaScript、Python、SQL
  •  可編寫腳本
  •  支持文檔存儲和關(guān)系型模型
  •  公開完整的開發(fā)和管理API
  •  經(jīng)典的MySQL協(xié)議和X協(xié)議

MySQL Shell簡單易用,可以通過它快速搭建InnoDB Cluster。

創(chuàng)建集群

配置實例

添加實例

啟動MySQL Router

檢查集群狀態(tài)

MySQL InnoDB Replica Set

  •  完全整合MySQL Router
  •  簡單易用的MySQL Shell
  •  配置、增加、移除成員
  •  自動化部署成員(Clone)
  •  主從復(fù)制架構(gòu)

         ○ 手動進(jìn)行切換和故障轉(zhuǎn)移

         ○ 異步讀取擴(kuò)展

         ○ 簡單的主從架構(gòu)

         ○ 沒有硬件網(wǎng)絡(luò)要求 

             ◉ 提供主節(jié)點的可用性

InnoDB Replica Set可以通過克隆自動部署新成員,利用MySQL Shell自動配置用戶和復(fù)制,手動配置、增加移除應(yīng)用程序使用的服務(wù)器,MySQL Router或其他代理,并且能夠整合MySQL Router的負(fù)載均衡能力。從而避免了以往配置主從復(fù)制時所需的繁瑣步驟。

以往需要使用額外的監(jiān)控工具在每臺服務(wù)器上去檢查拓?fù)錉顟B(tài),用戶需要負(fù)責(zé)全部組件的所有配置,每一個設(shè)置都相當(dāng)于定制化。使用InnoDB Replica Set可以通過MySQL Shell status()來查看拓?fù)錉顟B(tài),并且Shell會基于最佳實踐配置服務(wù)器、路由和復(fù)制,以防止發(fā)生錯誤。

InnoDB Replica Set是一套標(biāo)準(zhǔn)的解決方案,由MySQL團(tuán)隊提供支持和質(zhì)量保證,這個方案的優(yōu)點是簡單易用,初學(xué)者也可以快速掌握。

三、如何選擇高可用架構(gòu)

最后說明一下如何選擇不同的高可用架構(gòu)。

首先要明確業(yè)務(wù)的需求,高可用性越高意味著成本也越高??梢詮囊韵聨讉€方面去明確目標(biāo):

  •  恢復(fù)時間目標(biāo)(RTO)

          服務(wù)從故障中恢復(fù)需要多長時間?

  •  恢復(fù)點目標(biāo)(RPO)

          服務(wù)在故障中允許丟失的數(shù)據(jù)

  •  故障類型

         ○ 高可用:單一服務(wù)器故障,網(wǎng)絡(luò)分區(qū)

         ○ 容災(zāi):整體地域/網(wǎng)絡(luò)故障

         ○ 人為錯誤:操作失誤,故意破壞

  •  程度

         ○ 0

         ○ 秒

         ○ 分

         ○ 小時

         ○ ...

不同業(yè)務(wù)需求對應(yīng)的架構(gòu)

單一地域

  •  RTO=小時
  •  RPO=分
  •  一臺MySQL服務(wù)器

         ○ 備份

         ○ 同步日志

單一地域

  •  RTO=小時
  •  RPO=少于1秒
  •  一臺MySQL服務(wù)器

         ○ 頻繁備份

         ○ 持續(xù)拉取二進(jìn)制日志

 

 

單一地域

  •  RTO=數(shù)分
  •  RPO=少于1秒
  •  MySQL InnoDB Replica Set

單一地域

  •  RTO=數(shù)秒
  •  RPO=0
  •  MySQL InnoDB Cluster

多地域

  •  地域故障
  •  RTO=數(shù)分
  •  RPO=數(shù)秒
  •  MySQL InnoDB Cluster

         ○  配合使用異步復(fù)制

多地域

  •  地域故障
  •  RTO=數(shù)分
  •  RPO=0
  •  MySQL InnoDB Cluster 跨地域部署

         ○ 兩個地域的一致性級別設(shè)置為AFTER,或者三個地域,每個地域具有1-2個成員。

         ○ 寫入的吞吐量受到影響,寫入事務(wù)需要保證事務(wù)同步。

以上是關(guān)于MySQL高可用性架構(gòu)的內(nèi)容,用戶可以根據(jù)不同的需求選擇適合自己的架構(gòu)。 

 

責(zé)任編輯:龐桂玉 來源: DBAplus社群
相關(guān)推薦

2015-10-22 10:28:45

MySQL高可用方案

2022-05-17 11:06:44

數(shù)據(jù)庫MySQL系統(tǒng)

2018-01-12 14:20:37

數(shù)據(jù)庫MySQL高可用架構(gòu)

2019-08-27 15:56:44

MySQL 互聯(lián)網(wǎng)數(shù)據(jù)庫

2023-12-11 07:44:36

MySQL架構(gòu)高可用

2025-03-03 04:20:00

高可用架構(gòu)冗余法則

2022-06-23 11:42:22

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

2019-08-12 10:48:24

MySQLMHA架構(gòu)應(yīng)用場景

2015-05-12 10:22:05

MySQL

2015-07-08 10:37:12

MySQL高可用架構(gòu)業(yè)務(wù)架構(gòu)

2022-02-27 14:37:53

MySQL主備數(shù)據(jù)

2015-07-03 11:26:07

MySQL高可用架MHA

2019-12-24 09:30:59

蘇寧高可用高并發(fā)

2017-07-10 10:51:19

Mysql群集架構(gòu)服務(wù)器上線

2011-05-07 11:11:21

LCD拼接

2017-09-13 13:42:09

微服務(wù)緩存架構(gòu)

2020-07-24 08:50:17

Redis數(shù)據(jù)庫

2021-08-20 11:05:14

高并發(fā)架構(gòu)分布式

2022-09-29 15:24:15

MySQL數(shù)據(jù)庫高可用

2017-10-27 14:52:31

互聯(lián)網(wǎng)高可用架構(gòu)高可用
點贊
收藏

51CTO技術(shù)棧公眾號