mysql主從復制搭建,并基于?Keepalived + VIP實現高可用

以下是基于 ?Keepalived + VIP? 實現 MySQL 主從復制高可用的詳細步驟,涵蓋主從復制搭建與故障自動切換:

一、MySQL 主從復制搭建(基礎步驟回顧)

1. ?主庫(Master)配置?

修改配置文件? /etc/my.cnf:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=test_db  # 指定需要同步的數據庫(可選)

重啟 MySQL:systemctl restart mysqld

創建復制賬號?:

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'Repl_Pass123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;

查看主庫狀態?:

SHOW MASTER STATUS;  -- 記錄 File(如 mysql-bin.000001)和 Position(如 154)

2. ?從庫(Slave)配置?

修改配置文件? /etc/my.cnf:

[mysqld]
server-id=2
relay-log=mysql-relay-bin
read_only=1  # 從庫只讀(可選)

重啟 MySQL:systemctl restart mysqld

導入主庫數據?(若主庫已有數據):

# 主庫導出數據
mysqldump -uroot -p --databases test_db > /tmp/backup.sql
# 從庫導入數據
mysql -uroot -p < /tmp/backup.sql

配置主從鏈路?:

CHANGE MASTER TO
MASTER_HOST='主庫IP',
MASTER_USER='repl_user',
MASTER_PASSWORD='Repl_Pass123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;START SLAVE;

驗證復制狀態?:

SHOW SLAVE STATUS\G  
-- 確保 Slave_IO_Running 和 Slave_SQL_Running 均為 Yes

二、Keepalived + VIP 高可用配置

1. ?環境規劃?

角色?IP?VIP?
MySQL Master192.168.1.10192.168.1.100
MySQL Slave192.168.1.11

2. ?Install Keepalived?

在兩臺 MySQL 節點安裝 Keepalived:

yum install keepalived -y  # CentOS
apt install keepalived -y  # Ubuntu

3. ?配置 Keepalived?

主庫(Master)配置? /etc/keepalived/keepalived.conf:

global_defs {router_id mysql_ha_master
}vrrp_script chk_mysql {script "/etc/keepalived/check_mysql.sh"  # 檢測MySQL是否存活interval 2weight 2
}vrrp_instance VI_1 {state MASTERinterface eth0  # 網卡名稱virtual_router_id 51priority 100    # 主庫優先級高于從庫(如從庫設為90)advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100/24  # VIP}track_script {chk_mysql  # 綁定健康檢查腳本}
}

從庫(Slave)配置? /etc/keepalived/keepalived.conf:

global_defs {router_id mysql_ha_slave
}vrrp_script chk_mysql {script "/etc/keepalived/check_mysql.sh"interval 2weight 2
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100/24}track_script {chk_mysql}
}

4. ?編寫 MySQL 健康檢查腳本?

創建 /etc/keepalived/check_mysql.sh(兩節點均需配置):

#!/bin/bash
if ! systemctl is-active mysqld >/dev/null 2>&1; thenexit 1  # MySQL停止,觸發VIP漂移
elseexit 0
fi

賦予執行權限:

chmod +x /etc/keepalived/check_mysql.sh

5. ?啟動 Keepalived?

systemctl start keepalived
systemctl enable keepalived

三、驗證高可用性

1. ?查看 VIP 綁定狀態?

在主庫執行:

ip addr show eth0 | grep 192.168.1.100

應看到 VIP 綁定在主庫的網卡上。

2. ?模擬主庫故障?

停止主庫的 MySQL 服務:

systemctl stop mysqld

觀察 VIP 是否漂移到從庫(約 2~5 秒):

# 在從庫執行
ip addr show eth0 | grep 192.168.1.100

3. ?恢復主庫后 VIP 回切?

重啟主庫的 MySQL 和 Keepalived:

systemctl start mysqld
systemctl restart keepalived

VIP 應自動回到主庫(需確保主庫優先級更高)。

四、注意事項

腦裂問題?:

  • 使用 vrrp_script 檢測 MySQL 服務狀態,避免僅依賴網絡存活導致腦裂。
  • 可在防火墻中禁止 VRRP 協議的多播包(iptables 或 firewalld 配置)。

主從切換后的處理?:

  • 若 VIP 漂移到從庫,需手動或通過腳本執行 STOP SLAVE; 并提升為新的主庫。
  • 原主庫恢復后,需重新配置為主從復制中的從庫。

應用連接配置?:

  • 應用程序應通過 VIP(192.168.1.100)連接數據庫,而非直接使用物理 IP。

五、方案優缺點

優點?? 缺點?
簡單輕量,快速切換(秒級)需手動處理主從復制鏈路切換
與應用解耦,無需修改應用配置依賴腳本實現故障檢測,可靠性依賴腳本邏輯
適合小規模集群不自動處理數據一致性校驗

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78874.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78874.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78874.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CD36.【C++ Dev】STL庫的string的使用 (下)

目錄 1.reserve函數(不是reverse) 代碼示例 2.resize 代碼示例 3.reserve和resize的區別 4.shrink_to_fit 代碼示例 5.與C語言的配合的接口函數: c_str 代碼示例 6.rfind 知識回顧:find函數 rfind 代碼示例 練習題: 字符串最后一個單詞的長度 代碼 提交結果 ?…

STM32的網絡天氣時鐘項目

一、項目概述與硬件架構 1.1 核心功能 本智能天氣時鐘系統集成了實時天氣獲取、網絡時間同步、環境監測和低功耗管理四大核心功能&#xff1a; 網絡數據獲取&#xff1a; 通過ESP8266 WiFi模塊連接心知天氣API&#xff08;每小時更新&#xff09;獲取北京標準時間服務器的時…

FPGA DDR4多通道管理控制器設計

DDR4控制器一般采用自帶的MIG控制器&#xff0c;用戶控制主要是基于MIG IP核進行設計 實際工程項目中可能只掛載了一組DDR&#xff0c;但是用戶數據可能有很多種&#xff0c;用戶通過給每種數據劃分特定地址進行存儲&#xff0c;如何實現靈活管理成為設計的關鍵 為了方便后端數…

低代碼 x AI,解鎖數智化應用的創新引擎

AI 智能體開發指南 隨著全球信息化浪潮的持續推進&#xff0c;數字化、智能化轉型已成為企業發展的必經之路。在這個變革的時代&#xff0c;企業面臨著前所未有的挑戰與機遇。一方面&#xff0c;市場環境瞬息萬變&#xff0c;企業需要快速響應并調整業務模式&#xff1b;另一方…

【Spring Boot 注解】@Configuration與@AutoConfiguration

文章目錄 Configuration與AutoConfiguration一、Configuration二、AutoConfiguration Configuration與AutoConfiguration 一、Configuration 這是最常用的 Spring 注解之一&#xff0c;表示當前類是一個 配置類&#xff0c;可以定義 Bean 方法&#xff0c;等效于傳統的 XML 配…

arXiv論文 MALOnt: An Ontology for Malware Threat Intelligence

文章講惡意軟件威脅情報本體。 作者信息 作者是老美的&#xff0c;單位是倫斯勒理工學院&#xff0c;文章是2020年的預印本&#xff0c;不知道后來發表在哪里&#xff08;沒搜到&#xff0c;或許作者懶得投稿&#xff0c;也可能是改了標題&#xff09;。 中心思想 介紹開源…

【存儲管理—動態不等長存儲資源分配算法】

文章目錄 一、實驗目的二、實驗內容與設計思想實驗內容設計思路 三、實驗代碼實現四、總結 一、實驗目的 理解動態異長存儲分區資源管理&#xff0c;掌握所需數據結構和管理程序&#xff0c;了解各種存儲分配算法的優點和缺點。 二、實驗內容與設計思想 實驗內容 1.分析uni…

快速上手 Docker:從入門到安裝的簡易指南(Mac、Windows、Ubuntu)

PS&#xff1a;筆者在五一剛回來一直搞Docker部署AI項目&#xff0c;發現從開發環境遷移到生成環境時&#xff0c;Docker非常好用。但真的有一定上手難度&#xff0c;推薦讀者多自己嘗試踩踩坑。 本篇幅有限&#xff0c;使用與修改另起篇幅。 一、Docker是什么 #1. Docker是什…

LabVIEW高沖擊加速度校準系統

在國防科技領域&#xff0c;高 g 值加速度傳感器廣泛應用于先進兵器研制&#xff0c;如深侵徹系統、精確打擊彈藥及鉆地彈藥等。其性能指標直接影響研究結果的準確性與可靠性&#xff0c;因此對該傳感器進行定期校準意義重大。高沖擊加速度校準系統具備多方面功能&#xff0c;適…

FPGA 純邏輯NVME raid0 IP核

系統采用XCZU19EG搭載4個三星990 PRO SSD 單盤讀寫不低于3GB/s 4盤總帶寬不低于12GB/s

GStreamer開發筆記(三):測試gstreamer/v4l2+sdl2/v4l2+QtOpengl打攝像頭延遲和內存

若該文為原創文章&#xff0c;轉載請注明原文出處 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/147714800 長沙紅胖子Qt&#xff08;長沙創微智科&#xff09;博文大全&#xff1a;開發技術集合&#xff08;包含Qt實用技術、樹莓派、三維、O…

CATIA高效工作指南——零件建模篇(二)

一、PowerCopy特征復用技術 1.1 智能特征封裝 通過??幾何圖形集(Geometrical Set)??構建參數化特征組&#xff0c;將關聯的草圖、曲面、實體等元素進行邏輯封裝。操作流程如下&#xff1a; 創建新幾何圖形集并完成特征建模激活PowerCopy命令&#xff0c;選擇目標幾何集定…

CentOS 7 安裝OpenJDK 17 JRE

CentOS 7 自帶的java 版本為&#xff1a;java version "1.8.0_311"&#xff0c; 有些軟件的運行需要更高的java版本。CentOS 7 自帶的默認倉庫里 沒有 OpenJDK 17&#xff0c;但是 Adoptium 項目&#xff08;前身 AdoptOpenJDK&#xff09;提供了穩定的 OpenJDK 17 版…

【c++】 我的世界

太久沒更新小游戲了 給個贊和收藏吧&#xff0c;求求了 要游戲的請私聊我 #include <iostream> #include <vector>// 定義世界大小 const int WORLD_WIDTH 20; const int WORLD_HEIGHT 10;// 定義方塊類型 enum BlockType {AIR,GRASS,DIRT,STONE };// 定義世界…

angular的cdk組件庫

目錄 一、虛擬滾動 一、虛擬滾動 <!-- itemSize相當于每個項目的高度為30px --><!-- 需要給虛擬滾動設置寬高&#xff0c;否則無法正常顯示 --> <cdk-virtual-scroll-viewport [itemSize]"40" class"view_scroll"><div class"m…

視頻編解碼學習三之顯示器

整理自&#xff1a;顯示器_百度百科&#xff0c;觸摸屏_百度百科,百度安全驗證 分為陰極射線管顯示器&#xff08;CRT&#xff09;&#xff0c;等離子顯示器PDP&#xff0c;液晶顯示器LCD 液晶顯示器的組成。一般來說&#xff0c;液晶顯示器由以下幾個部分組成&#xff1a; […

尚硅谷-硅谷甄選項目記錄

一、Vue3 1 基礎配置 1.1 路徑別名 vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue// 引入path&#xff0c;node提供的模塊&#xff0c;可以獲取文件或文件夾的路徑 import path from pathexport default defineConfig({plugins: […

ThinkPHP5 case when的使用

主表的類型不同&#xff0c;需要連接查詢不同的表時&#xff0c;可以使用case when 在主表(上面的表中)的模型里面&#xff0c;寫如下代碼來獲取列表&#xff1a; $res $this->alias("p")->field([p.*,"CASE WHEN p.pd_ticket_type 1 THEN (select s.s…

Android 10.0 SharedPreferences in credential encrypted storage are not avai

1.前言 在10.0的系統rom定制化開發中,在開機的過程中,由于某些應用在開機解鎖階段就開始訪問查詢短信和聯系人等功能,所以 會出現拋異常的情況出現,接下來分析下相關的情況,然后來解決這些問題 2.SharedPreferences in credential encrypted storage are not available …

LeetCode[102]二叉樹的層序遍歷

思路&#xff1a; 題目描述從左到右一層一層的進行遍歷&#xff0c;就遍歷二叉樹的這種題我更喜歡用遞歸來做&#xff0c; 我使用java來做的&#xff0c;結果集是兩個List集合&#xff0c;那么我們是不是應該每到新的一層就給這個結果集添加一個內部的List&#xff0c;那么怎么…