MyCat高可用集羣(一)MyCat的安裝,實現數據讀寫分離

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

將下載好的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實現主從數據庫讀寫分離。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章