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...