真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么理解Mycat讀寫分離

這篇文章主要介紹“怎么理解Mycat讀寫分離”,在日常操作中,相信很多人在怎么理解Mycat讀寫分離問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么理解Mycat讀寫分離”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

為獨(dú)山等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及獨(dú)山網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、獨(dú)山網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

1 MySQL讀寫分離的概述

Mysql作為目前世界上使用最廣泛的免費(fèi)數(shù)據(jù)庫,相信所有從事系統(tǒng)運(yùn)維的工程師都一定接觸過。但在實(shí)際的生產(chǎn)環(huán)境中,由單臺(tái)Mysql作為獨(dú)立的數(shù)據(jù)庫是完全不能滿足實(shí)際需求的,無論是在安全性,高可用性以及高并發(fā)等各個(gè)方面。

因此,一般來說都是通過主從復(fù)制(Master-Slave)的方式來同步數(shù)據(jù),再通過讀寫分離(MySQL-Proxy/Amoeba)來提升數(shù)據(jù)庫的并發(fā)負(fù)載能力,這樣的方案來進(jìn)行部署與實(shí)施的。

1.1  讀寫分離工作原理:

基本的原理是讓主數(shù)據(jù)庫處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫處理SELECT查詢操作。數(shù)據(jù)庫復(fù)制被用來把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫。

怎么理解Mycat讀寫分離

數(shù)據(jù)內(nèi)部交換過程:

怎么理解Mycat讀寫分離

1.2  為什么要讀寫分離:

1)面對(duì)越來越大的訪問壓力,單臺(tái)的服務(wù)器的性能成為瓶頸,需要分擔(dān)負(fù)載;

2)主從只負(fù)責(zé)各自的寫和讀,極大程度的緩解X鎖和S鎖爭(zhēng)用;

3)從庫可配置myisam引擎,提升查詢性能以及節(jié)約系統(tǒng)開銷;

4)增加冗余,提高可用性。

1.3  實(shí)現(xiàn)讀寫分離的方式:

一般有兩種方式實(shí)現(xiàn)

1)應(yīng)用程序?qū)訉?shí)現(xiàn),網(wǎng)站的程序?qū)崿F(xiàn);

2)應(yīng)用程序?qū)訉?shí)現(xiàn)指的是在應(yīng)用程序內(nèi)部及連接器中實(shí)現(xiàn)讀寫分離。

優(yōu)點(diǎn):

A:應(yīng)用程序內(nèi)部實(shí)現(xiàn)讀寫分離,安裝既可以使用;

B:減少一定部署難度;

C:訪問壓力在一定級(jí)別以下,性能很好。

缺點(diǎn):

A:架構(gòu)一旦調(diào)整,代碼要跟著變;

B:難以實(shí)現(xiàn)高級(jí)應(yīng)用,如自動(dòng)分庫,分表;

C:無法適用大型應(yīng)用場(chǎng)景。

中間件層實(shí)現(xiàn)

中間件層實(shí)現(xiàn)是指在外部中間件程序?qū)崿F(xiàn)讀寫分離

常見的中間件程序:

怎么理解Mycat讀寫分離

Cobar:

阿里巴巴B2B開發(fā)的關(guān)系型分布式系統(tǒng),管理將近3000個(gè)MySQL實(shí)例。在阿里經(jīng)受住了考驗(yàn),后面由于作者的走開的原因cobar沒有人維護(hù)了,阿里也開發(fā)了tddl替代cobar。

MyCAT:

社區(qū)愛好者在阿里cobar基礎(chǔ)上進(jìn)行二次開發(fā),解決了cobar當(dāng)時(shí)存在的一些問題,并且加入了許多新的功能在其中。目前MyCAT社區(qū)活躍度很高,目前已經(jīng)有一些公司在使用MyCAT??傮w來說支持度比較高,也會(huì)一直維護(hù)下去,

OneProxy:

數(shù)據(jù)庫界大牛,前支付寶數(shù)據(jù)庫團(tuán)隊(duì)領(lǐng)導(dǎo)樓總開發(fā),基于mysql官方的proxy思想利用c進(jìn)行開發(fā)的,OneProxy是一款商業(yè)收費(fèi)的中間件,樓總舍去了一些功能點(diǎn),專注在性能和穩(wěn)定性上。有朋友測(cè)試過說在高并發(fā)下很穩(wěn)定。

Vitess:

這個(gè)中間件是Youtube生產(chǎn)在使用的,但是架構(gòu)很復(fù)雜。與以往中間件不同,使用Vitess應(yīng)用改動(dòng)比較大要使用他提供語言的API接口,我們可以借鑒他其中的一些設(shè)計(jì)思想。

Kingshard:

Kingshard是前360Atlas中間件開發(fā)團(tuán)隊(duì)的陳菲利用業(yè)務(wù)時(shí)間用go語言開發(fā)的,目前參與開發(fā)的人員有3個(gè)左右,目前來看還不是成熟可以使用的產(chǎn)品,需要在不斷完善。

Atlas:

360團(tuán)隊(duì)基于mysql proxy 把lua用C改寫。原有版本是支持分表,目前已經(jīng)放出了分庫分表版本。在網(wǎng)上看到一些朋友經(jīng)常說在高并發(fā)下會(huì)經(jīng)常掛掉,如果大家要使用需要提前做好測(cè)試。

MaxScale與MySQL Route:

這兩個(gè)中間件都算是官方的,MaxScale是mariadb (MySQL原作者維護(hù)的一個(gè)版本)研發(fā)的,目前版本不支持分庫分表。MySQL Route是現(xiàn)在MySQL官方Oracle公司發(fā)布出來的一個(gè)中間件。

優(yōu)點(diǎn):

A:架構(gòu)設(shè)計(jì)更靈活;

B:可以在程序上實(shí)現(xiàn)一些高級(jí)控制,如:透明化水平拆分,failover,監(jiān)控;

C:可以依靠些技術(shù)手段提高mysql性能;

D:對(duì)業(yè)務(wù)代碼的影響小,同時(shí)也安全。

缺點(diǎn):

需要一定的開發(fā)運(yùn)維團(tuán)隊(duì)的支持。

2  什么是MYCAT

一個(gè)徹底開源的,面向企業(yè)應(yīng)用開發(fā)的大數(shù)據(jù)庫集群;

支持事務(wù)、ACID、可以替代MySQL的加強(qiáng)版數(shù)據(jù)庫;

一個(gè)可以視為MySQL集群的企業(yè)級(jí)數(shù)據(jù)庫,用來替代昂貴的Oracle集群;

一個(gè)融合內(nèi)存緩存技術(shù)、NOSQL技術(shù)、HDFS大數(shù)據(jù)的新型SQL Server;

結(jié)合傳統(tǒng)數(shù)據(jù)庫和新型分布式數(shù)據(jù)倉庫的新一代企業(yè)級(jí)數(shù)據(jù)庫產(chǎn)品;

一個(gè)新穎的數(shù)據(jù)庫中間件產(chǎn)品。

3  服務(wù)安裝與配置

實(shí)驗(yàn)架構(gòu)

服務(wù)器

IP

說明

xuegod65

192.168.1.65

mycat服務(wù)器,連接數(shù)據(jù)庫時(shí),連接此服務(wù)器

xuegod63

192.168.1.63

物理數(shù)據(jù)庫1,master

xuegod64

192.168.1.64

物理數(shù)據(jù)庫2,slave

MyCAT有提供編譯好的安裝包,支持windows、Linux、Mac、Solaris等系統(tǒng)上安裝與運(yùn)行。官方下載主頁http://www.mycat.io。

3.1  文件結(jié)構(gòu)

linux下可以下載Mycat-server-xxxxx.linux.tar.gz 解壓在某個(gè)目錄下,注意目錄不能有空格,

在Linux(Unix)下,建議放在/usr/local/Mycat目錄下,

目錄結(jié)構(gòu)

目錄

說明

bin

mycat命令,啟動(dòng)、重啟、停止等

catlet

catlet為Mycat的一個(gè)擴(kuò)展功能

conf

Mycat 配置信息,重點(diǎn)關(guān)注

lib

Mycat引用的jar包,Mycat是java開發(fā)的

logs

日志文件,包括Mycat啟動(dòng)的日志和運(yùn)行的日志。


配置文件

文件

說明

server.xml

Mycat的配置文件,設(shè)置賬號(hào)、參數(shù)等

schema.xml

Mycat對(duì)應(yīng)的物理數(shù)據(jù)庫和數(shù)據(jù)庫表的配置

rule.xml

Mycat分片(分庫分表)規(guī)則


3.2 mycat安裝 (xuegod65)

1.安裝JDK 1.7 或者以上版本  

第一步:下載jdk-8u131-linux-x64.tar.gz文件 http://haixi.sfkcn.com:8080/201704/tools/jdk-linux-x64.tar.gz

第二步:新建/usr/java文件夾,將jdk-8u131-linux-x64.tar.gz放到該文件夾中,并解壓到當(dāng)前目錄下

第三步:配置環(huán)境變量 在/etc/profile底部加入如下內(nèi)容:

JAVA_HOME=/usr/java/jdk1.8.0_131

PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

export PATH JAVA_HOME CLASSPATH

[root@xuegod65 java]# source /etc/profile  #使環(huán)境變量生效

查看java –version


2.解壓mycat 安裝  


linux下可以下載Mycat-server-xxxxx.linux.tar.gz 解壓到/usr/local/,注意目錄不能有空格


  1. 創(chuàng)建mycat用戶,并修改密碼 useradd mycat


  1. 修改權(quán)限 chown – R mycat.mycat  /usr/local/mycat


  1. 配置環(huán)境變量


1)    vi /etc/profile,在系統(tǒng)環(huán)境變量文件中增加

MYCAT_HOME=/usr/local/mycat

PATH=$MYCAT_HOME/bin:$PATH


2) 執(zhí)行 source /etc/profile 命令,使環(huán)境變量生效。


  1. 編輯hosts文件

192.168.1.63    xuegod63.cn     xuegod63

192.168.1.64    xuegod64.cn     xuegod64

192.168.1.65    xuegod65.cn     xuegod65


4  服務(wù)啟動(dòng)與啟動(dòng)設(shè)置

(mycat的用戶賬號(hào)和授權(quán)信息是在conf/server.xml文件中配置

[root@xuegod65 ~]#Vim /usr/local/mycat/conf/server.xml

    

druidparser

123456

ha

user

ha

true

參數(shù)說明

user         用戶配置節(jié)點(diǎn)

--name     登錄的用戶名,也就是連接Mycat的用戶名,這里就是對(duì)于外部應(yīng)用

--password     登錄的密碼,也就是連接Mycat的密碼

--schemas    數(shù)據(jù)庫名,這里會(huì)和schema.xml中的配置關(guān)聯(lián),多個(gè)用逗號(hào)分開,例如需要這個(gè)用戶需要管理兩個(gè)數(shù)據(jù)庫db1,db2,則配置db1,dbs

--privileges    配置用戶針對(duì)表的增刪改查的權(quán)限,具體見文檔吧


編輯MyCAT的配置文件schema.xml,關(guān)于dataHost的配置信息如下:

[root@xuegod65 ~]#vim /usr/local/mycat/conf/schema.xml

select user()

以下是一個(gè)模版解釋

select user()

 

balance 屬性負(fù)載均衡類型,目前的取值有 4 種:

balance="0", 不開啟讀寫分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的writeHost 上。

balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負(fù)載均衡,簡(jiǎn)單的說,當(dāng)雙主雙從模式(M1 ->S1 , M2->S2,并且 M1 與 M2 互為主備),正常情況下, M2,S1,S2 都參與 select 語句的負(fù)載均衡。

balance="2", 所有讀操作都隨機(jī)的在 writeHost、 readhost 上分發(fā)。

balance="3", 所有讀請(qǐng)求隨機(jī)的分發(fā)到 wiriterHost 對(duì)應(yīng)的 readhost 執(zhí)行,writerHost 不負(fù)擔(dān)讀壓力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 沒有。

 

writeType 屬性,負(fù)載均衡類型,目前的取值有 3 種:

writeType="0", 所有寫操作發(fā)送到配置的第一個(gè) writeHost,第一個(gè)掛了切到還生存的第二個(gè)writeHost,重新啟動(dòng)后已切換后的為準(zhǔn),切換記錄在配置文件中:dnindex.properties .

writeType="1",所有寫操作都隨機(jī)的發(fā)送到配置的 writeHost。

writeType="2",沒實(shí)現(xiàn)。

 

switchType 屬性

-1 表示不自動(dòng)切換

1 默認(rèn)值,自動(dòng)切換

2 基于MySQL 主從同步的狀態(tài)決定是否切換




5  配置Mysql主從

xuegod63上創(chuàng)建數(shù)據(jù)庫和表,用于實(shí)現(xiàn)寫操作:

[root@xuegod63 ~]# mysql -uroot -p123456

mysql> create database ha;

mysql> use ha;

mysql> create table test(id int,name varchar(20));

mysql> insert into test values(1,'man');

授權(quán)給mycat登陸數(shù)據(jù)庫使用的帳號(hào)

mysql> grant all privileges on *.* to  mycat@'%' identified by '123456';

mysql> grant replication slave on *.* to slave@"192.168.1.%" identified by "123456";

mysql>flush privileges;

mysqldump –uroot –p123456  -B ha>ha.sql  #導(dǎo)出給從庫

scp ha.sql xuegod64.cn:/root

[root@xuegod64 ~]# vim /etc/my.cnf

log-bin=mysql-bin-master  #啟用二進(jìn)制日志

server-id=1   #本機(jī)數(shù)據(jù)庫ID 標(biāo)示

binlog-do-db=HA #可以被從服務(wù)器復(fù)制的庫, 二進(jìn)制需要同步的數(shù)據(jù)庫名

binlog-ignore-db=mysql  #不可以被從服務(wù)器復(fù)制的庫

如需關(guān)閉密碼強(qiáng)度審計(jì),在my.cnf添加validate-password=off

[root@xuegod64 ~]# systemctl restart mysqld

xuegod64上導(dǎo)入數(shù)據(jù)庫和表,用于實(shí)現(xiàn)讀操作:

[root@xuegod64 ~]# mysql -uroot -p123456

授權(quán)給mycat登陸數(shù)據(jù)庫使用的帳號(hào)

mysql> grant all privileges on *.* to  mycat@'%' identified by '123456';

mysql>flush privileges;

[root@xuegod64 ~]# vim /etc/my.cnf

server-id=2   #本機(jī)數(shù)據(jù)庫ID 標(biāo)示

[root@xuegod64 ~]# systemctl restart mysqld

mysql>stop slave;    #停止slave

mysql> change master to master_host='192.168.1.63',master_user='slave',master_password='123456';

mysql> start slave;    #啟動(dòng)slave

mysql> show slave status\G 查看狀態(tài),有兩個(gè)yes主從同步成功!

啟動(dòng)服務(wù)mycat服務(wù)

[root@xuegod65~]# /usr/local/mycat/bin/mycat  start

測(cè)試讀寫分離

6  當(dāng)我們slave掛掉后咋樣呢

模擬故障:從服務(wù)器掛掉了

[root@xuegod64 ~]# systemctl stop mysqld

在客戶端上測(cè)試讀寫

[root@xuegod66 ~]# mysql -uroot -p123456  -h 192.168.1.65-P8066

mysql> use ha;

mysql> select * from t1;

怎么理解Mycat讀寫分離

說明讀操作的路由切換到master上了,對(duì)外沒有任何影響!

7  當(dāng)我們master掛掉后咋樣呢

模擬故障:主服務(wù)器掛掉了

[root@xuegod63 ~]# systemctl stop mysqld

在客戶端上測(cè)試讀寫

[root@xuegod66 ~]# mysql -uroot -p123456  -h 192.168.1.65 -P8066

mysql> create table t3(id int);

ERROR 1184 (HY000): 拒絕連接 #主數(shù)據(jù)庫停止了,是無法寫操作的,但不影響讀.

mysql> use ha;

mysql> select * from t1;

怎么理解Mycat讀寫分離

到此,關(guān)于“怎么理解Mycat讀寫分離”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


新聞名稱:怎么理解Mycat讀寫分離
本文網(wǎng)址:http://weahome.cn/article/ipjgdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部