文章來源:Jesse Lin / 奧登資訊技術顧問
事前準備:
l 3台Ubuntu 22.04(安裝MySQL InnoDB,之後組成Cluster)
l 1台Client(安裝APP + MySQL Router,模擬外部連線)
建置說明
1. 3台Ubuntu 22.04安裝MySQL APT Repository
(重要,比各別下載安裝MySQL Cluster、Shell、MySQL Router相容性會比較好)
MySQL官方下載網址:https://dev.mysql.com/downloads/repo/apt/
2. 3台Ubuntu 22.04安裝MySQL Shell
3. 3台Ubuntu 22.04安裝MySQL InnoDB(InnoDB Version 8.0.34)
4. Client安裝MySQL Shell + MySQL Router
架構說明
Single-Primary主從架構:
l APP API連結MySQL Router的6446 Port做讀寫
l Report連結MySQL Router的6447 Port做唯讀
l MySQL Router連結MySQL InnoDB Cluster的Primary Node
l MySQL InnoDB Cluster由三個MySQL DB組成
(一個 Primarys DB做讀寫,兩個 Secondary DB做唯讀)
Single-Primary主從架構,FailOver切換:
當DB 1意外停機時,Cluster裡面的DB 2會自動從Secondary Mode轉成Primary Mode,
Router會自動連接到DB 2
MySQL Router連線順序:
Router 1連線順序(DB 1 > 2 > 3)
Router 2連線順序(DB 2 > 1 > 3)
Router 3連線順序(DB 3 > 2 > 1)
Multi-Primary主主架構:
l 每個APP API分流連接 不同的MySQL Router
l MySQL Router再設定不同的MySQL DB連線順序,達到分流目的
l MySQL InnoDB Cluster由三個 MySQL DB組成,這三個Primary DB做讀寫
Multi-Primary主主架構,FailOver 切換:
l 這三個Router會各別設定DB連線優先順序
l 當DB 1意外停機時,Router 1原本的連線優先順序是DB 1、DB 2、DB 3
l 這時會依照Router設定檔 的優先順序 改連接到DB 2的DB
MySQL Router連線順序:
Router 1連線順序(DB 1 > 2 > 3)
Router 2連線順序(DB 2 > 1 > 3)
Router 3連線順序(DB 3 > 2 > 1)
Comments