MySQL高可用部署

目錄

一、MHA(一主多從模式)

1.環境準備(所有節點)

2.?部署 MySQL 主從復制(Master+Slave)

3.部署 MHA Manager(管理節點)

(1)安裝 MHA Manager

(2)配置 SSH 無密碼登錄

(3)創建 MHA 配置文件

4.部署 MHA Node(所有 MySQL 節點)

5.驗證和啟動 MHA

二、PXC(多主模式)

1.環境準備

2.安裝 PXC 相關軟件(所有節點)

3.配置 PXC(所有節點)

(1)創建數據目錄并設置權限

(2)修改配置文件

4.啟動 PXC 集群

5.初始化配置和測試


一、MHA(一主多從模式)

1.環境準備(所有節點)

# 關閉防火墻和 SELinux
systemctl stop ufw
systemctl disable ufw
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0# 配置主機名和 hosts 文件
# 主庫(master)
hostnamectl set-hostname mysql-master
echo "192.168.10.61 mysql-master" >> /etc/hosts
echo "192.168.10.62 mysql-slave1" >> /etc/hosts
echo "192.168.10.63 mha-manager" >> /etc/hosts# 從庫1(slave1)和從庫2(slave2)執行相同操作,修改hostnamectl為對應主機名# 安裝依賴包
sudo apt-get install -y make gcc libc6-dev libssl-dev libdbd-mysql-perl libdbi-perl libnet-daemon-perl libplrpc-perl libio-socket-ssl-perl

2.?部署 MySQL 主從復制(Master+Slave)

參照Mysql主從復制部署_mysql replication部署操作-CSDN博客

3.部署 MHA Manager(管理節點)

(1)安裝 MHA Manager

wget https://mirrors.aliyun.com/ubuntu/pool/universe/m/mha4mysql-manager/mha4mysql-manager_0.58-1.1_all.deb
sudo dpkg -i mha4mysql-manager_*.deb
sudo apt-get install -f  # 解決依賴問題

(2)配置 SSH 無密碼登錄

參考ssh免密登錄-CSDN博客

(3)創建 MHA 配置文件

mkdir -p /etc/mha/masterha/app1
vim /etc/mha/masterha/app1.cnf

配置內容:

[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
master_binlog_dir=/var/lib/mysql
user=mha_admin  # MHA管理用戶
password=password  # MHA管理用戶密碼
ping_interval=1  # 檢測間隔(秒)
repl_user=repl  # 復制用戶
repl_password=password  # 復制用戶密碼
ssh_user=root  # SSH用戶
secondary_check_script="masterha_secondary_check -s mysql-slave1 -s mysql-slave2"  # 雙節點檢測[server1]
hostname=mysql-master
port=3306[server2]
hostname=mysql-slave1
port=3306
candidate_master=1  # 候選主庫
check_repl_delay=0  # 不檢查復制延遲[server3]
hostname=mysql-slave2
port=3306
candidate_master=1
check_repl_delay=0

4.部署 MHA Node(所有 MySQL 節點)

# 1.安裝 MHA Node
# 在所有MySQL節點(master、slave1、slave2)執行
wget https://mirrors.aliyun.com/ubuntu/pool/universe/m/mha4mysql-node/mha4mysql-node_0.58-1.1_all.deb
sudo dpkg -i mha4mysql-node_*.deb
sudo apt-get install -f  # 解決依賴問題# 2.創建 MHA 管理用戶
# 在所有MySQL節點執行
CREATE USER 'mha_admin'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'mha_admin'@'%';
FLUSH PRIVILEGES;

5.驗證和啟動 MHA

# 檢查 SSH 連通性
# 在mha-manager節點執行
masterha_check_ssh --conf=/etc/mha/masterha/app1.cnf# 檢查復制狀態
masterha_check_repl --conf=/etc/mha/masterha/app1.cnf# 啟動 MHA Manager
nohup masterha_manager --conf=/etc/mha/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &# 查看 MHA 狀態
masterha_check_status --conf=/etc/mha/masterha/app1.cnf

注意事項:
二進制日志保留:主庫需保留足夠的 binlog(expire-logs-days設置長一些),避免故障轉移時從庫需要舊 binlog。
VIP 管理:生產環境建議配合 Keepalived 或 LVS 實現 VIP 自動漂移。
監控告警:監控 MHA Manager 日志(/var/log/masterha/app1/manager.log)和 MySQL 復制狀態。
參數優化:根據實際情況調整ping_interval(檢測頻率)和secondary_check_script(雙節點檢測)。?

二、PXC(多主模式)

1.環境準備

# 關閉防火墻和 SELinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0# 配置主機名和 hosts 文件
# 節點1
hostnamectl set-hostname pxc-node1
echo "192.168.4.1 pxc-node1" >> /etc/hosts
echo "192.168.4.2 pxc-node2" >> /etc/hosts
echo "192.168.4.3 pxc-node3" >> /etc/hosts# 節點2和節點3執行相同操作,修改hostnamectl為對應主機名

2.安裝 PXC 相關軟件(所有節點)

# 1.安裝依賴包
yum install -y epel-release
yum install -y libev lsof perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-DBD-MySQL perl-DBI perl-Digest perl-Digest-MD5 perl-IO-Compress perl-Net-Daemon perl-PlRPC qpress socat openssl openssl-devel# 2.卸載 mariadb(如果已安裝)
rpm -e mariadb-libs --nodeps# 3.安裝 XtraBackup
yum -y install percona-xtrabackup-24-2.4.18-1.el7.x86_64.rpm# 4.創建 MySQL 用戶和組
groupadd -r mysql
useradd -M -s /bin/false -r -g mysql mysql# 5.安裝 Percona XtraDB Cluster
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install Percona-XtraDB-Cluster-57

3.配置 PXC(所有節點)

(1)創建數據目錄并設置權限

mkdir -p /data/local/percona-xtradb-cluster/data
chown -R mysql:mysql /data/local/percona-xtradb-cluster/data
mkdir -p /data/local/percona-xtradb-cluster/run
chown -R mysql:mysql /data/local/percona-xtradb-cluster/run
mkdir -p /data/logs/mysql
chown -R mysql:mysql /data/logs/mysql
touch /data/logs/mysql/error.log

(2)修改配置文件

?????????默認的/etc/my.cnf文件可以刪除或重新指定路徑,寫入以下內容(以節點 1 為例,節點 2 和節點 3 需修改server_id、wsrep_node_name、wsrep_node_address)

socket = /data/local/percona-xtradb-cluster/run/mysql.sock
datadir = /data/local/percona-xtradb-cluster/data
socket = /data/local/percona-xtradb-cluster/run/mysql.sock
pid-file = /data/local/percona-xtradb-cluster/run/mysql.pid
wsrep_cluster_address=gcomm://192.168.4.1,192.168.4.2,192.168.4.3
pxc_strict_mode=ENFORCING
wsrep_cluster_name=test-pxc
wsrep_node_name=pxc-node1
wsrep_node_address=192.168.4.1

4.啟動 PXC 集群

# 引導第一個節點(以節點 1 為例)
systemctl start mysql@bootstrap.service# 啟動其他節點(節點 2 和節點 3)
systemctl start mysql
systemctl disable mysql

5.初始化配置和測試

獲取初始密碼并修改:
????????在任意節點上通過grep password /data/logs/mysql/error.log獲取臨時密碼,然后登錄 MySQL 修改密碼。
創建 SST 傳輸賬號:
????????登錄 MySQL 后執行以下命令創建 SST 傳輸所需的賬號

grant all privileges on *.* to'sst'@'localhost' identified by 'password';

?查看集群狀態:
????????在任意節點上登錄 MySQL,執行show status like 'wsrep%';命令,查看集群狀態相關信息,確保wsrep_cluster_size顯示正確的節點數,wsrep_local_state值為 4(表示正常),wsrep_ready為ON。
測試集群:
????????可以在一個節點上創建數據庫、表并插入數據,然后在其他節點上查看是否能同步數據,或者停止某個節點的 MySQL 服務,觀察其他節點的集群狀態和數據是否正常,再重新啟動該節點,查看數據是否能恢復同步。

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

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

相關文章

從 XSS 到 Bot 攻擊:常見網絡攻擊防不勝防?雷池 WAF 用全場景防護為網站筑牢安全墻

1. 網絡攻擊類型當前常見的網絡攻擊類型包括&#xff1a;重放攻擊&#xff08;HTTP Request Replay Attack&#xff09;&#xff1a;攻擊者截獲合法用戶的 HTTP 請求并重新發送&#xff0c;以欺騙服務器執行相同操作。危害包括消耗服務器資源、大量抓取數據或繞過認證操作敏感接…

【王樹森推薦系統】推薦系統漲指標的方法05:特殊用戶人群

為什么要特殊對待特殊人群&#xff1f; 新用戶&#xff0c;低活用戶的行為很少&#xff0c;個性化推薦不準確。個性化的召回和排序都需要基于用戶的歷史行為&#xff0c;如果歷史行為少&#xff0c;個性化就做不好&#xff0c;尤其是新用戶&#xff0c;這就需要策略把個性化做的…

Java 大視界 -- Java 大數據在智能家居能源管理與節能優化中的深度應用(361)

Java 大視界 -- Java 大數據在智能家居能源管理與節能優化中的深度應用&#xff08;361&#xff09;引言&#xff1a;正文&#xff1a;一、Java 構建的智能家居能源數據架構1.1 多源能耗數據實時采集1.2 家庭能源畫像與異常檢測二、Java 驅動的節能策略與智能控制2.1 多場景節能…

從零開始的云計算生活——番外5,使用ELK實現對應用日志的監控

目錄 一.環境準備 試驗機安裝 修改文件配置 二.收集測試機&#xff08;test&#xff09;日志 配置pipline文件 配置filebeat配置文件 三.收集測試機nginx日志 下載安裝nginx 修改filebeat文件 修改pipline文件 四.收集網絡服務模塊日志 1.DHCP 下載dhcp 修改配置…

Node.js:函數、路由、全局對象

Node.js函數 在JavaScript中&#xff0c;一個函數可以作為另一個函數的參數&#xff0c;可以先定義一個函數&#xff0c;然后進行傳遞&#xff0c;也可以在傳參的地方直接定義 function sayhello(){console.log("hello"); } function run(hello, value){hello();cons…

2025暑期—06神經網絡-常見網絡3

VGG16網絡64個卷積核做兩次卷積&#xff0c;填充后編程224X224X64 pooling 兩次卷 pooling 三次卷...分辨率降低一半&#xff0c;通道數增加1倍所有卷積核都是3x3, 所有的pooling 都是2x2殘差網絡每一層的塊都有越層的連接。

使用 FastAPI 構建 Elasticsearch API

作者&#xff1a;來自 Elastic Jeffrey Rengifo 學習如何使用 Pydantic 模式和 FastAPI 后臺任務&#xff0c;通過實際示例構建一個 Elasticsearch API。 想獲得 Elastic 認證嗎&#xff1f;查看下一期 Elasticsearch Engineer 培訓的時間&#xff01; Elasticsearch 擁有豐富…

[2025CVPR-目標檢測方向]FSHNet:一種用于3D物體檢測的全稀疏混合網絡。

1. ?簡介? 論文提出了FSHNet&#xff08;Fully Sparse Hybrid Network&#xff09;&#xff0c;一種用于3D物體檢測的全稀疏混合網絡。FSHNet旨在解決現有稀疏3D檢測器的兩大核心問題&#xff1a;長距離交互能力弱和網絡優化困難。稀疏檢測器&#xff08;如VoxelNeXt和SAFDN…

MySql 8.0.42 zip版安裝教程和使用

今天要裝個MySQL&#xff0c;就按照自己以前的教程來做&#xff0c;不知道是不是版本更新了的原因&#xff0c;又遇到了一點小阻礙&#xff0c;于是再記錄一下吧。 下載MySQL 下載鏈接&#xff1a;MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/…

【lucene】實現knn

在 Lucene 中&#xff0c;可以通過 KnnFloatVectorQuery 和 KnnFloatVectorField 來實現 KNN&#xff08;k-Nearest Neighbors&#xff09;搜索。以下是具體介紹&#xff1a;1. 功能原理KnnFloatVectorQuery 是 Lucene 用于執行最近鄰搜索的查詢類&#xff0c;它可以在一個字段…

RabbitMQ實踐學習筆記

RabbitMQ實踐 以下是關于RabbitMQ實踐的整理,涵蓋常見場景和示例代碼(基于Markdown格式)。內容按模塊分類,避免步驟詞匯,直接提供可操作的方法: 基礎連接與隊列聲明 使用Python的pika庫建立連接并聲明隊列: import pikaconnection = pika.BlockingConnection(pika.C…

量子生成對抗網絡:量子計算與生成模型的融合革命

引言&#xff1a;當生成對抗網絡遇上量子計算在人工智能與量子計算雙重浪潮的交匯處&#xff0c;量子生成對抗網絡&#xff08;Quantum Generative Adversarial Networks, QGAN&#xff09;正成為突破經典算力瓶頸的關鍵技術。傳統生成對抗網絡&#xff08;GAN&#xff09;在圖…

VBA 多個選項,將選中的選項錄入當前選中的單元格

1、使用LISTBOX插件&#xff0c;選中后回車錄入 維護好數據&#xff0c;并新增一個activeX列表框插件 Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Count > 1 Then Exit SubIf Target.Row > 2 And Target.Row < 10 And Target.Column 2…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 主頁-微博點贊量Top6實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解主頁-微博點贊量Top6實現 視頻在線地址&…

SAP調用外部API

SAP需求將中文字符轉化為對應的拼音具體思路,由于sap中沒有將中文字符轉化為拼音的函數或方法類,則以http請求訪問外部服務器發布的API服務,然后獲取其返回值即可1.調用外部網站上提供的api缺點:免費次數有限,后需要充值這里是用www格式的json報文*&----------------------…

(12)機器學習小白入門YOLOv:YOLOv8-cls 模型微調實操

YOLOv8-cls 模型微調實操 (1)機器學習小白入門YOLOv &#xff1a;從概念到實踐 (2)機器學習小白入門 YOLOv&#xff1a;從模塊優化到工程部署 (3)機器學習小白入門 YOLOv&#xff1a; 解鎖圖片分類新技能 (4)機器學習小白入門YOLOv &#xff1a;圖片標注實操手冊 (5)機器學習小…

基于Matlab傳統圖像處理技術的車輛車型識別與分類方法研究

隨著計算機視覺和圖像處理技術的發展&#xff0c;車輛檢測與識別已經成為智能交通系統中的一個重要研究方向。傳統圖像處理方法通過對圖像進行預處理、特征提取、分類與識別&#xff0c;提供了一種無需復雜深度學習模型的解決方案。本研究基于MATLAB平臺&#xff0c;采用傳統圖…

未來趨勢:LeafletJS 與 Web3/AI 的融合

引言 LeafletJS 作為一個輕量、靈活的 JavaScript 地圖庫&#xff0c;以其模塊化設計和高效渲染能力在 Web 地圖開發中占據重要地位。隨著 Web3 和人工智能&#xff08;AI&#xff09;的興起&#xff0c;地圖應用的開發范式正在發生變革。Web3 技術&#xff08;如區塊鏈、去中…

Spring AI 系列之二十一 - EmbeddingModel

之前做個幾個大模型的應用&#xff0c;都是使用Python語言&#xff0c;后來有一個項目使用了Java&#xff0c;并使用了Spring AI框架。隨著Spring AI不斷地完善&#xff0c;最近它發布了1.0正式版&#xff0c;意味著它已經能很好的作為企業級生產環境的使用。對于Java開發者來說…

LFU算法及優化

繼上一篇的LRU算法的實現和講解&#xff0c;這一篇來講述LFU最近使用頻率高的數據很大概率將會再次被使用,而最近使用頻率低的數據,將來大概率不會再使用。做法&#xff1a;把使用頻率最小的數據置換出去。這種算法更多是從使用頻率的角度&#xff08;但是當緩存滿時&#xff0…