最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL集群高可用架構(gòu)的兩種使用小結(jié)

 更新時(shí)間:2025年11月16日 10:31:56   作者:FOLLOW ME311  
本文介紹了MySQL的兩種高可用解決方案:組復(fù)制(MGR)和Master High Availability(MHA),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、MySQL高可用之組復(fù)制(MGR)

1.1 組復(fù)制核心特性與優(yōu)勢(shì)

MySQL Group Replication(MGR)是基于分布式一致性協(xié)議(Paxos)實(shí)現(xiàn)的高可用集群方案,核心特性包括:

  • 自動(dòng)故障檢測(cè)與恢復(fù):集群自動(dòng)檢測(cè)故障節(jié)點(diǎn),并通過(guò)選舉機(jī)制產(chǎn)生新主節(jié)點(diǎn)(單主模式)。
  • 數(shù)據(jù)一致性保障:讀寫事務(wù)需經(jīng)過(guò)集群多數(shù)節(jié)點(diǎn)(>N/2)確認(rèn)后才能提交,避免數(shù)據(jù)分裂。
  • 彈性擴(kuò)展:支持動(dòng)態(tài)添加 / 移除節(jié)點(diǎn),無(wú)需中斷集群服務(wù)。
  • 兩種運(yùn)行模式:?jiǎn)沃髂J剑▋H 1 個(gè)可寫節(jié)點(diǎn))和多主模式(所有節(jié)點(diǎn)可寫)。

1.2 組復(fù)制架構(gòu)原理

組復(fù)制依賴以下核心組件:

  • 組通信系統(tǒng)(GCS):負(fù)責(zé)節(jié)點(diǎn)間消息傳遞(如事務(wù)日志、心跳檢測(cè)),基于 TCP 協(xié)議實(shí)現(xiàn)。
  • 一致性協(xié)議層:采用 Paxos 算法確保事務(wù)在集群中的順序一致性。
  • 事務(wù)驗(yàn)證層:檢測(cè)并發(fā)事務(wù)沖突(多主模式下),避免數(shù)據(jù)不一致。

工作流程簡(jiǎn)述:

(1)主節(jié)點(diǎn)(單主模式)或任意節(jié)點(diǎn)(多主模式)接收寫事務(wù)。

(2)事務(wù)執(zhí)行前生成預(yù)寫日志(WAL),并廣播至集群所有節(jié)點(diǎn)。

(3)所有節(jié)點(diǎn)驗(yàn)證事務(wù)合法性(如無(wú)沖突),并通過(guò)一致性協(xié)議達(dá)成提交順序共識(shí)。

(4)多數(shù)節(jié)點(diǎn)確認(rèn)后,事務(wù)在所有節(jié)點(diǎn)提交,確保全局一致。

1.3 單主模式組復(fù)制實(shí)現(xiàn)(實(shí)戰(zhàn)步驟)

環(huán)境準(zhǔn)備

IP地址server-id
候選主節(jié)點(diǎn)192.168.168.200200
從節(jié)點(diǎn)1192.168.168.129129
從節(jié)點(diǎn)2192.168.168.130

130

步驟1:所有節(jié)點(diǎn)基礎(chǔ)配置(my.cnf)

[mysqld]
# 基礎(chǔ)配置
server-id=200                  # 每個(gè)節(jié)點(diǎn)唯一(200/129/130)
datadir=/data/mysql
socket=/data/mysql/mysql.sock
pid-file=/data/mysql/mysql.pid

# 二進(jìn)制日志與GTID(MGR依賴GTID)
log_bin=/data/mysql/binlog
binlog_format=ROW              # 必須為ROW格式
log_slave_updates=ON           # 從庫(kù)同步的事務(wù)寫入自身binlog
gtid_mode=ON                   # 啟用GTID
enforce_gtid_consistency=ON    # 強(qiáng)制GTID一致性

# 組復(fù)制相關(guān)配置
transaction_write_set_extraction=XXHASH64  # 事務(wù)寫入集提取算法
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"  # 集群UUID(自定義)
loose-group_replication_start_on_boot=OFF  # 不自動(dòng)啟動(dòng)組復(fù)制
loose-group_replication_local_address="192.168.168.200:33061"  # 本節(jié)點(diǎn)組通信端口(每個(gè)節(jié)點(diǎn)修改IP)
loose-group_replication_group_seeds="192.168.168.200:33061,192.168.168.129:33061,192.168.168.130:33061"  # 集群種子節(jié)點(diǎn)
loose-group_replication_bootstrap_group=OFF  # 僅初始化集群時(shí)設(shè)為ON
loose-group_replication_single_primary_mode=ON  # 啟用單主模式

重啟所有節(jié)點(diǎn)使配置生效:

systemctl restart mysqld

步驟2:創(chuàng)建組復(fù)制專用賬戶(所有節(jié)點(diǎn)執(zhí)行)

登錄MySQL,創(chuàng)建用于節(jié)點(diǎn)間通信的賬戶:

-- 創(chuàng)建復(fù)制用戶(允許所有集群節(jié)點(diǎn)訪問(wèn))
CREATE USER 'grp_user'@'192.168.168.%' IDENTIFIED BY 'Grp@123';
-- 授予復(fù)制權(quán)限
GRANT REPLICATION SLAVE ON *.* TO 'grp_user'@'192.168.168.%';
-- 刷新權(quán)限
FLUSH PRIVILEGES;

步驟3:配置復(fù)制通道(所有節(jié)點(diǎn)執(zhí)行)

設(shè)置基于GTID的復(fù)制通道,用于組內(nèi)事務(wù)同步:

-- 停止現(xiàn)有復(fù)制(若有)
STOP REPLICA;

-- 配置組復(fù)制通道
CHANGE REPLICATION SOURCE TO
SOURCE_USER='grp_user',
SOURCE_PASSWORD='Grp@123',
SOURCE_AUTO_POSITION=1
FOR CHANNEL 'group_replication_recovery';

步驟4:安裝組復(fù)制插件(所有節(jié)點(diǎn)執(zhí)行)

-- 安裝組復(fù)制插件
INSTALL PLUGIN group_replication SONAME 'group_replication.so';

-- 驗(yàn)證插件是否安裝成功
SHOW PLUGINS LIKE 'group_replication';

輸出示例(狀態(tài)為ACTIVE表示成功):

+-------------------+----------+--------------------+----------------------+---------+
| Name              | Status   | Type               | Library              | License |
+-------------------+----------+--------------------+----------------------+---------+
| group_replication | ACTIVE   | GROUP REPLICATION  | group_replication.so | GPL     |
+-------------------+----------+--------------------+----------------------+---------+

步驟5:初始化集群(僅在第一個(gè)節(jié)點(diǎn)執(zhí)行)

在 192.168.168.200(候選主節(jié)點(diǎn))上引導(dǎo)集群:

-- 啟動(dòng)集群初始化(僅第一次執(zhí)行)
SET GLOBAL group_replication_bootstrap_group=ON;

-- 啟動(dòng)組復(fù)制
START GROUP_REPLICATION;

-- 關(guān)閉初始化開關(guān)(避免重復(fù)初始化)
SET GLOBAL group_replication_bootstrap_group=OFF;

步驟6:添加其他節(jié)點(diǎn)到集群(129和130節(jié)點(diǎn)執(zhí)行)

-- 啟動(dòng)組復(fù)制,自動(dòng)加入集群
START GROUP_REPLICATION;

步驟7:驗(yàn)證集群狀態(tài)

-- 啟動(dòng)組復(fù)制,自動(dòng)加入集群 START GROUP_REPLICATION;

SELECT * FROM performance_schema.replication_group_members;

輸出示例(單主模式下MEMBER_ROLE為 PRIMARY 的是主節(jié)點(diǎn)):

+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 200e5b9a-732b-11f0-971f-000c29d6adc7 | 192.168.168.200 |        3306 | ONLINE       | PRIMARY     | 8.0.40         |
| group_replication_applier | 129e5b9a-732b-11f0-971f-000c29d6adc7 | 192.168.168.129 |        3306 | ONLINE       | SECONDARY   | 8.0.40         |
| group_replication_applier | 130e5b9a-732b-11f0-971f-000c29d6adc7 | 192.168.168.130 |        3306 | ONLINE       | SECONDARY   | 8.0.40         |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+

1.4 單主模式故障轉(zhuǎn)移測(cè)試

1.模擬主節(jié)點(diǎn)故障:在主節(jié)點(diǎn)(200)執(zhí)行停機(jī)命令:

systemctl stop mysqld

2.查看集群狀態(tài):在從節(jié)點(diǎn)(129)執(zhí)行:

SELECT * FROM performance_schema.replication_group_members;

輸出中會(huì)顯示原主節(jié)點(diǎn)狀態(tài)為UNREACHABLE,約 30 秒后集群自動(dòng)選舉新主(如 129 節(jié)點(diǎn)變?yōu)?PRIMARY)。

3.恢復(fù)原主節(jié)點(diǎn):重啟 200 節(jié)點(diǎn)后,自動(dòng)以從節(jié)點(diǎn)身份加入集群:

systemctl start mysqld

登錄 200 節(jié)點(diǎn)的 MySQL,啟動(dòng)組復(fù)制:

START GROUP_REPLICATION;

再次查看集群狀態(tài),200 節(jié)點(diǎn)角色變?yōu)?SECONDARY。

1.5 多主模式組復(fù)制配置(擴(kuò)展)

多主模式允許所有節(jié)點(diǎn)同時(shí)處理寫事務(wù),適合高并發(fā)寫入場(chǎng)景,配置差異如下:

1.修改所有節(jié)點(diǎn)的my.cnf:

loose-group_replication_single_primary_mode=OFF  # 關(guān)閉單主模式(啟用多主)
loose-group_replication_enforce_update_everywhere_checks=ON  # 強(qiáng)制多主更新檢查

2.重啟節(jié)點(diǎn)并重新初始化集群(參考單主模式步驟5-6):

-- 在第一個(gè)節(jié)點(diǎn)執(zhí)行
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

-- 其他節(jié)點(diǎn)執(zhí)行
START GROUP_REPLICATION;

3.驗(yàn)證多主模式:所有節(jié)點(diǎn)的MEMBER_ROLE均為 PRIMARY:

SELECT MEMBER_HOST, MEMBER_ROLE FROM performance_schema.replication_group_members;

1.6 組復(fù)制監(jiān)控與維護(hù)

1.查看集群健康狀態(tài):

-- 集群成員狀態(tài)
SELECT * FROM performance_schema.replication_group_members;

-- 事務(wù)沖突統(tǒng)計(jì)(多主模式)
SELECT * FROM performance_schema.replication_group_member_stats;

2.動(dòng)態(tài)添加節(jié)點(diǎn):

-- 在新節(jié)點(diǎn)執(zhí)行(參考步驟2-4配置后)
START GROUP_REPLICATION;

3.移除節(jié)點(diǎn):

-- 在待移除節(jié)點(diǎn)執(zhí)行
STOP GROUP_REPLICATION;

4.集群重啟(全部節(jié)點(diǎn)故障后):

-- 在任意一個(gè)節(jié)點(diǎn)重新引導(dǎo)集群
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

-- 其他節(jié)點(diǎn)直接啟動(dòng)
START GROUP_REPLICATION;

總結(jié)

MySQL 組復(fù)制(MGR)通過(guò)分布式一致性協(xié)議實(shí)現(xiàn)了自動(dòng)故障轉(zhuǎn)移和數(shù)據(jù)一致性,單主模式適合讀多寫少場(chǎng)景,多主模式適合高并發(fā)寫入。實(shí)際部署時(shí)需注意:

節(jié)點(diǎn)數(shù)至少 3 個(gè),確保多數(shù)派機(jī)制生效;

網(wǎng)絡(luò)延遲需控制在 100ms 以內(nèi),避免影響事務(wù)提交效率;

定期監(jiān)控集群狀態(tài),及時(shí)處理故障節(jié)點(diǎn)。

結(jié)合業(yè)務(wù)場(chǎng)景選擇合適的高可用架構(gòu),可有效提升 MySQL 集群的穩(wěn)定性和可靠性。

二、MySQL高可用之MHA(Master High Availability)

2.1 MHA核心特性與優(yōu)勢(shì)

MHA 是針對(duì) MySQL 主從復(fù)制架構(gòu)的高可用解決方案,通過(guò)自動(dòng)監(jiān)控主庫(kù)狀態(tài)、實(shí)現(xiàn)故障檢測(cè)與自動(dòng)切換,核心特性包括:

  • 自動(dòng)故障轉(zhuǎn)移:主庫(kù)宕機(jī)后 10-30 秒內(nèi)完成新主庫(kù)選舉與切換。
  • 數(shù)據(jù)一致性保障:通過(guò) binlog 補(bǔ)傳機(jī)制減少數(shù)據(jù)丟失風(fēng)險(xiǎn)。
  • 零數(shù)據(jù)丟失:配合半同步復(fù)制可實(shí)現(xiàn)接近零數(shù)據(jù)丟失。
  • 低侵入性:無(wú)需修改 MySQL 現(xiàn)有配置,兼容各種主從架構(gòu)。
  • 在線切換:支持手動(dòng)觸發(fā)主從切換(如主庫(kù)升級(jí)維護(hù))。

2.2 MHA架構(gòu)原理

MHA 由兩部分組成:

  • MHA Manager:管理節(jié)點(diǎn),負(fù)責(zé)監(jiān)控集群狀態(tài)、觸發(fā)故障轉(zhuǎn)移。
  • MHA Node:部署在所有 MySQL 節(jié)點(diǎn),提供 binlog 復(fù)制、故障檢測(cè)等功能。

故障轉(zhuǎn)移流程

1.監(jiān)控階段:Manager 通過(guò) SSH 定期(默認(rèn) 3 秒)向主庫(kù)發(fā)送 ping 包檢測(cè)存活狀態(tài)。

2.故障確認(rèn):連續(xù) 3 次 ping 失敗后,Manager 通過(guò)其他從庫(kù)確認(rèn)主庫(kù)是否真的宕機(jī)。

3.選舉新主:根據(jù)從庫(kù)的日志同步進(jìn)度(優(yōu)先選擇最接近主庫(kù)的從庫(kù))選舉新主。

4.故障轉(zhuǎn)移:隔離舊主庫(kù)(如關(guān)閉 VIP、防火墻阻斷);提升新主庫(kù)(執(zhí)行reset slave all);其他從庫(kù)指向新主庫(kù)(通過(guò) relay log 補(bǔ)全差異);應(yīng)用層切換至新主庫(kù)(如更新 VIP 指向);

2.3 MHA實(shí)戰(zhàn)部署(單主多從架構(gòu))

環(huán)境準(zhǔn)備

IP地址主機(jī)名
MHA Manager192.168.168.201mha-manager
MySQL 主庫(kù)192.168.168.200master
MySQL 從庫(kù) 1192.168.168.129slave1
MySQL 從庫(kù) 2192.168.168.130slave2

步驟1:配置SSH免密登錄(關(guān)鍵)

MHA Manager 需要免密登錄所有 MySQL 節(jié)點(diǎn),MySQL 節(jié)點(diǎn)間也需要免密互通:

# 在MHA Manager節(jié)點(diǎn)生成密鑰
[root@mha-manager ~]# ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa

# 分發(fā)密鑰到所有節(jié)點(diǎn)(包括自身)
[root@mha-manager ~]# for host in 192.168.168.200 192.168.168.129 192.168.168.130 192.168.168.201; do
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@$host
done

# 驗(yàn)證免密登錄
[root@mha-manager ~]# ssh 192.168.168.200 date

步驟2:安裝MHA軟件

所有節(jié)點(diǎn)安裝MHA Node

# 安裝依賴
[root@master ~]# yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager

# 下載并安裝node包
[root@master ~]# wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.noarch.rpm
[root@master ~]# rpm -ivh mha4mysql-node-0.58-0.el7.noarch.rpm

MHA Manager節(jié)點(diǎn)額外安裝Manager包

[root@mha-manager ~]# wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.noarch.rpm
[root@mha-manager ~]# rpm -ivh mha4mysql-manager-0.58-0.el7.noarch.rpm

步驟3:配置MySQL權(quán)限

在主庫(kù)創(chuàng)建 MHA 專用管理用戶(從庫(kù)會(huì)同步該用戶):

-- 創(chuàng)建管理用戶(用于監(jiān)控和故障轉(zhuǎn)移)
CREATE USER 'mha_admin'@'192.168.168.%' IDENTIFIED BY 'Mha@123';
GRANT ALL PRIVILEGES ON *.* TO 'mha_admin'@'192.168.168.%' WITH GRANT OPTION;

-- 確保主從復(fù)制用戶已存在(參考1.2章節(jié)的rep用戶)
FLUSH PRIVILEGES;

步驟4:配置MHA Manager

創(chuàng)建配置目錄

[root@mha-manager ~]# mkdir -p /etc/mha/mysql_cluster
[root@mha-manager ~]# mkdir -p /var/log/mha/mysql_cluster

編寫集群配置文件

# /etc/mha/mysql_cluster/mha.cnf
[server default]
# 管理用戶
user=mha_admin
password=Mha@123
# 復(fù)制用戶(主從同步用)
repl_user=rep
repl_password=rep123
# 工作目錄
manager_workdir=/var/log/mha/mysql_cluster
# 日志文件
manager_log=/var/log/mha/mysql_cluster/manager.log
# SSH連接端口
ssh_port=22
# MySQL端口
mysql_port=3306
# 檢測(cè)間隔(秒)
ping_interval=3
# 二次檢查的從庫(kù)數(shù)量
secondary_check_script=masterha_secondary_check -s 192.168.168.129 -s 192.168.168.130
# 故障轉(zhuǎn)移后執(zhí)行的腳本(如更新VIP)
master_ip_failover_script=/etc/mha/mysql_cluster/master_ip_failover

[server1]
hostname=192.168.168.200
port=3306
# 主庫(kù)故障后禁止自動(dòng)啟動(dòng)
no_master=1

[server2]
hostname=192.168.168.129
port=3306
# 候選主庫(kù)權(quán)重
candidate_master=1

[server3]
hostname=192.168.168.130
port=3306
candidate_master=1

步驟5:編寫VIP切換腳本

創(chuàng)建master_ip_failover腳本實(shí)現(xiàn)虛擬 IP(VIP)自動(dòng)漂移:

#!/usr/bin/perl
use strict;
use warnings FATAL => 'all';
use Getopt::Long;

my (
    $command,          $ssh_user,        $orig_master_host,
    $orig_master_ip,   $orig_master_port, $new_master_host,
    $new_master_ip,    $new_master_port,  $new_master_user,
    $new_master_password
);

# VIP配置
my $vip = '192.168.168.250/24';
my $key = '0';
my $dev = 'ens33';

GetOptions(
    'command=s'          => \$command,
    'ssh_user=s'         => \$ssh_user,
    'orig_master_host=s' => \$orig_master_host,
    'orig_master_ip=s'   => \$orig_master_ip,
    'orig_master_port=i' => \$orig_master_port,
    'new_master_host=s'  => \$new_master_host,
    'new_master_ip=s'    => \$new_master_ip,
    'new_master_port=i'  => \$new_master_port,
);

exit &main();

sub main {
    print "\n\nIN SCRIPT TEST====$command======\n\n";

    if ( $command eq "stop" || $command eq "stopssh" ) {
        my $exit_code = 1;
        eval {
            print "Disabling VIP on old master: $orig_master_host \n";
            &stop_vip();
            $exit_code = 0;
        };
        if ($@) {
            warn "Got Error: $@\n";
            exit $exit_code;
        }
        exit $exit_code;
    }
    elsif ( $command eq "start" ) {
        my $exit_code = 10;
        eval {
            print "Enabling VIP on new master: $new_master_host \n";
            &start_vip();
            $exit_code = 0;
        };
        if ($@) {
            warn $@;
            exit $exit_code;
        }
        exit $exit_code;
    }
    elsif ( $command eq "status" ) {
        print "Checking the Status of the script.. OK \n";
        exit 0;
    }
    else {
        &usage();
        exit 1;
    }
}

sub start_vip() {
    `ssh $ssh_user\@$new_master_host \"ip addr add $vip dev $dev\"`;
    `ssh $ssh_user\@$new_master_host \"arping -I $dev -c 3 -s $vip 192.168.168.1 > /dev/null 2>&1\"`;
}

sub stop_vip() {
    `ssh $ssh_user\@$orig_master_host \"ip addr del $vip dev $dev\"`;
}

sub usage {
    print
    "Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n";
}

賦予執(zhí)行權(quán)限:

[root@mha-manager ~]# chmod +x /etc/mha/mysql_cluster/master_ip_failover

步驟6:驗(yàn)證MHA環(huán)境

檢查SSH連通性

[root@mha-manager ~]# masterha_check_ssh --conf=/etc/mha/mysql_cluster/mha.cnf

輸出All SSH connection tests passed successfully.表示成功。

檢查主從復(fù)制狀態(tài)

[root@mha-manager ~]# masterha_check_repl --conf=/etc/mha/mysql_cluster/mha.cnf

輸出MySQL Replication Health is OK.表示成功。

步驟7:?jiǎn)?dòng)MHA Manager

# 后臺(tái)啟動(dòng)
[root@mha-manager ~]# nohup masterha_manager --conf=/etc/mha/mysql_cluster/mha.cnf > /var/log/mha/mysql_cluster/manager.log 2>&1 &

# 查看狀態(tài)
[root@mha-manager ~]# masterha_check_status --conf=/etc/mha/mysql_cluster/mha.cnf
mysql_cluster (pid: 1234) is running(0:PING_OK), master:192.168.168.200

2.4 故障轉(zhuǎn)移測(cè)試

1.模擬主庫(kù)故障:在主庫(kù)(200)執(zhí)行關(guān)機(jī)命令

[root@master ~]# systemctl stop mysqld

2.觀察MHA日志:

[root@mha-manager ~]# tail -f /var/log/mha/mysql_cluster/manager.log

日志會(huì)顯示:檢測(cè)到主庫(kù)故障 → 選舉新主(如 129)→ 轉(zhuǎn)移 VIP → 完成切換。

3.驗(yàn)證結(jié)果:

查看VIP是否漂移到新主庫(kù):

[root@slave1 ~]# ip addr show ens33 | grep 192.168.168.250

檢查從庫(kù)是否指向新主:

mysql> show replica status\G

2.5 MHA日常維護(hù)

1.手動(dòng)切換主庫(kù)(如主庫(kù)升級(jí)):

[root@mha-manager ~]# masterha_master_switch --conf=/etc/mha/mysql_cluster/mha.cnf \
--master_state=alive \
--new_master_host=192.168.168.129 \
--new_master_port=3306 \
--orig_master_is_new_slave

2.重啟MHA Manager:

[root@mha-manager ~]# masterha_stop --conf=/etc/mha/mysql_cluster/mha.cnf
[root@mha-manager ~]# nohup masterha_manager --conf=/etc/mha/mysql_cluster/mha.cnf &

3.添加新從庫(kù):配置新從庫(kù)與主庫(kù)同步;修改 mha.cnf 添加新節(jié)點(diǎn)配置;重新檢查并啟動(dòng) MHA;

總結(jié):

MHA 通過(guò)簡(jiǎn)潔的架構(gòu)實(shí)現(xiàn)了 MySQL 主從集群的高可用,適合對(duì)成本敏感且已有主從架構(gòu)的場(chǎng)景。部署時(shí)需注意:

嚴(yán)格配置 SSH 免密登錄(核心前提);

  • 配合半同步復(fù)制減少數(shù)據(jù)丟失;
  • 編寫可靠的 VIP 切換腳本(關(guān)鍵環(huán)節(jié));
  • 定期測(cè)試故障轉(zhuǎn)移流程確??捎眯裕?/li>

根據(jù)業(yè)務(wù)規(guī)模和一致性要求,可選擇 MHA(低成本)、MGR(強(qiáng)一致)或 Percona XtraDB Cluster(高并發(fā))作為高可用解決方案。

到此這篇關(guān)于MySQL集群高可用架構(gòu)的兩種使用小結(jié)的文章就介紹到這了,更多相關(guān)MySQL集群高可用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL索引失效的八大常見場(chǎng)景及解決方法

    MySQL索引失效的八大常見場(chǎng)景及解決方法

    作為一名Java開發(fā)工程師,在處理高并發(fā)業(yè)務(wù)時(shí),MySQL索引失效是導(dǎo)致系統(tǒng)性能下降的"隱形殺手",本文將結(jié)合實(shí)際案例,深度剖析索引失效的8大常見場(chǎng)景,并提供Java代碼層面的優(yōu)化建議,幫助開發(fā)者避開性能陷阱,需要的朋友可以參考下
    2025-05-05
  • mysql更新一個(gè)表里的字段等于另一個(gè)表某字段的值實(shí)例

    mysql更新一個(gè)表里的字段等于另一個(gè)表某字段的值實(shí)例

    下面小編就為大家?guī)?lái)一篇mysql更新一個(gè)表里的字段等于另一個(gè)表某字段的值實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • MySQL中的引號(hào)和反引號(hào)的區(qū)別與用法詳解

    MySQL中的引號(hào)和反引號(hào)的區(qū)別與用法詳解

    這個(gè)問(wèn)題是我在學(xué)習(xí)數(shù)據(jù)庫(kù)的時(shí)候遇到的一個(gè)問(wèn)題,我當(dāng)時(shí)并不能理解下圖中的一些情況,后來(lái)我也請(qǐng)教了一位大佬給我解答,最后在大佬和度娘的幫助下我大概理解了這個(gè)反引號(hào)的東西
    2021-10-10
  • MySQL中的臟讀與幻讀使用及說(shuō)明

    MySQL中的臟讀與幻讀使用及說(shuō)明

    MySQL通過(guò)事務(wù)隔離級(jí)別(如REPEATABLEREAD)和鎖機(jī)制(共享/排他鎖)解決臟讀與幻讀問(wèn)題,結(jié)合MVCC與Next-KeyLocks優(yōu)化并發(fā)一致性,合理配置可平衡性能與數(shù)據(jù)可靠性
    2025-08-08
  • MySQL操作符(and、or、in、not)的具體使用

    MySQL操作符(and、or、in、not)的具體使用

    本文主要介紹了MySQL操作符(and、or、in、not)的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • MySQL中Replace語(yǔ)句用法實(shí)例詳解

    MySQL中Replace語(yǔ)句用法實(shí)例詳解

    mysql的replace函數(shù)是一個(gè)非常方便的替換函數(shù),下面這篇文章主要給大家給大家介紹了關(guān)于MySQL中Replace語(yǔ)句用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • MySQL如何基于Explain關(guān)鍵字優(yōu)化索引功能

    MySQL如何基于Explain關(guān)鍵字優(yōu)化索引功能

    這篇文章主要介紹了MySQL如何基于Explain關(guān)鍵字優(yōu)化索引功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • mysql查詢每小時(shí)數(shù)據(jù)和上小時(shí)數(shù)據(jù)的差值實(shí)現(xiàn)思路詳解

    mysql查詢每小時(shí)數(shù)據(jù)和上小時(shí)數(shù)據(jù)的差值實(shí)現(xiàn)思路詳解

    這篇文章主要介紹了mysql查詢每小時(shí)數(shù)據(jù)和上小時(shí)數(shù)據(jù)的差值,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • mysqldump造成Buffer Pool污染的研究

    mysqldump造成Buffer Pool污染的研究

    mysqldump造成Buffer Pool污染的研究,需要的朋友可以參考下
    2012-10-10
  • mysql數(shù)據(jù)庫(kù)中字段的注釋和類型長(zhǎng)度獲取方式

    mysql數(shù)據(jù)庫(kù)中字段的注釋和類型長(zhǎng)度獲取方式

    這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)中字段的注釋和類型長(zhǎng)度獲取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評(píng)論

汉中市| 武安市| 淅川县| 龙江县| 林芝县| 临沧市| 永济市| 闸北区| 同江市| 林西县| 屏南县| 米林县| 称多县| 玛曲县| 耿马| 郸城县| 甘泉县| 镇坪县| 临朐县| 晋宁县| 嘉峪关市| 辉南县| 佛学| 苏州市| 孟州市| 颍上县| 阜宁县| 黄大仙区| 金川县| 承德市| 安西县| 盐津县| 无锡市| 海淀区| 什邡市| 嵊泗县| 新密市| 东乡| 汤阴县| 旬邑县| 瑞安市|