自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL 主從集群 + mycat 雙節(jié)點(diǎn) + Keepalived 讀寫分離高可用方案

數(shù)據(jù)庫(kù) MySQL
今天分享一下讀寫分離使用 MyCAT 版本來(lái)實(shí)現(xiàn) MySQL 主從集群與 MyCAT 雙節(jié)點(diǎn)部署,并結(jié)合 Keepalived 實(shí)現(xiàn)高可用的完整解決方案。

今天分享一下讀寫分離使用 MyCAT 版本來(lái)實(shí)現(xiàn) MySQL 主從集群與 MyCAT 雙節(jié)點(diǎn)部署,并結(jié)合 Keepalived 實(shí)現(xiàn)高可用的完整解決方案。

一、架構(gòu)設(shè)計(jì)

1. 場(chǎng)景說(shuō)明

在大型業(yè)務(wù)系統(tǒng)中,數(shù)據(jù)庫(kù)壓力大,為了解決單點(diǎn)瓶頸和讀寫分離問(wèn)題,采用 MySQL 主從集群和 MyCAT 做數(shù)據(jù)中間層。為保證 MyCAT 層面的高可用,部署兩個(gè) MyCAT 節(jié)點(diǎn),利用 Keepalived 做 VIP 浮動(dòng) IP,保障服務(wù)不中斷。

架構(gòu)如下:

二、部署環(huán)境規(guī)劃

主機(jī) IP

安裝服務(wù)

角色

10.0.0.41

MySQL 主庫(kù) + MyCAT + Keepalived

主節(jié)點(diǎn)(MASTER)

10.0.0.42

MySQL 從庫(kù) + MyCAT + Keepalived

備節(jié)點(diǎn)(BACKUP)

VIP

10.0.0.100

客戶端訪問(wèn)入口

mysql集群已經(jīng)部署完成。

三、MyCAT 雙節(jié)點(diǎn)部署

1. 安裝 MyCAT

兩個(gè)節(jié)點(diǎn)都需要部署mycat,部署過(guò)程一樣。

mycat官網(wǎng):https://github.com/MyCATApache/Mycat-Server

(1) 安裝java

yum install -y java

(2) 下載并解壓 MyCAT

# 下載mycat
wget https://github.com/MyCATApache/Mycat-Server/releases/download/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
tar -xvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

# 解壓好的文件遷移到/usr/local
mv mycat /usr/local/mycat

(3) 創(chuàng)建 MyCAT 用戶

useradd mycat
chown -R mycat:mycat /usr/local/mycat

(4) 配置環(huán)境變量

vi /etc/profile
# 在尾部添加
export PATH=/usr/local/mycat/bin:$PATH

# 立即生效
source /etc/profile

2. 配置 MyCAT

配置文件路徑:/usr/local/mycat/conf/涉及 3 個(gè)主要文件:

  • server.xml — 配置 MyCAT 相關(guān)服務(wù)
  • schema.xml — 配置數(shù)據(jù)庫(kù)連接、讀寫分離
  • rule.xml — 配置分庫(kù)分表規(guī)則(此方案中不涉及)

(1) server.xml 配置

路徑:/usr/local/mycat/conf/server.xml

<?xml versinotallow="1.0" encoding="UTF-8"?>
<mycat:server xmlns:mycat="http://mycat.io/">
    <user name="root">
        <property name="password">123456</property>
        <property name="schemas">testdb</property>
    </user>
</mycat:server>

客戶端通過(guò) MyCAT 連接時(shí),使用 root/123456 登錄。

(2) schema.xml 配置

路徑:/usr/local/mycat/conf/schema.xml

<?xml versinotallow="1.0" encoding="UTF-8"?>
<mycat:schema xmlns:mycat="http://mycat.io/">
    <!-- 定義邏輯庫(kù) -->
    <schema name="testdb" checkSQLschema="false" sqlMaxLimit="100">
        <table name="*" dataNode="dn1" />
    </schema>

    <!-- 數(shù)據(jù)節(jié)點(diǎn)配置 -->
    <dataNode name="dn1" dataHost="localhost" database="testdb" />

    <!-- 主從數(shù)據(jù)庫(kù)節(jié)點(diǎn)配置 -->
    <dataHost name="localhost" maxCnotallow="1000" minCnotallow="10" balance="1" writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select 1</heartbeat>

        <!-- 主庫(kù) -->
        <writeHost host="hostM1" url="10.0.0.41:3306" user="root" password="123456">
            <!-- 從庫(kù) -->
            <readHost host="hostS1" url="10.0.0.42:3306" user="root" password="123456" />
        </writeHost>
    </dataHost>
</mycat:schema>

關(guān)鍵配置說(shuō)明

配置項(xiàng)

說(shuō)明

balance="1"

配置讀寫分離,讀操作自動(dòng)分發(fā)到從庫(kù)

writeType="0"

只允許向主庫(kù)寫入數(shù)據(jù)

writeHost

主庫(kù)配置

readHost

從庫(kù)配置

(3) 啟動(dòng) MyCAT

cd /usr/local/mycat/bin
./mycat start

(4) 查看 MyCAT 日志

tail -f /usr/local/mycat/logs/wrapper.log

(5) 查看狀態(tài)

mycat status

兩個(gè)節(jié)點(diǎn)配置完mycat后,接下來(lái)配置keepalived。

四、配置 Keepalived 高可用

1. 安裝 Keepalived

yum install keepalived -y

2. 配置 Keepalived

(1) 主節(jié)點(diǎn) /etc/keepalived/keepalived.conf

global_defs {
   router_id MyCAT_1
}

vrrp_script chk_mycat {
    script "/usr/local/mycat/bin/check_mycat.sh"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33  # 確保網(wǎng)卡名正確
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.100
    }
    track_script {
        chk_mycat
    }
}

(2) 備節(jié)點(diǎn) /etc/keepalived/keepalived.conf

global_defs {
   router_id MyCAT_2
}

vrrp_script chk_mycat {
    script "/usr/local/mycat/bin/check_mycat.sh"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.100
    }
    track_script {
        chk_mycat
    }
}

(3) 健康檢查腳本

vi /usr/local/mycat/bin/check_mycat.sh
#!/bin/bash

MYCAT_PORT=8066

if ! netstat -ntlp | grep $MYCAT_PORT > /dev/null
then
    echo "MyCAT is down, stopping keepalived"
    systemctl stop keepalived
fi

(4) 授權(quán)執(zhí)行權(quán)限

chmod +x /usr/local/mycat/bin/check_mycat.sh

3. 啟動(dòng) Keepalived 服務(wù)

# 啟動(dòng)keepalived并設(shè)置開(kāi)機(jī)自啟動(dòng)
systemctl enable --now keepalived

五、客戶端訪問(wèn)

客戶端或應(yīng)用通過(guò) VIP(10.0.0.100)和端口 8066 訪問(wèn):

mysql -h 10.0.0.100 -P 8066 -uroot -p123456

高可用實(shí)現(xiàn):

  • 默認(rèn)情況下,VIP 在主節(jié)點(diǎn)上,MyCAT 監(jiān)聽(tīng) 8066 端口
  • 如果主節(jié)點(diǎn)的 MyCAT 異常,VIP 會(huì)自動(dòng)漂移到備節(jié)點(diǎn)

責(zé)任編輯:趙寧寧 來(lái)源: 運(yùn)維李哥不背鍋
相關(guān)推薦

2018-04-08 15:20:15

數(shù)據(jù)庫(kù)MySQL主從復(fù)制

2022-04-25 08:03:57

MySQL中間件MyCat

2019-12-24 14:28:00

KeepalivedNginxTomcat

2023-03-08 18:00:00

主從讀寫分離

2022-03-24 12:15:50

MySQL數(shù)據(jù)庫(kù)讀寫分離

2019-05-13 15:00:14

MySQLMyCat數(shù)據(jù)庫(kù)

2020-04-23 15:08:41

SpringBootMyCatJava

2015-10-21 12:58:58

keepalived集群Linux

2014-05-30 13:35:21

MySQL Clust架構(gòu)

2022-02-27 14:37:53

MySQL主備數(shù)據(jù)

2019-10-09 16:02:16

NginxKeepalivedLvs

2022-07-22 20:00:01

高可用路由

2021-05-20 06:49:45

MongoDB高可用數(shù)據(jù)庫(kù)

2011-10-10 09:47:32

HAProxy負(fù)載均衡Keepalived

2020-12-08 06:17:11

MycatMySQL分離

2023-11-01 07:55:44

K8sKubernetes

2018-01-12 14:20:37

數(shù)據(jù)庫(kù)MySQL高可用架構(gòu)

2010-12-08 08:57:11

keepalivedMySQL-HA

2011-08-30 13:08:55

Mysql ProxyLua分離

2023-05-15 08:20:56

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)