偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

一、架構設計

1. 場景說明

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

架構如下:

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

主機 IP

安裝服務

角色

10.0.0.41

MySQL 主庫 + MyCAT + Keepalived

主節(jié)點(MASTER)

10.0.0.42

MySQL 從庫 + MyCAT + Keepalived

備節(jié)點(BACKUP)

VIP

10.0.0.100

客戶端訪問入口

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

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

1. 安裝 MyCAT

兩個節(jié)點都需要部署mycat,部署過程一樣。

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 個主要文件:

  • server.xml — 配置 MyCAT 相關服務
  • schema.xml — 配置數(shù)據(jù)庫連接、讀寫分離
  • rule.xml — 配置分庫分表規(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>

客戶端通過 MyCAT 連接時,使用 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/">
    <!-- 定義邏輯庫 -->
    <schema name="testdb" checkSQLschema="false" sqlMaxLimit="100">
        <table name="*" dataNode="dn1" />
    </schema>

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

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

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

關鍵配置說明

配置項

說明

balance="1"

配置讀寫分離,讀操作自動分發(fā)到從庫

writeType="0"

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

writeHost

主庫配置

readHost

從庫配置

(3) 啟動 MyCAT

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

(4) 查看 MyCAT 日志

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

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

mycat status

兩個節(jié)點配置完mycat后,接下來配置keepalived。

四、配置 Keepalived 高可用

1. 安裝 Keepalived

yum install keepalived -y

2. 配置 Keepalived

(1) 主節(jié)點 /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é)點 /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) 授權執(zhí)行權限

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

3. 啟動 Keepalived 服務

# 啟動keepalived并設置開機自啟動
systemctl enable --now keepalived

五、客戶端訪問

客戶端或應用通過 VIP(10.0.0.100)和端口 8066 訪問:

mysql -h 10.0.0.100 -P 8066 -uroot -p123456

高可用實現(xiàn):

  • 默認情況下,VIP 在主節(jié)點上,MyCAT 監(jiān)聽 8066 端口
  • 如果主節(jié)點的 MyCAT 異常,VIP 會自動漂移到備節(jié)點

責任編輯:趙寧寧 來源: 運維李哥不背鍋
相關推薦

2018-04-08 15:20:15

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

2022-04-25 08:03:57

MySQL中間件MyCat

2019-12-24 14:28:00

KeepalivedNginxTomcat

2023-03-08 18:00:00

主從讀寫分離

2020-04-23 15:08:41

SpringBootMyCatJava

2022-03-24 12:15:50

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

2019-05-13 15:00:14

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

2015-10-21 12:58:58

keepalived集群Linux

2014-05-30 13:35:21

MySQL Clust架構

2022-02-27 14:37:53

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

2019-10-09 16:02:16

NginxKeepalivedLvs

2021-05-20 06:49:45

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

2022-07-22 20:00:01

高可用路由

2011-10-10 09:47:32

HAProxy負載均衡Keepalived

2020-12-08 06:17:11

MycatMySQL分離

2023-11-01 07:55:44

K8sKubernetes

2023-05-15 08:20:56

2010-12-08 08:57:11

keepalivedMySQL-HA

2018-01-12 14:20:37

數(shù)據(jù)庫MySQL高可用架構

2019-08-27 15:56:44

MySQL 互聯(lián)網(wǎng)數(shù)據(jù)庫
點贊
收藏

51CTO技術棧公眾號