mycat2官網(wǎng):MyCat2
前言:mycat2下載地址無法訪問,不知道是不是被DNS污染了,還是需要搭梯子訪問,所以我只能找到1.21的版本進(jìn)行安裝。搭建mycat2的前提是搭建數(shù)據(jù)庫主從復(fù)制。
架構(gòu):雙主雙從
配置:3臺服務(wù)器,4臺數(shù)據(jù)庫;其中2臺服務(wù)器為數(shù)據(jù)庫各裝主從配置,1臺服務(wù)器為數(shù)據(jù)庫中間件。
版本信息:mycat1.21,mysql8.0.16
下載地址:
安裝程序包:http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
Jar包:http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar
一、配置雙主雙從數(shù)據(jù)庫
1、使用docker創(chuàng)建mysql數(shù)據(jù)庫
安裝mysql,安裝4臺數(shù)據(jù)庫,名稱和端口要區(qū)分開:
docker run -d --restart=always --name mysql-master?-p 3306:3306 -v /home/apps/mysql-master/conf:/etc/mysql/conf.d -v /home/apps/mysql-master/data:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro --security-opt seccomp=unconfined -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.16 --lower_case_table_names=1
2、配置mysql數(shù)據(jù)庫:需要注意的是服務(wù)器id是唯一的,第一臺可以設(shè)置5,第二臺6,以此類推。
創(chuàng)建配置文件:vim /home/apps/mysql-master/conf/my.cnf
[mysqld]
# 服務(wù)器唯一id,默認(rèn)值1
server-id=6
# 設(shè)置日志格式,默認(rèn)值ROW
binlog_format=STATEMENT
# 二進(jìn)制日志名,默認(rèn)binlog
# log-bin=binlog
# 設(shè)置需要復(fù)制的數(shù)據(jù)庫,默認(rèn)復(fù)制全部數(shù)據(jù)庫
#binlog-do-db=mytestdb
# 設(shè)置不需要復(fù)制的數(shù)據(jù)庫
binlog-ignore-db=mysql
binlog-ignore-db=infomation_schema
binlog-ignore-db=sys
binlog-ignore-db=performance_schema
# 跳過緩存,解決連接數(shù)據(jù)庫緩慢
skip-host-cache
skip-name-resolve
在主從配置完成前,請不要操作數(shù)據(jù)庫寫入,否則日志會更新,此時同步數(shù)據(jù)會不全,當(dāng)然也可以用工具進(jìn)行同步。
3、配置主從:
先配置master1和slave1之間的主從同步。在master1中查看日志名和postition
在slave1中修改好master1的ip、用戶名、密碼、端口等,分別執(zhí)行以下語句,配置后開啟同步,查看顯示同步狀態(tài)。
-- 在主機(jī)master1中查詢狀態(tài)
SHOW MASTER STATUS;
slave1執(zhí)行:
-- 配置主從同步
CHANGE MASTER TO MASTER_HOST='192.168.16.71', MASTER_USER='root',MASTER_PASSWORD='數(shù)據(jù)庫密碼', MASTER_PORT=3306,MASTER_LOG_FILE='binlog.000005',MASTER_LOG_POS=155;
-- 開啟主從同步
START SLAVE;
-- 顯示同步狀態(tài)
SHOW SLAVE STATUS
-- 停止主從同步
stop slave;
-- 重置同步配置,在從機(jī)上執(zhí)行。功能說明:用于刪除SLAVE數(shù)據(jù)庫的relaylog日志文件,并重新啟用新的relaylog文件。
reset slave all;
?配置完成后查看同步狀態(tài),IO和SQL狀態(tài)均為YES,表示同步成功。顯示為NO,表示失敗,下方有失敗原因。
4、配置主-主之間的同步
其實(shí)兩臺主機(jī)之間的同步,和主從同步配置一樣,把master1當(dāng)做master2的從機(jī),把master2當(dāng)做master1的從機(jī)。
例如:在master1中配置:將ip換成master2的ip信息,相當(dāng)于master2是master1的從機(jī)。以此配置master2。
master1執(zhí)行:
-- 配置主從同步
CHANGE MASTER TO MASTER_HOST='192.168.16.72', MASTER_USER='root',MASTER_PASSWORD='數(shù)據(jù)庫密碼', MASTER_PORT=3306,MASTER_LOG_FILE='binlog.000005',MASTER_LOG_POS=155;
-- 開啟主從同步
START SLAVE;
-- 顯示同步狀態(tài)
SHOW SLAVE STATUS
-- 停止主從同步
stop slave;
-- 重置同步配置,在從機(jī)上執(zhí)行。功能說明:用于刪除SLAVE數(shù)據(jù)庫的relaylog日志文件,并重新啟用新的relaylog文件。
reset slave all;
當(dāng)所有主從配置完成后,數(shù)據(jù)庫的架構(gòu)就可以了。?
二、配置mycat2
參考文檔:Mycat2安裝配置(窗外流星) · 語雀
官網(wǎng):http://www.mycat.org.cn/
資源地址:http://dl.mycat.org.cn/2.0/
安裝程序包:http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
Jar包:http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar
下載安裝程序包后解壓,把jar包放到lib文件夾中,然后上傳至中間件服務(wù)器/usr/local/目錄中。mycat2依賴組件有:mysql8數(shù)據(jù)庫,java8
1、安裝mysql數(shù)據(jù)庫
在數(shù)據(jù)庫中間服務(wù)器中,需要安裝mysql數(shù)據(jù)庫當(dāng)做邏輯庫
配置yum源:
下載鏈接:https://dev.mysql.com/downloads/repo/yum/
# 下載mysql8 yum源
wget?https://repo.mysql.com//mysql80-community-release-el8-9.noarch.rpm
# 安裝mysql8 yum源
rpm -ivh?mysql80-community-release-el8-9.noarch.rpm
# 安裝mysql8社區(qū)版
yum -y install mysql-community-server
# 啟動mysql并加入開機(jī)自啟
systemctl enable mysqld --now
tips:
# 找到mysql初始密碼grep "password" /var/log/mysqld.log# 修改mysql密碼,密碼要強(qiáng)密碼,不然會提示不符合規(guī)則
ALTER USER 'root'@'%' IDENTIFIED BY '密碼' PASSWORD EXPIRE NEVER;mysql8.0.35授權(quán)遠(yuǎn)程登錄
use mysql;
update user set user.Host='%'where user.User='root';
flush privileges;?
2、安裝java8
參考資料:Jenkins安裝多個jdk版本,并在項(xiàng)目中選擇對應(yīng)jdk版本_jenkins指定編譯項(xiàng)目的jdk版本-CSDN博客
安裝好后,解壓到/usr/local,并配置vim /etc/profile,在最后加上java環(huán)境變量
export JAVA_HOME=/usr/local/jdk1.8.0_291
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
驗(yàn)證:java -version
3、配置mycat2
配置邏輯梳理:
a、先做基本默認(rèn)結(jié)構(gòu),連通mycat2的8066端口,可以訪問成功;
b、配置schemas邏輯庫;
c、配置clusters集群;
d、配置datasources數(shù)據(jù)源。
mycat2命令:
后臺啟動MyCat:./mycat start
查看啟動狀態(tài):./mycat status
停止:./mycat stop
重啟:./mycat restart
前臺啟動并在控制臺打印日志(ctrl+c停止):./mycat console
目錄結(jié)構(gòu)如下:
1).配置數(shù)據(jù)源datasources
cd?/usr/local/mycat/conf/datasources
vim prototypeDs.datasource.json
然后進(jìn)入bin目錄,啟動mycat2,./mycat console
本地網(wǎng)絡(luò)主機(jī)使用數(shù)據(jù)庫連接軟件,如navicat,地址是中間件服務(wù)器地址,端口為8066,連接成功即可創(chuàng)建成功。
2).創(chuàng)建邏輯庫schemas
連接到8066端口mysql數(shù)據(jù)庫,創(chuàng)建項(xiàng)目所需要的數(shù)據(jù)庫,這個是邏輯庫的名稱,創(chuàng)建的名稱和實(shí)際數(shù)據(jù)庫名稱一樣即可。其他條件不用加,例如特定字符集。
CREATE DATABASE database_name;
在此路徑下schemas,就可以看到以數(shù)據(jù)庫名自動建立的邏輯庫json文件。?
編輯新增的邏輯庫json文件:
新增:"targetName":"wms",
這是集群名稱,后面會和cluster對應(yīng),注意這是json文件,增加一行后面要加逗號,
3).創(chuàng)建clusters集群
回到conf文件目錄,進(jìn)入clusters文件夾。復(fù)制默認(rèn)集群配置文件prototype.cluster.json為新名稱的集群
cp?prototype.cluster.json?wms.cluster.json
編輯文件wms.cluster.json,其中masters和replicas是配置主從數(shù)據(jù)庫服務(wù)器的,名稱和后續(xù)數(shù)據(jù)源配置統(tǒng)一。注意故障自動切換需要搭配timer時間配置,否則無效。
{
"clusterType":"MASTER_SLAVE",
"heartbeat":{
"heartbeatTimeout":1000,
"maxRetry":3,
"minSwitchTimeInterval":300,
"slaveThreshold":0
},
"masters":[
"master1",
"master2"
],
"maxCon":200,
"name":"wms",
"readBalanceType":"BALANCE_ALL",
"switchType":"SWITCH",
"replicas":[
"master2",
"slave1",
"slave2"
],
"timer":{
"initialDelay": 30,
"period":5,
"timeUnit":"SECONDS"
}
}
4).配置datasources數(shù)據(jù)源
進(jìn)入datasources目錄,復(fù)制默認(rèn)的prototypeDs.datasource.json文件,分別為主從數(shù)據(jù)庫,以此文件名為master1,master2,slave1,slave2開頭。
依次編輯數(shù)據(jù)源文件:?
以master1為例:vim master1.datasource.json
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"master1",
"password":"數(shù)據(jù)庫密碼",
"type":"JDBC",
"url":"jdbc:mysql://192.168.12.12:3306/abc_wms?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
?以slave1為例:vim slave1.datasource.json
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"slave1",
"password":"數(shù)據(jù)庫密碼",
"type":"JDBC",
"url":"jdbc:mysql://192.168.12.14:3306/abc_wms?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
?5).啟動mycat2
mycat2命令:
后臺啟動MyCat:./mycat start
查看啟動狀態(tài):./mycat status
停止:./mycat stop
重啟:./mycat restart
前臺啟動并在控制臺打印日志(ctrl+c停止):./mycat console?
可以先用./mycat console,查看是否有報(bào)錯信息,后續(xù)正式用后臺啟動mycat。
三、使用mycat2
項(xiàng)目中配置信息,修改為mycat2的服務(wù)器地址,用戶名和密碼,即可使用mycat2,會根據(jù)配置的信息自動切換查詢和新增的服務(wù)器。
以spring-boot的java項(xiàng)目為例,在這里修改為mycat2的連接信息。
遇到的問題:
本人才疏學(xué)淺,沒有找到這個問題如何解決,因?yàn)榇藛栴},項(xiàng)目可視化大屏數(shù)據(jù)無法展示,不清楚是什么問題導(dǎo)致的也沒有解決方案,因?yàn)橹苯由狭苏江h(huán)境,所以有點(diǎn)影響,結(jié)果mycat中間件不適用本項(xiàng)目,棄用了。文章來源:http://www.zghlxwxcb.cn/news/detail-812787.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-812787.html
到了這里,關(guān)于搭建開源數(shù)據(jù)庫中間件MyCat2-配置mysql數(shù)據(jù)庫雙主雙從的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!