日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

.NET Core 微服務(wù)-Mycat

 蘭亭文藝 2019-08-06

作者:AntSpace

鏈接:https://www.cnblogs.com/xuyongsong/p/11220789.html

一、前言

1.1  分布式數(shù)據(jù)庫

隨著IT行業(yè)的迅猛發(fā)展,行業(yè)應(yīng)用系統(tǒng)的數(shù)據(jù)規(guī)模呈現(xiàn)爆炸式增長,對數(shù)據(jù)庫的數(shù)據(jù)處理能力要求越來越高,分布式數(shù)據(jù)庫正是因此應(yīng)運而生。

分布式數(shù)據(jù)庫特點包括:

透明性:用戶不必關(guān)心后臺數(shù)據(jù)庫的具體實現(xiàn)

擴展性:能夠根據(jù)系統(tǒng)壓力情況進行擴展

可靠性:如果其中一臺服務(wù)器宕機,備用服務(wù)器能夠自動切換繼續(xù)提供服務(wù)

高性能:

1.2  Mycat介紹

Mycat(http://www./)是一個支持mysql、sql server等數(shù)據(jù)庫集群化部署的中間件。它由Amoeba和cobar發(fā)展而來。

二、負載均衡

三、測試環(huán)境

四、測試腳本

CREATE TABLE `employee` (
`ID` int(11) NOT NULL,
`NAME` varchar(100) default NULL,
`SHARDING_ID` int(11) NOT NULL,
PRIMARY KEY (`ID`)
)
INSERT INTO employee(ID,NAME,SHARDING_ID) VALUES ('6', 'amos', '10000');

五、軟件安裝

首先安裝mycat-server、mycat-eye、zookeeper和navicat for mysql

六、服務(wù)啟動

6.1 、啟動mycat

6.1.1、安裝java環(huán)境

1、  安裝jdk

2、  配置環(huán)境變量

JAVA_HOME=C:Program FilesJavajdk1.8.0_131

CLASSPATH=.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;

Path =%JAVA_HOME%in;%JAVA_HOME%jrein;

6.1.2、啟動mycat服務(wù)

在windows8操作系統(tǒng)上啟動mycat服務(wù),命令如下

cmd 

cd /d D:EC-OFCJavaMycatMycat-server-1.6mycatin

startup_nowrap.bat

6.1.3、連接mycat

6.1.3.1、navicat連接

使用navicat連接mycat,默認端口為8066,密碼123456

6.1.3.2、DOS鏈接

cmd
cd /d C:Program FilesMySQLMySQL Server 5.7in
mysql -uroot -p123456 -P8066

注意:如果需要使用如show @@datasource命令時,需要連接9066端口而不是8066

6.2 、啟動zookeeper

D:EC-OFC開發(fā)工具zookeeper-3.4.10inzkServer.bat

6.3 、啟動mycat-eye

D:EC-OFCJavaMycatmycat-webstart.bat

七、寫集群

7.1  拓撲圖

7.2  配置文件

<?xml version='1.0'?>
<!DOCTYPEmycat:schemaSYSTEM'schema.dtd'>
<mycat:schema xmlns:mycat='http://cat/'>
<schema name='TESTDB' checkSQLschema='false' sqlMaxLimit='100'>
<table name='employee' primaryKey='ID' dataNode='dn1,dn2'/>
</schema>
<dataNode name='dn1' dataHost='host1' database='db1'/>
<dataNode name='dn2' dataHost='host2' database='db1'/>
<dataHost name='host1' maxCon='1000' minCon='10' balance='1'
writeType='0' dbType='mysql' dbDriver='native' switchType='1' slaveThreshold='100'>

<heartbeat>select user()</heartbeat>
<writeHost host='hostM1' url='120.77.80.215:3306' user='test' password='123456'>
</writeHost>
</dataHost>
<dataHost name='host2' maxCon='1000' minCon='10' balance='1'
writeType='0' dbType='mysql' dbDriver='native' switchType='1' slaveThreshold='100'>

<heartbeat>select user()</heartbeat>
<writeHost host='hostM2' url='10.3.30.238:3306' user='test' password='123456'>
</writeHost>
</dataHost>
</mycat:schema>

八、主從配置

8.1  業(yè)務(wù)要求

Master掛掉時,Slave還能提供讀服務(wù)。

8.2  配置步驟

注意每臺mysql服務(wù)器的server-id必須唯一

第一步:

在10.3.30.161中創(chuàng)建一個10.3.30.238主機中可以登錄的MySQL用戶

用戶:mysql238

密碼:123456

mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql238’@’10.3.30.238’ IDENTIFIED BY ‘123456’;

mysql>FLUSH PRIVILEGES;

第二步:

需要先在C:ProgramDataMySQLMySQL Server 5.7my.ini文件中添加log-bin=mysql-bin

查看10.3.30.161MySQL服務(wù)器二進制文件名與位置

mysql>SHOW MASTER STATUS;

第三步:

告知二進制文件名與位置

在10.3.30.238中執(zhí)行:

mysql>CHANGE MASTER TO

MASTER_HOST='10.3.30.161',

MASTER_USER='mysql238',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mybin.000001',

MASTER_LOG_POS=154;


完成主從復制配置

8.3  驗證配置

在10.3.30.238中

mysql> START SLAVE;   #開啟復制

mysql>SHOW SLAVE STATUSG   #查看主從復制是否配置成功

當看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明狀態(tài)正常

8.4  配置文件

switchType='-1'意味著當主掛掉的時候,不進行自動切換,即hostS1并不會被提升為主,仍只提供讀的功能。這就避免了將數(shù)據(jù)寫進slave的可能性,單純的MySQL主從集群并不允許將數(shù)據(jù)寫進slave中,除非配置的是雙master。

<mycat:schema xmlns:mycat='http://cat/'>
<schema name='TESTDB' checkSQLschema='false' sqlMaxLimit='100'>
<table name='employee' primaryKey='ID' dataNode='dn1'/>
</schema>
<dataNode name='dn1' dataHost='host1' database='db1'/>
<dataHost name='host1' maxCon='1000' minCon='10' balance='1'
writeType='0' dbType='mysql' dbDriver='native' switchType='-1' slaveThreshold='100'>

<heartbeat>select user()</heartbeat>
<writeHost host='hostM1' url='10.3.30.161:3306' user='test' password='123456'>
<readHost host='hostR1' url='120.77.80.215:3306' user='test' password='123456'/>
</writeHost>
<writeHost host='hostS1' url='10.3.30.238:3306' user='test' password='123456'>
</writeHost>
</dataHost>
</mycat:schema>

九、Haproxy配置

9.1  拓撲圖

9.2  配置文件

此處為haproxy配置文件

#global
maxconn 1500
nbproc 1
daemon

defaults
mode tcp
retries 3
option abortonclose
maxconn 32000
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
log 127.0.0.1 local0 err
listen admin_stats
bind :48800
stats uri /admin-status
stats auth admin:admin
mode http
option httplog
listen mycat_servers
bind :3307 ## 綁定端口
mode tcp
option tcplog
#balance source
server server238 10.3.30.238:8066 check port 8066 weight 1 check
server server84 10.3.6.84:8066 check port 8066 weight 1 check

mysql客戶端或者應(yīng)用程序可以通過如上配置的127.0.0.1:3307端口鏈接haproxy實現(xiàn)鏈接mycat集群的目的。

十、注意事項

1、主主復制配置文件中auto_increment_increment和auto_increment_offset只能保證主鍵不重復,卻不能保證主鍵有序。

2、當配置完成Slave_IO_Running、Slave_SQL_Running不全為YES時,show slave statusG信息中有錯誤提示,可根據(jù)錯誤提示進行更正。

3、Slave_IO_Running、Slave_SQL_Running不全為YES時,大多數(shù)問題都是數(shù)據(jù)不統(tǒng)一導致。

常見出錯點:

1、兩臺數(shù)據(jù)庫都存在db數(shù)據(jù)庫,而第一臺MySQL db中有tab1,第二臺MySQL db中沒有tab1,那肯定不能成功。

2、已經(jīng)獲取了數(shù)據(jù)的二進制日志名和位置,又進行了數(shù)據(jù)操作,導致POS發(fā)生變更。在配置CHANGE MASTER時還是用到之前的POS。

3、stop slave后,數(shù)據(jù)變更,再start slave。出錯。

終極更正法:重新執(zhí)行一遍CHANGE MASTER就好了。


編號346,輸入編號直達本文

●輸入m獲取文章目錄

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多