MyCat高可用集群
第一章 安裝MyCat,實作資料讀寫分離
文章目錄
- MyCat高可用集群
- 前言
- 一、環境準備
- 二、安裝JDK
- 1.下載JDK和MyCat安裝包
- 2.安裝JDK
- 三、 搭建mysql主從服務器
- 四、安裝MyCat
- 五、啟動MyCat
前言
Mycat是資料庫中間件,
中間件:是一類連接軟體組件和應用的計算機軟體,以便于軟體各部件之間的溝通,
資料庫中間件:連接應用程式和資料庫,
mycat(前身是阿里的cobar)支持的資料庫包括mysql、Oracle、SQLServer、DB2等主流關系型資料庫,也支持非關系型資料庫,key-value型的reids、memcache,面向檔案型的mongoDB,面向列的HBase等,其核心功能是分庫分表,滿足大資料量存盤,提高查詢性能,
一、環境準備
三臺CentOS7虛擬機
一臺安裝mycat,M1、S1實作主從備份
| 名稱 | 服務器名 | IP |
|---|---|---|
| MyCat | centos7_1 | 192.168.80.70 |
| M1 | localhost.localdomin | 192.168.80.20 |
| S1 | CentOS7 | 192.168.80.80 |
二、安裝JDK
1.下載JDK和MyCat安裝包
JDK官網下載地址:https://www.oracle.com/cn/java/technologies/javase-jdk15-downloads.html
MyCat官方下載地址:http://www.mycat.org.cn/


2.安裝JDK
mycat是用JAVA開發的資料庫中間件,安裝mycat前要先安裝Java運行環境,
將下載好的JDK包傳到服務器
#解壓檔案,修改組態檔,在后面添加配置
vim /etc/profile
export JAVA_HOME=/usr/local/jdk-15.0.1 #jdk所在目錄
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

#重新加載檔案
source /etc/profile
#測驗jdk是否安裝成功
java -version

三、 搭建mysql主從服務器
#安裝mysql
yum -y install mariadb mariadb-server
#啟動服務并設定開機自啟
systemctl enable mariadb
systemctl start mariadb
1、M1
#開啟二進制日志
#主服務器id應比從服務器小
vim /etc/my.cnf
server-id=1#啟用二進制日志
log-bin=mysql-bin
# 設定不要復制的資料庫(可設定多個)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#設定需要復制的資料庫
binlog-do-db=testdb
#設定logbin格式
binlog_format=STATEMENT
#重啟mysql
systemctl restart mariadb
#主服務器授權
grant replication slave on *.* to slave@'192.168.80.80' identified by '123456';
#查看log日志狀態
show master status;

2、S2
#從服務器保存授權
change master to master_user='slave',
master_password='123456',
master_host='192.168.80.70',
master_log_file='mysql-bin.000001',
master_log_pos=398;

##成功后會有檔案保存了連接資訊
#/var/lib/mysql/master.info

#開啟從服務器
start slave;
#查看從服務器狀態
#Slave_IO_Running和Slave_SQL_Running 為yes即為開啟成功
show slave status\G;

#測驗
#主庫創建testdb庫,從庫也生成了testdb庫
create database testdb;
四、安裝MyCat
將下載好的MyCat包傳到服務器,軟體包解壓即可使用,無需安裝
1、修改組態檔(組態檔在conf檔案夾里)
#修改登錄名(默認root,為了與系統root區分)
vim /usr/local/mycat/conf/server.xml

#修改mycat配置,洗掉不必要的資訊
vim /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="localhost1" database="testdb" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.80.20:3306" user="root"
password="123456">
<readHost host="hostS2" url="192.168.80.80:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>

修改的balance屬性,通過此屬性配置讀寫分離的型別負載均衡型別,目前的取值有4 種:
(1)balance=“0”,不開啟讀寫分離機制,所有讀操作都發送到當前可用的writeHost 上,
(2)balance=“1”,全部的readHost 與stand by writeHost 參與select 陳述句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,并且M1 與M2 互為主備),正常情況下,M2,S1,S2 都參與select 陳述句的負載均衡,
(3)balance=“2”,所有讀操作都隨機的在writeHost、readhost 上分發,
(4)balance=“3”,所有讀請求隨機的分發到readhost 執行,writerHost 不負擔讀壓力
#主、從服務器資料庫授權給MyCat
grant all on *.* to root@'%' identified by '123456';
#驗證遠程連接資料庫是否成功
需要安裝mysql
mysql -uroot -p123456 -h 192.168.80.20 -P 3306
mysql -uroot -p123456 -h 192.168.80.80 -P 3306
五、啟動MyCat
#啟動mycat有兩種方式
①控制臺啟動:去mycat/bin 目錄下執行./mycat console
②后臺啟動:去mycat/bin 目錄下./mycat start
#啟動mycat
./mycat console
#若出現Unrecognized VM option 'AggressiveOpts’錯誤

#修改組態檔,注釋掉-XX:+AggressiveOpts
vim /usr/local/mycat/conf/wrapper.conf

#重新啟動mycat
./mycat console

#進入mycat
mysql -umycat -p123456 -P8066 -h 192.168.80.70
#可以看到設定的資料庫名TESTDB
show databases;
use TESTDB;
#新建新表
create table a1 (id int(10),name char(20));#驗證讀寫分離
#插入主機名資訊,查看資料
insert into a1 values (3,@@hostname);
#查看主從表資訊
至此利用mycat實作主從資料庫讀寫分離,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237608.html
標籤:其他
上一篇:大資料人工智能技術全攻略



