mycat搭建安裝

我這里使用到了3臺虛擬機,一臺用于mycat,一臺用于master主節(jié)點機器与境,一臺用于slave從節(jié)點機器验夯,下列的命令記得到對應的虛擬機上面使用

1.首先到官網下載http://www.mycat.org.cn/,右上角選擇下載-.>文件下載服務
image.png
2.這個需要選擇兩個文件摔刁,其中一個是jar包挥转,一個是安裝模板,我安裝的時候安裝模板沒有1.22版本,所以兩個我都選擇的1.21版本绑谣,下載之后把jar包放在安裝模板的bin目錄下面党窜,然后再通過mobax放到linux服務器上面,我自己上傳到/usr/local下面的
image.png

image.png
3.運行mycat需要依賴于mysql,jdk(這個是運行mycat環(huán)境需要的,與我們的mysql服務器不是同一個借宵,mycat和mysql服務器不在同一個虛擬機上面幌衣,不然太麻煩了)這個自己去找文章進行安裝就可以了
4.到這里我們需要搭建一個主從服務器,然后進行下一步的操作,我這里是在另外兩臺虛擬機上面安裝的mysql8壤玫,使用docker進行安裝的泼掠,比較方便,mycat也可以使用docker安裝垦细,這里需要自己去安裝docker择镇,也可以就在虛擬機上面進行安裝
5.docker運行容器-d:后臺運行,-p:綁定端口括改,-v:數(shù)據(jù)綁定腻豌,就是linux虛擬機和容器內的東西公用同一個文件,MYSQL_ROOT_PASSWORD這個就是設置容器內部mysql的密碼嘱能,--name:給容器命名吝梅,mysql:8:是使用那個鏡像來進行容器實例化,沒有這個鏡像它會自動下載
docker run -d -p 3306:3306 -v /etc/mysql/conf:/etc/mysql/conf.d -v /etc/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql8 mysql:8
6.開始設置主機配置惹骂,使用docker exec -it mysql8 /bin/bash 進入容器苏携,然后配置文件設置成如下圖就行,這里可能我們不知道如何編輯文件对粪,可以先使用exit退出容器右冻,然后使用 docker cp mysql8:/etc/mysql/my.cnf /etc/mysql/復制出來,修改完成之后再復制回去 docker cp /etc/mysql/my.cnf mysql8:/etc/mysql/ 著拭,這個時候就開始為從服務器創(chuàng)建用戶了
image.png
server-id=1 #mysql節(jié)點id
log-bin=atguigu-bin #二進制文件名稱前綴
binlog-do-db=mydb1 #需要進行記錄的數(shù)據(jù)庫
binlog-format=STATEMENT #以什么樣的方式進行記錄纱扭,STATEMENT:使用sql語句進行記錄,RAW:使用更新之后的數(shù)據(jù)進行記錄MIXED:使用混合模式儡遮,其中的優(yōu)缺點自己進行百度
7.在容器內使用mysql登錄命令mysql -uroot -p123456 登錄mysql乳蛾,然后創(chuàng)建用戶
create user 'slave1'@'%' identified by '123456';
alter user 'slave1'@'%' identified with mysql_native_password by '123456';
flush privileges;

然后使用show master status;需要將這里進行截圖,等一下進行使用


image.png
8.然后到從節(jié)點服務器以上面的方式創(chuàng)建mysql從節(jié)點鄙币,以及將配置文件配置為如下
server-id=2
relay-log=mysql-relay #中繼文件肃叶,從服務器需要先將binlog讀入服務器,然后放在中繼文件里面十嘿,最后mysql執(zhí)行器去讀取中繼文件去進行同步

然后在從節(jié)點登錄容器之后使用如下命令因惭,下面的修改成自己對應的就可以了

change master to master_host='192.168.220.129', -- 主節(jié)點ip
    master_user='slave1', -- 在主節(jié)點為從節(jié)點創(chuàng)建的用戶
    master_password='123456', --密碼
    master_log_file='atguigu-bin.000004', --上面截圖的bin-log文件名稱
    master_log_pos=2670; --開始binlog文件進行同步的位置

到這里就可以執(zhí)行start slave;啟動從節(jié)點了,然后使用show slave status\G; 查看從節(jié)點狀態(tài)就可以了详幽,如下兩行為yes就可以了如果遇到其他問題可能需要自己去處理了筛欢,一般可能是主節(jié)點的端口沒有開放浸锨,或則是配置文件配置錯誤的問題


image.png
9.到這一步前面的基本信息也差不多處理完成了,這個時候到master上面創(chuàng)建數(shù)據(jù)庫版姑,根據(jù)binlog-do-db=mydb1我們來創(chuàng)建mydb1數(shù)據(jù)庫柱搜,create database mydb1;然后show databases;查看效果,然后再到從服務器上面查看效果剥险,然后我們再創(chuàng)建下面的數(shù)據(jù)
create table mytb1(id int,name varchar(50));
insert into mytb1 values(1,'zhangsan2');

來從機上面查看效果


image.png
10.跳轉到mycat機器上面聪蘸,跳轉到/usr/local/mycat/conf/datasources 下面來將prototypeDs.datasource.json文件修改成如下

password:自己設置的master mysql的密碼
user:使用的用戶
url:將192.168.220.129修改成自己的master MySQL 的IP,mydb1修改稱自己的數(shù)據(jù)庫


image.png

然后跳轉到mycat的bin目錄下面執(zhí)行如下命令表制,給這幾個文件賦予可執(zhí)行權限

chmod 777 mycat
chmod 777 wrapper-linux*
11.到這里可以使用如下命令./mycat console(也可以使用./mycat start這個命令對于新手不好查看mycat是否正常執(zhí)行)啟動mycat健爬,出現(xiàn)如下圖一般為執(zhí)行成功了,表示mycat連接到master主機了
image.png
12.我們可以再windows機器上面使用數(shù)據(jù)庫連接工具連接mycat么介,用戶名密碼在mycat的conf/users里賣弄有一個root用戶娜遵,我們就是用這個賬戶密碼進行登錄
image.png
13.這個連接成功了之后打開數(shù)據(jù)庫來查看一下情況,我們使用命令查看沒有我們自己的數(shù)據(jù)庫壤短,這里只是一個邏輯庫设拟,可以使用create database mydb1;創(chuàng)建數(shù)據(jù)庫,
image.png

到這里在mycat得配置文件conf/schem/目錄下面多了一個以mydb1開頭得配置文件久脯,使用vim編輯添加這下面這一行纳胧,,網上說是指向數(shù)據(jù)源或則集群帘撰,不過在這之前我執(zhí)行過mycat的數(shù)據(jù)庫刪除跑慕,然后master的數(shù)據(jù)庫也被刪除了

"tagerName":"prototype", //指向搭建集群的名稱
14.這一步配置數(shù)據(jù)源,一個寫數(shù)據(jù)源摧找,一個讀數(shù)據(jù)源
/*+ mycat:createDatasource{ "name":"rwSepw", "url":"jdbc:mysql://192.168.220.129:3306/mydb1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123456"} */;

/*+ mycat:createDatasource{ "name":"rwSepr", "url":"jdbc:mysql://192.168.220.130:3306/mydb1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123456"} */;

然后查詢配置數(shù)據(jù)源結果

/*+ mycat:showDataSources{} */;

更新集群信息核行,添加dr0從節(jié)點,實現(xiàn)讀寫分離

//添加dr0從節(jié)點name:指定邏輯庫慰于,之前配置的數(shù)據(jù)源名稱钮科,masters:指定主節(jié)點(可以指定多個)唤衫,replicas:指定從節(jié)點
/*! mycat:createCluster{"name":"prototype","masters":["rwSepw"],"replicas":["rwSepr"]} */;

查看集群信息

/*+ mycat:showClusters{} */;

進入集群配置文件里賣弄查看集群的配置信息


image.png
"readBalanceType":"BALANCE_ALL" //讀負載均衡策略婆赠,默認是在所有節(jié)點進行輪詢讀請求,BALANCE_ALL_READ:獲取集群中允許讀的數(shù)據(jù)源,BALANCE_READ_WRITE:可以理解為讀數(shù)據(jù)源優(yōu)先佳励,BALANCE_NONE:獲取集群中允許寫的數(shù)據(jù)源休里,即主節(jié)點
switchType:NOT_SWITCH  // 不進行主從切換,SWITCH:可以進行主從切換

配置完成之后重啟mycat

15.到這里讀寫分離就執(zhí)行完畢了

然后打開數(shù)據(jù)庫連接工具赃承,之前創(chuàng)建了mydb1數(shù)據(jù)庫妙黍,mytb1表,現(xiàn)在來查看結果瞧剖,現(xiàn)網數(shù)據(jù)庫里面寫入一條數(shù)據(jù)然后查詢(下面的sql)拭嫁,應該可以查詢到數(shù)據(jù)可免,這里的hostname主要是為了區(qū)別是查詢到的按個數(shù)據(jù)庫的數(shù)據(jù),因為我們的負載均衡策略是輪詢做粤,所以name多查詢幾次的結果應該是不一樣的

insert into mytb1 values(2,@@hostname);
image.png

image.png

在這里可能會遇到幾個情況說一下:
1.可能首先應該確定你的從節(jié)點是否同步主節(jié)點了浇借,每次重啟服務器都需要同步一下
2.mycat連接提示連接數(shù)量過大的時候去修改一下從服務器的配置,修改之后重啟以下怕品,然后在同步一下主從配置妇垢,這個時候再把mycat重啟一下同步一下,不然可能也是查詢的主節(jié)點的數(shù)據(jù)

max_connections=320 #數(shù)字稍微大一點就行

雙主雙從搭建

1.對于雙主雙從的架構肉康,當master2作為從機的時候也是需要執(zhí)行master1的binlog日志去進行數(shù)據(jù)更新的闯估,自增字段所增加的間隔也應該為2,這需要在這主機配置文件里面添加如下幾條命令
image.png
log-slave-updates 
auto-increment-increment=2
auto-increment-offset=1  #對于master2的應該為2

對于master2的配置文件應該有如下變化

server-id=3

對于slave2的配置文件應該有如下變化

server-id=4
2.需要在第二個主從服務器上面實現(xiàn)主從的復制(開啟對應的容器,創(chuàng)建相應的從機復制用戶吼和,在從機2里面開啟主從復制的語句)
3.master1,master2互為主備的配置(在這個過程中slave1,slave2可能會斷掉涨薪,這個只需要我們重新搭建一下就行),到這里應該就ok了炫乓,可以插入數(shù)據(jù)測試一下雙主雙從
4.添加第二個主從機的數(shù)據(jù)源
/*+ mycat:createDatasource{ "name":"rwSepw2", "url":"jdbc:mysql://192.168.220.132:3306/mydb1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123456"} */;

/*+ mycat:createDatasource{ "name":"rwSepr2", "url":"jdbc:mysql://192.168.220.133:3306/mydb1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123456"} */;

然后對集群信息進行修改尤辱,到clusters配置文件下面的配置文件里面的masters,replicas的配置

數(shù)據(jù)庫分庫分表

1.在開始打擊那分庫分表之前,先把clusters集群信息的主從都設置為一個厢岂,然后進入數(shù)據(jù)源光督,把不需要用的數(shù)據(jù)源給注釋掉(加個后綴名就行),然后啟動mycat塔粒,最后添加數(shù)據(jù)庫结借,存儲數(shù)據(jù)源(如下代碼所示),拆功能鍵之后到數(shù)據(jù)源目錄下面去查看對應的數(shù)據(jù)源文件有沒有生成
/*+ mycat:createDataSource{
  "name":"dw0",
  "url":"jdbc:mysql://192.168.220.129:3306",
  "user":"root",
  "password":"123456"
} */;
/*+ mycat:createDataSource{
  "name":"dr0",
  "url":"jdbc:mysql://192.168.220.129:3306",
  "user":"root",
  "password":"123456"
} */;
/*+ mycat:createDataSource{
  "name":"dw1",
  "url":"jdbc:mysql://192.168.220.130:3306",
  "user":"root",
  "password":"123456"
} */;
/*+ mycat:createDataSource{
  "name":"dr1",
  "url":"jdbc:mysql://192.168.220.130:3306",
  "user":"root",
  "password":"123456"
} */;
2.添加集群配置,把新添加的數(shù)據(jù)源配置成集群
//在mycat終端輸入,添加之后到集群文件里面查看集群添加結果信息卒茬,在真實的生產中船老,dw0和dr0應該也是在不同的主機上面
/*! mycat:createCluster{
  "name":"c0",
  "masters":["dw0"],
  "replicas":["dr0"]
} */;
/*圃酵! mycat:createCluster{
  "name":"c1",
  "masters":["dw1"],
  "replicas":["dr1"]
} */;
3.開始數(shù)據(jù)庫的創(chuàng)建
創(chuàng)建全局表(廣播表)
create database db1; #添加邏輯庫之后到schem下面查看柳畔,targetName并沒有指定物理節(jié)點
create table db1.travelrecord(
  id bigint not null auto_increment,
  user_id varchar(100) default null,
  traveldate date default null,
  fee decimal(10,0) default null,
  blob int default null,
  blob longblob,
  primary key(id),
  key id (id)
) engine=InnoDB DEFAULT CHARSET=utf8 BROADCAST;
image.png
創(chuàng)建分片表(分庫分表)
#在mycat終端直接運行見表語句,往兩個數(shù)據(jù)庫各分一個表,分庫分表都是以customer_id進行劃分的
create table db1.orders(
  id bigint not null auto_increment,
  order_type int,
  customer_id int,
  amount decimal(10,2),
  primary key(id),
  key id (id)
)engine=INNODB DEFAUL CHARSET=utf8
dbpartition by mod hash(customer_id) tbpartition by mod_hash(customer_id) tbpartitions 1 dbpartitions 2; 
#然后自己插入幾條數(shù)據(jù)郭赐,并對數(shù)據(jù)進行查詢薪韩,自己可以查看一下結果集的規(guī)律,然后再去幾個數(shù)據(jù)庫里面查看一下數(shù)據(jù)的分布情況
image.png
創(chuàng)建ER(entity relation)表,創(chuàng)建之后插入幾條測試數(shù)據(jù)捌锭,然后進行關聯(lián)查詢俘陷,可以看到關聯(lián)查詢結果,然后去數(shù)據(jù)庫去進行查看观谦,并沒有進行關聯(lián)分庫(hash字段不一樣)拉盾,這個時候需要思考為什么可以進行關聯(lián)查詢(到這里就沒了)
create table orders_detail(
  id bigint not null auto_increment,
  detail varchar(200),
  order_id int,
  primary key(id)
)engine=innodb default charset=utf8
dbpartition by mod_hash(order_id) tbpartition by mod_hash(ordre_id) tbpartitions 1 dbpartitions 2;

#使用如下語句查看ER關系表
/*+ mycat:showErFroup{} */
image.png

image.png

image.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市豁状,隨后出現(xiàn)的幾起案子捉偏,更是在濱河造成了極大的恐慌倒得,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夭禽,死亡現(xiàn)場離奇詭異屎暇,居然都是意外死亡,警方通過查閱死者的電腦和手機驻粟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門根悼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜀撑,你說我怎么就攤上這事挤巡。” “怎么了酷麦?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵矿卑,是天一觀的道長。 經常有香客問我沃饶,道長母廷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任糊肤,我火速辦了婚禮琴昆,結果婚禮上,老公的妹妹穿的比我還像新娘馆揉。我一直安慰自己业舍,他們只是感情好,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布升酣。 她就那樣靜靜地躺著舷暮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪噩茄。 梳的紋絲不亂的頭發(fā)上下面,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音绩聘,去河邊找鬼沥割。 笑死,一個胖子當著我的面吹牛君纫,可吹牛的內容都是我干的驯遇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蓄髓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了舒帮?” 一聲冷哼從身側響起会喝,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤陡叠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后肢执,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枉阵,經...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年预茄,在試婚紗的時候發(fā)現(xiàn)自己被綠了兴溜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡耻陕,死狀恐怖拙徽,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情诗宣,我是刑警寧澤膘怕,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站召庞,受9級特大地震影響岛心,放射性物質發(fā)生泄漏。R本人自食惡果不足惜篮灼,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一忘古、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诅诱,春花似錦存皂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至它改,卻和暖如春疤孕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背央拖。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工祭阀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲜戒。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓专控,卻偏偏與公主長得像,于是被迫代替她去往敵國和親遏餐。 傳聞我的和親對象是個殘疾皇子伦腐,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內容

  • 目錄 mycat基本介紹[http://www.reibang.com/p/e0ceacf9a6aa]mycat...
    桐間紗路閱讀 1,112評論 0 0
  • 為什么要分庫分表 數(shù)據(jù)庫性能瓶頸的出現(xiàn) 對于應用來說,如果數(shù)據(jù)庫性能出現(xiàn)問題,要么是無法獲取連接,是因為在高并發(fā)的...
    悠娜的奶爸閱讀 149評論 0 1
  • 一、配置mysql主從服務器 主數(shù)據(jù)庫:10.170.1.16 從數(shù)據(jù)庫:10.170.1.18 (1)主數(shù)據(jù)庫服...
    迷糊小生閱讀 327評論 0 0
  • 基于 Mycat 1.6.7.3 版本 為什么要分庫分表 1失都、數(shù)據(jù)庫性能瓶頸的出現(xiàn)1)對于應用來說柏蘑,如果數(shù)據(jù)庫性能...
    vincent浩哥閱讀 869評論 0 0
  • 一幸冻、Mycat開源宣言 2013 年阿里的 Cobar 在社區(qū)使用過程中發(fā)現(xiàn)存在一些比較嚴重的問題,及其使用限制咳焚。...
    AC編程閱讀 714評論 0 7