MySQL雙主模式

2021-10-05 04:31:21 字數 2161 閱讀 7742

2臺伺服器之間,沒有明顯的地位差距, 兩者可以同步對方的內容.

兩台伺服器相互複製

大致思路:

1: 2臺伺服器都設定上2進製日誌和relay日誌

2: 都設定上replcation賬號

3: 都設定對方為自己的master

主主複製下一定要注意避免的問題---------同步衝突

例:create table stu (

id int primary key auto_increment.

)…2臺mysql地位相等, 假如2個請求同時到達2臺伺服器,

請求的a節點, stu 的id為1

請求的b 節點, stu的id為1 ,

同步—>衝突

如何解決?

讓1臺伺服器 1,3,5,7來增長

另1臺伺服器 2,4,6,8來增長

一台伺服器:

set global auto_increment_increment = 2;

set global auto_increment_offset = 1;

set session auto_increment_increment = 2;

set session auto_increment_offset = 1;

另一台伺服器:

set global auto_increment_increment = 2;

set global auto_increment_offset = 2;

set session auto_increment_increment=2;

set session auto_increment_offset = 2;

注:auto-increment-increment 和 auto-increment-offset 要寫到配置檔案 中,防止下次重啟後失效.

如果後期需要加伺服器,這個辦法就有限制了.

我們可以在業務邏輯上來解決,

比如1.在oracle 有sequnce,序列.

序列每次訪問,生成遞增/遞減的資料.

2.以redis為例, 我們可以專門構建乙個 global:userid

每次插入mysql前,先 incr->global:userid, 得到乙個不重複的userid.

3.使用雪花演算法,得到乙個id。

是指 2臺伺服器地位一樣, 但其中一台為唯讀,並且業務中也只寫某1臺伺服器.

好處: 如果供寫入的伺服器出了故障,能迅速的切換到從伺服器,

或者出於檢修等目的,把寫入功能切換到另一台伺服器也比較方便.

用集群中介軟體

比如官方的mysql_proxy

還有國產的中介軟體 amoeba

解壓後, 該目錄包含已經編譯好的二進位制檔案 .

1: 利用mysql_proxy實現負載均衡

執行mysql_proxy

./mysql-proxy-path/bin/mysql-proxy

–proxy-backend-addresses=192.168.1.199:3306

–proxy-backend-addresses=192.168.1.200:3306

2: 連線mysql_proxy,用mysql客戶就可以,因為proxy是mysql的前端**

注意proxy的埠是4040

mysql -h 「proxy的ip」 -p 4040 -u username -p password

在連線上之後,做sql查詢,卻總是往某1臺mysql server來傳送------負載均衡沒體現出來?

答: 不是沒體現出來.

均衡不是體現在sql語句,一會請求mysqla服,一會請求mysqlb服.

均衡是體現」連線」的均衡上.,

也就是說,均衡是以連線為單位的。在連線上做到負載均衡。

可以多建立幾個連線試試。

為什麼已連線為單位?

因為有可能乙個事務中,包含先insert,再update語句,如果負載均衡到不同庫中,會發生異常。

mysql_proxy會把連線mysql伺服器的tcp/ip連線快取進連線池,以提高效能.

在快取池裡, 快取的連線大致是平均分配在每台mysql伺服器上.

但具體的每乙個連線,始終連某台伺服器.

mysql 雙主模式 keepalived高可用

mysql雙主模式下,在任意一台mysql上寫資料都會同步到另一台上,本章通過keepalived vip實現如果一台服務掛了會自動切換到另一台mysql上.安裝keepalived,centos預設安裝了 yum install keepalived y修改雙主機 etc keepalived k...

Nginx Keepalived(雙主模式)

1.主主模式,需要兩個vip,互為主備,需要修改之前主從模式keepalived配置檔案 主從模式 node1 192.168.3.15 vip 192.168.3.11 node2 192.168.3.8 vip 192.168.3.12 2.修改keepalived的配置檔案,採用master ...

keepalived雙主模式輕鬆構建

考慮到keepalived高可用,備節點的機器基本上屬於空閒狀態,很浪費硬體資源,所以我們可以讓keepalived互為主備,跑多個例項vim etc keepalived keepalived.conf global defs 第乙個業務 為主 vrrp instance vi 1 virtual...