CentOS7系統下使用Mycat實現mysql讀寫分離部署

dba_sam發表於2021-06-20

   MyCat是一個開源的分散式資料庫系統,是一個實現了MySQL協議的伺服器,前端使用者可以把它看作是一個資料庫代理,用MySQL客戶端工具和命令列訪問,而其後端可以用MySQL原生協議與多個MySQL伺服器通訊,也可以用JDBC協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫,即將一個大表水平分割為N個小表,儲存在後端MySQL伺服器裡或者其他資料庫裡。

   MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的後端可以支援MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流資料庫,也支援MongoDB這種新型NoSQL方式的儲存,未來還會支援更多型別的儲存。而在終端使用者看來,無論是那種儲存方式,在MyCat裡,都是一個傳統的資料庫表,支援標準的SQL語句進行資料的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度

具體介紹請參考:

 

OS: CentOS Linux release 7.9.2009 (Core)

序號

主機

IP

部署內容

備註

1

mycat1

192.168.56.111

mycat 節點


6

Node1

192.168.56.109

搭建主備同步,並建立1個database(jumpserver)

主庫

7

Node2

192.168.56.110

從主庫同步資訊

備庫

 

關閉系統SELINUX 功能:

執行命令如下:

sed -i '/^SELINUX=.*/ s//SELINUX=disabled/' /etc/selinux/config

或vi 編輯/etc/selinux/config 檔案,更改SELINUX=disabled

更改後,執行命令:reboot 重啟系統生效

重啟後,執行:getenforce 檢查selinux狀態是否為Disabled狀態

 

*mysql 資料庫伺服器關閉SELINUX

* 執行在Linux下的mysql,需要配置 lower_case_table_names=1 不區分大小寫

新增到mysql配置檔案中 /etc/my.cnf

配置完成後,重啟mysql資料庫生效

主庫配置

# 編輯mysql配置檔案,在[mysqld]下加入以下引數

vim /etc/my.cnf

enforce_gtid_consistency=ON

gtid_mode=ON

log_bin=mysql-bin

log_bin_index=mysql-bin.index

binlog_format=row

relay_log=reay-log

relay_log_index=relay-log.index

server-id=1

# 重啟mysql服務

systemctl restart mysqld

 

# 備份mysql

mysqldump --all-databases --single-transaction --triggers --routines --set-gtid-purged=OFF --host=127.0.0.1 --port=3306 --user=root --password > backup.sql

# 建立同步帳號

create user 'repl'@'192.168.56.110' identified by 'Musen123!@#';

grant replication slave on *.* to 'repl'@'192.168.56.110';

flush privileges;

備庫配置

# 編輯mysql配置檔案,在[mysqld]下加入以下引數

vim /etc/my.cnf

enforce_gtid_consistency=ON

gtid_mode=ON

log_bin=mysql-bin

log_bin_index=mysql-bin.index

log_slave_updates=ON

server-id=2

binlog_format=row

relay_log=reay-log

relay_log_index=relay-log.index

# 重啟mysql服務

systemctl restart mysqld

 

# 恢復mysql資料庫

主庫備份檔案backup.sql傳至備庫/tmp目錄下

登入mysql資料庫後,執行如下指令

source /tmp/backup.sql;

 

# 連線主庫進行同步

change master to master_host='192.168.56.109', master_user='repl',master_password='Musen123!@#',master_port=3306,master_auto_position=1;

start slave;

# 確認主備庫同步狀態

show slave status \G;

建立資料庫

在主庫上執行建立資料庫指令碼

create database jumpserver default charset 'utf8';

執行完成後,在備庫上查詢是否有jumpserver資料庫

show databases;


安裝

安裝jdk1.8可以直接使用yum install java-1.8.0-openjdk.x86_64 -y 進行安裝。

以下部署,採用手動部署jdk1.8,去官網下載jdk1.8的程式包,下載後檔案為jdk-8u291-linux-x64.tar.gz

 

# 上傳jdk1.8安裝包至mycat伺服器

# 上傳到/usr/local 目錄下,並進行解壓

tar xzf jdk-8u291-linux-x64.tar.gz

# 配置系統環境變數

vi /etc/profile   # 編輯檔案,在末尾處加入以下內容

export JAVA_HOME=/usr/local/jdk1.8.0_291

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

 

# 驗證版本

java -version

安裝

# 建立軟體存放目錄

mkdir /opt/app

 

# 下載Mycat

cd /opt/app

wget

 

# 解壓縮

tar xzf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

# 設定Mycat環境變數

echo 'export MYCAT_HOME=/opt/app/mycat' >> /etc/profile

source /etc/profile

配置

# 配置資料來源

/opt/app/mycat/conf/schema.xml 中定義了後端資料來源、邏輯庫/表等。

dataHost :Mycat後端連線的資料庫(物理庫,真實的資料庫),即後端資料來源,可以是mysql、oracle等。

schema :邏輯庫,可以看做是一個或多個後端資料庫叢集構成的邏輯庫。

dataNode :資料分片,邏輯庫的構成,即一個邏輯庫可能分為多個分片,資料分片最終會落在一個或多個物理庫。


#以下配置是配置讀寫分離的配置截圖


注意balance屬性 負載均衡型別,目前的取值有3 種:

balance="0", 不開啟讀寫分離機制,所有讀操作都傳送到當前可用的writeHost 上。
balance="1",全部的readHost 與stand by writeHost 參與select
語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,並且M1 與M2 互為主備),正常情況下,M2,S1,S2 都參與select語句的負載均衡。

balance="2" ,所有讀操作都隨機的在writeHost、readhost 上分發。
balance="3",所有讀請求隨機的分發到wiriterHost 對應的readhost 執行,writerHost 不負擔讀壓
力,注意balance=3 只在1.4 及其以後版本有,1.3 沒有。

 

# 配置mycat使用者

/opt/app/mycat/conf/server.xml 中定義mycat的系統配置和使用者等。可以透過xml新增和修改mycat使用者資訊。

以下為schema:test新增了兩個使用者root和user,應用使用這兩個賬號連線mycat進行資料的操作,如果不用user使用者,可以刪除裡面的配置。

# mycat 啟動

/opt/app/mycat/bin/mycat start

# mycat 執行埠檢視

netstat -antup | grep 8066

# mycat 管理埠檢視

netstat -antup | grep 9066

# 使用mysql客戶端連線mycat 驗證

mysql -u root -h 192.168.56.111 -P 8066 -p

# mycat 管理命令

管理命令需要連線mycat的9066預設埠

mysql -u root -h 192.168.56.111 -P 9066 -p

配置防火牆

新增防火牆過濾規則,允許8066與9066透過

firewall-cmd --permanent --zone=public --add-port=8066/tcp

firewall-cmd --permanent --zone=public --add-port=9066/tcp

firewall-cmd --reload


-----------END-----------------


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000068/viewspace-2777483/,如需轉載,請註明出處,否則將追究法律責任。

相關文章