基於mycat實現讀寫分離
環境:mariadb主:192.168.200.129
mariadb從:192.168.200.114
mycat :192.168.200.112
(1) 安裝jdk,先檢視本機是否有jdk,由於mycat是基於j**a語言來編寫的,所以需要安裝jdk,版本為1.8即可。沒有的話安裝一下然後配置環境變數
[root@ns2 ~]# ls
jdk-8u191-linux-x64.tar.gz
[root@ns2 ~]# tar xf jdk-8u191-linux-x64.tar.gz //解壓
[root@ns2 ~]# mv jdk1.8.0_191 /usr/local/j**a //我把它移動到了/usr/local下起名叫j**a
[root@ns2 ~]# vim /etc/profile //配置環境變數
[root@ns2 ~]# source /etc/profile //宣告一下
[root@ns2 ~]# j**a -version
j**a version "1.8.0_191"
j**a(tm) se runtime environment (build 1.8.0_191-b12)
j**a hotspot(tm) 64-bit server vm (build 25.191-b12, mixed mode)
(2)安裝部署mycat
/,選擇linux環境的版本即可。
將mycat安裝包上傳伺服器後解壓,解壓後我把檔案移動到了/usr/local下
現在已經將mycat部署好了,接下來修改mycat的配置檔案。
(3)配置mycat步驟
01、在主庫和從庫中分別建立用於mycat連線的賬號:
提供乙個資料庫內所有表的許可權及建立的使用者名稱和指定的主機與建立的使用者密碼:
02、配置mycat的schema.xml檔案,該檔案位於mycat中conf資料夾下:
schema 標籤用於定義mycat 例項中的邏輯庫,mycat 可以有多個邏輯庫,每個邏輯庫都有自己的相關配置。可以使用schema 標籤來劃分這些不同的邏輯庫。
datanode 標籤定義了mycat 中的資料節點,也就是我們通常說所的資料分片。乙個datanode 標籤就是乙個獨立的資料分片。
datahost標籤直接定義了具體的資料庫例項、讀寫分離配置和心跳語句。
balance屬性
負載均衡型別,目前的取值有3 種:
balance="0", 不開啟讀寫分離機制,所有讀操作都傳送到當前可用的writehost 上。
balance="1",全部的readhost 與stand by writehost 參與select 語句的負載均衡,簡單的說,當雙主雙從模式(m1->s1,m2->s2,並且m1 與m2 互為主備),正常情況下,m2,s1,s2 都參與select 語句的負載均衡。
balance="2",所有讀操作都隨機的在writehost、readhost 上分發。
balance="3",所有讀請求隨機的分發到wiriterhost 對應的readhost 執行,writerhost 不負擔讀壓
力,注意balance=3 只在1.4 及其以後版本有,1.3 沒有。
writetype 屬性
writetype="0", 所有寫操作傳送到配置的第乙個writehost,第乙個掛了後切換到還生存的第二個
writehost,重新啟動後已切換後的為準,切換記錄在配置檔案中:dnindex.properties .
writetype="1",所有寫操作都隨機的傳送到配置的writehost
指定資料庫名稱,指定負載均衡型別,
指定主從伺服器和工作埠及其建立的使用者和密碼
03、配置server.xml,即主要配置連線mycat的使用者賬號資訊:
賬號配置
第乙個user標籤 :指定之前資料庫建立的使用者和密碼和指定資料庫名稱
第二個user標籤 :指定建立的使用者和密碼,連線測試使用。
然後啟動服務
連線測試:
檢視命令:show @@datasource; //在管理端上檢視。
測試:mycat使用者端:預設8066,可手動更改。使用者是server.xml配置檔案中配置的使用者。
mycat管理端:預設9066,可手動更改,使用者是server.xml配置檔案中配置的使用者。
當呼叫讀介面時read_load的值對應在sl**e上會加1說明是走從庫;
當呼叫寫介面時write_load的值對就在master上會加1說明是走主庫
mycat實現mysql分庫分表
1.mycat介紹 mycat是乙個開源的分布式資料庫系統,是乙個實現了mysql協議的伺服器,前端使用者可以把它看作是乙個資料庫 用mysql客戶端工具和命令列訪問,而其後端可以用mysql原生協議與多個mysql伺服器通訊,也可以用jdbc協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫,...
MYSQL用MYCAT實現讀寫分離
mycat就像nginx一樣做 請求。所以需要三颱主機。一台安裝mycat,兩台安裝主備mysql資料庫。但是我們用docker做測試,所以只用一台就行。主備db安裝在docker虛擬機器中。mycat安裝在實體機裡 懶得安裝在虛擬機器裡了 1 linux安裝兩個mysql 2 上傳mycat 檔案...
mysql 佇列 實現併發讀
佇列是常用的資料結構,基本特點就是先入先出,在事務處理等方面都要用到它,有的時候是帶有優先順序的佇列。當佇列存在併發訪問的時候,比如多執行緒情況下,就需要鎖機制來保證佇列中的同乙個元素不被多次獲取 乙個 mysql 表可以看作是乙個佇列,每一行為乙個元素。每次查詢得到滿足某個條件的最前面的一行,並將...