MySQL 是廣泛使用的關係型資料庫管理系統,保證其高可用性對於許多企業是必不可少的。為了保證 MySQL 的高可用性,通常需要實現雙主雙活的架構。MySQL Keepalived 是一種常用的實現雙主雙活的高可用性方案。在本文中,我們將從以下幾個方面詳細闡述 MySQL Keepalived 的特點和用法:
一、Keepalived 簡介
Keepalived 是一個類似於 Linux HA(High Availability)的軟體,常用於實現 TCP/IP 服務的高可用性。Keepalived 的核心是實現了 VRRP(虛擬路由冗餘協議),實現了 IP 地址自動切換功能,可以幫助管理員實現高可用性的配置。
二、MySQL 雙主雙活
MySQL 雙主雙活是指將多個 MySQL 實例配置成主從複製,然後將多個主實例連接在一起,使得任意一個主實例都可以處理客戶端的讀寫請求。這種架構可以保證主從切換時客戶端不需要做任何動作,實現高可用性。
三、MySQL Keepalived 的特點
MySQL Keepalived 的特點如下:
1、自動檢測是否故障
MySQL Keepalived 可以檢測 MySQL 相關的系統進程,實時監控 MySQL 系統狀態,自動檢測是否存在故障。
2、快速切換 IP 地址
MySQL Keepalived 能夠快速切換 IP 地址,確保服務不間斷,提高 MySQL 系統的可用性。
3、實現雙主雙活
MySQL Keepalived 集成 VRRP 協議,可以將多個 MySQL 實例配置成雙主雙活的模式,同時支持負載均衡。
四、使用 MySQL Keepalived 進行雙主雙活架構
接下來我們以 CentOS 7.4 系統為例,演示如何使用 MySQL Keepalived 實現雙主雙活的高可用性架構。
1、環境準備
首先需要安裝 MySQL 和 Keepalived:
yum install -y mariadb-server
yum install -y keepalived
2、配置 MySQL 雙主雙活
可以在兩台 Linux 伺服器上配置 MySQL 主從複製,然後將兩個主伺服器設置為雙主雙活模式。相關代碼如下:
# 在伺服器 server1 上執行:
stop mysql
cd /var/lib/mysql
rm -rf *
systemctl start mariadb
mysql_secure_installation
systemctl stop mariadb
# 在伺服器 server2 上執行對應操作
3、配置 Keepalived
編輯配置文件 /etc/keepalived/keepalived.conf,示例如下:
vrrp_script chk_mysql {
script "/etc/keepalived/chk_mysql.sh"
interval 1
weight 2
}
vrrp_instance mysqlvip {
state MASTER // 必須使用 MASTER MODE
interface eth0 // 使用你的網卡
virtual_router_id 1
priority 100 // server1 優先順序為 100, server2 為 90
advert_int 1
virtual_ipaddress {
192.168.200.100/24 // 虛擬 IP 地址
}
track_script {
chk_mysql
}
}
# cat /etc/keepalived/chk_mysql.sh
#!/bin/bash
mysqld_status=`systemctl status mariadb | grep running | wc -l`
if [ $mysqld_status -eq 0 ]
then
exit 1
else
exit 0
fi
說明:Keepalived 配置文件指定使用虛擬路由 ID 是 1,主機名為 mysqlvip,使用網卡 eth0,虛擬 IP 地址為 192.168.200.100。
4、運行 Keepalived 和 MySQL
在兩個伺服器上分別運行如下命令來啟動 Keepalived 和 MySQL:
# 啟動 Keepalived 和 MySQL
systemctl start keepalived
systemctl start mariadb
# 檢查 Keepalived 和 MySQL 是否正常運行
systemctl status keepalived
systemctl status mariadb
5、測試
在客戶端上安裝 MySQL 客戶端,使用剛才配置的虛擬 IP 測試連接。相關命令如下:
# 在客戶端連接資料庫
mysql -u root -h 192.168.200.100 -p
# 創建表並寫入數據
create database testdb;
use testdb;
create table users(id INT, name VARCHAR(20));
insert into users(id, name) values(1,"Tom");
select * from users;
五、總結
MySQL Keepalived 是一種實現 MySQL 雙主雙活的高可用性方案,許多企業在實踐中也廣泛應用。通過本文的介紹,我們可以了解到 MySQL Keepalived 的特點和使用方法。使用 MySQL Keepalived 構建雙主雙活架構可以有效提高 MySQL 系統的可用性,建議有需要的企業可以嘗試使用。
原創文章,作者:VPTE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135367.html