1. 程式人生 > >Mysql group replication(MGR)實現高可用切換應用無感知方案的思考

Mysql group replication(MGR)實現高可用切換應用無感知方案的思考

一開始考慮使用ProxySQL+MGR來實現資料庫切換應用無感知方向,考慮了可能的兩種部署模型的優缺點:
ProxySQL部署的兩種模型:
1、靠近應用端
方式:在應用伺服器上直接部署
優點:
  A、每個應用伺服器有自己的配置 ,配置內容簡單,不容易相互影響故障,變更故障風險最小
  B、沒有瓶頸壓力,故障容錯最好,單機故障影響最小
  C、資料庫上可以清楚看到SQL來自哪臺應用機器,方便排查故障
  D、無需單獨機器資源
缺點:
  A、每臺應用伺服器上都需要配置,當資料庫架構擴容或者其他變動時,需要應用則的ProxySQL做相應改動
  B、當一臺應用上需要連線多套資料庫時,配置也會開始稍微複雜
2、靠近資料庫端
方式:通過獨立的ProxySQL叢集來提供服務
優點:
  A、不需要每臺應用伺服器上配置,集中修改
缺點:
  A、容易出現瓶頸,網路、機器效能等
  B、集中配置,導致配置非常複雜,可能相互影響,變更故障風險高
  C、全部應用通過ProxySQL來連線,資料庫上看到具體問題連線來自哪臺應用機器,無法進行故障定位
  D、需要單獨的機器資源來部署ProxySQL,因為流量集中且是應用層,需要考慮效能瓶頸,佔用機器資源相對較多
  E、機器故障時,影響是面級,通過額外高可用技術來減少影響


綜合上面的優缺點,ProxySQL+MGR來實現應用切換無感知方式並不大合適,haproxy等方案也有類似問題,建議:
1、使用浮動IP來實現Mysql MGR的寫高可用(浮動IP需要自己實現)
2、使用LVS來實現Mysql MGR或者普通複製(擴充套件庫)讀庫的高可用和負載均衡

3、使用DNS域名切換來實現不同機房的切換

角色職責分層的思考:
1、資料庫層
  A、負責資料庫CELL級別高可用方案,提供寫高可用入口與讀高可用入口
  B、多個邏輯庫從一個CELL拆到多個CELL
2、需要應用層考慮的:
  A、讀寫分離邏輯
  B、邏輯庫的分庫分表
為什麼歸到應用層,這些讀寫分離邏輯與分庫分表邏輯,更加接近應用層的資料理解,所以目前的真正獨立的資料庫中介軟體好像沒有真大互聯公司的實際考驗,已經知道的使用應用側分庫分表元件的網際網路公司有:
  A、阿里--TDDL
  B、噹噹--sharding-jdbc,已經開源
  C、原大眾點評--Zebra
  D、美團--MTDDL(Meituan Distributed Data Layer),參考連結:https://tech.meituan.com/mtddl.html
也有使用proxy方案的,如京東自己開發JProxy,但也是根據自己業務特點開發的。

ProxySQL的應用方向應該是公司沒有能力開發自己的中介軟體元件時使用,但應該在應用端使用,應用層需要在應用中考慮使用配置,並在應用伺服器上直接部署,由於底層的資料庫CELL提供給應用層的讀介面、寫介面已經在高可用和效能可擴充套件,配置只需要考慮業務邏輯與邏輯庫的關係,不需要考慮資料庫的機器細節:
1、應用層沒有自己讀寫分離實現方案,在應用端使用,用於實現讀寫分離

2、應用層沒有自己分庫分表實現方案,在應用端使用,用於實現分庫分表

其實也應該考慮開源的元件如sharding-jdbc

相關推薦

Mysql group replication(MGR)實現可用切換應用感知方案思考

一開始考慮使用ProxySQL+MGR來實現資料庫切換應用無感知方向,考慮了可能的兩種部署模型的優缺點:ProxySQL部署的兩種模型:1、靠近應用端方式:在應用伺服器上直接部署優點:  A、每個應用伺服器有自己的配置 ,配置內容簡單,不容易相互影響故障,變更故障風險最小 

Corosync+pacemaker+DRBD+mysql(mariadb)實現可用(ha)的mysql集群(centos7)

corosync+pacemaker+drbd+mysql(mariadb)實現高可用(ha)的mysql集群(centos7)Corosync+pacemaker+DRBD+mysql(mariadb)實現高可用(ha)的mysql集群(centos7)目錄:介紹環境借助pcs安裝與配置corosync和p

Mysql數據庫實現可用

ide 接下來 自動 內容 eth1 code 源碼安裝 網絡 ole Mysql實現高可用 MMM MMM(master-master replication manager for mysql)mysql主主復制管理器。 MMM是一套靈活的腳本程序,基於

mysql group replication(MGR)群組複製相關資料

配置的叢集成員,通訊時會把主機名與ip地址進行對應,最好是在/etc/hosts中設定好,如果沒有設定,則會碰到如下錯誤:2018-05-02T13:04:32.437256Z 10 [Note] 'CHANGE MASTER TO FOR CHANNEL 'group_re

2-18-搭建mysql集群實現可用

random see 客戶 red manual 安裝mysql har 區分 後臺運行 1 環境清理以及安裝 1.1 mysql舊版本清除 準備5臺虛擬機,分配如下 mysql管理結點:xuegod1.cn IP:192.168.10.31 (安裝

mysql+proxysql+keepalived實現可用的數據庫讀寫分離

mysql讀寫分離 主從復制 proxysql前言 為了降低一臺數據庫的IO,遠程連接數據庫的時候,可以實現讀寫分離進行調度。這裏就出現了一個單點,所以必須要做一個高可用。當然數據庫服務器也需要做主從復制。實驗結構 說明:上圖的拓撲只是整個架構中的一個小部分,其余功能的實現此圖並未規

mysql實現可用架構之MHA

行數據 reading glob restart 比較 實驗 是否 其余 one 一、簡介   MHA(Master HA)是一款開源的 MySQL 的高可用程序,它為 MySQL 主從復制架構提供了 automating master failover 功能。MHA 在監

MYSQL實現可用MHA

mha一、準備實驗MYSQL Replication 環境:MHA 對MYSQL 復制環境有特殊要求,例如各節點都要開啟二進制日誌及中繼日誌,各從節點必須顯示啟用其read-only 屬性,並關閉relay_log_purge 功能等,這裏對配置做事先說明。本實驗環境共有四個節點,其角色分配如下:centos

MySQL Group Replication(多主同步復制MGR

update mod src xtra sla class replicat local trac 開啟replication配置: server-id=1 #標識服務器唯一 log-bin=mys

keepalived+mysql主主實現可用

keepalived+mysqlmysql主從配置參考:http://blog.51cto.com/243662875/2126015 主主配置就是互為主從 keepalived下載網址:http://www.keepalived.org/ 環境 準備應用 keepalived-2.0.2.tar.gz o

keepalived+mysql實現可用

algo prior 優先級 mysqld www. cte enc 方案 .cn 為了響應公司需求,打造出更安全的mysql集群,能夠實現mysql故障後切換,研究了幾天終於有了成果,一起分享一下。首先介紹一下這套集群方案實現的功能1、mysql服務器故障後自動轉移,修好

MySQL中mmm實現可用群集

復制 use 原來 systemctl b- mark alt 刪掉 日誌文件 介紹 MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和

基於MHA+semi sync實現mysql數據庫的可用

ssh-key emc centos 節點和 oos oar name 機會 ntp 一、實驗原理: 1、拓撲結構圖如下: 2、工作原理: 從宕機崩潰的master保存二進制日誌事件(binlog events) 識別含有最新更新的slave 應用差異的中繼

基於galera cluster集群實現mysql數據庫的可用

xtend .repo 需要 主從 adb 讀寫 應用程序 維護 ddr 一、galera cluster 簡介 1、Galera Cluster: 集成了Galera插件的MySQL集群,是一種新型的,數據 不共享的,高度冗余的高可用方案,目前Galera Clu

超詳細MySQL主主復制+MMM實現可用

mnt 更新 nat mount iad com 基於 read p12 簡介 MMM(Master-Master Replication Manager for MySQL, MySQL主主復制管理器)是一套靈活的腳本程序,基於perl實現,用來對mysql replic

MySQL Group ReplicationMGR) 安裝

exit ever 信息采集 false 操作記錄 create .so lob 一個 MySQL Group Replication 安裝 192.168.10.65192.168.10.66192.168.10.67 OS : CentOS 7.4mysql soft

如何設計和實現可用MySQL

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由騰訊雲資料庫 TencentDB發表於雲+社群專欄 王甲坤,騰訊高階工程師、騰訊雲關係型資料庫MySQL負責人,擁有多年客戶端、資料庫研發經驗。在IOS客戶端、MySQL、PostgreSQL、SQL Server等產品有豐富的研

MySQL Group Replication(組複製MGR

MGR基本要求: 1、InnoDB儲存引擎 2、主鍵,每個表必須具有已定義的主鍵或等效的主鍵,其中等效項是非null唯一鍵 3、IPv4網路 4、網路效能 5、開啟二進位制日誌並開啟GTID模式 6、mysql版本在5.7.17以上 MGR限制: 1、組複製不支援mysiam引擎 2、不支援

如何設計和實現可用MySQL

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由騰訊雲資料庫 TencentDB發表於雲+社群專欄 王甲坤,騰訊高階工程師、騰訊雲關係型資料庫MySQL負責人,擁有多年客戶端、資料庫研發經驗。在IOS客戶端、MySQL、PostgreSQL、SQL Server等產品有豐富的研

搭建Mysql Cluster叢集實現可用

MySQL Cluster是MySQL適合於分散式計算環境的高實用、高冗餘版本。Cluster的漢語是“叢集”的意思。它採用了NDB Cluster 儲存引擎,允許在1個 Cluster 中執行多個MySQL伺服器。MySQL Cluster 是一種技術,該技術允許在無共享的系統中部署“記憶體中”資