news 2026/9/1 7:48:55

LNMP架构4——MySQL高可用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LNMP架构4——MySQL高可用

1 mysql路由器

重新开启虚拟机,集群已失效

恢复主节点server25

mysql>SET GLOBALgroup_replication_bootstrap_group=ON;mysql>START GROUP_REPLICATION;mysql>SET GLOBALgroup_replication_bootstrap_group=OFF;


恢复备节点server22和server23

mysql>START GROUP_REPLICATION;mysql>SELECT * FROM performance_schema.replication_group_members;

集群恢复

在server26上部署 MySQL Router,为应用层提供统一的数据库访问入口

[root@server26 ~]# rpm -ivh mysql-router-community-8.0.46-1.el7.x86_64.rpm[root@server26 ~]# cd /etc/mysqlrouter/[root@server26 mysqlrouter]# vim mysqlrouter.conf[root@server26 mysqlrouter]# systemctl enable --now mysqlrouter.service[root@server26 mysqlrouter]# netstat -antlp|grep :7001[root@server26 mysqlrouter]# netstat -antlp|grep :7002

【静态手动路由模式】,不是自动对接 MGR 集群模式。Router 不会自动探测主从切换,节点宕机不会自动剔除,7001端口只读,7002端口读写


主节点server25添加用户zxl,用于测试机server26远程访问mysql

mysql>create user'zxl'@'%'identified by'123456';mysql>grant all on test.* to'zxl'@'%';

给server26安装mysql
从server25复制

[root@server25 ~]# systemctl stop mysqld.service[root@server25 ~]# cd /usr/local[root@server25 local]# scp -rp mysql server26:/usr/local/

server26

[root@server26 mysqlrouter]# groupadd -g 1005 mysql[root@server26 mysqlrouter]# useradd -u 1004 -g mysql -M -d /usr/local/mysql/ -s /sbin/nologin mysql[root@server26 mysqlrouter]# mkdir -p /data/mysql[root@server26 mysqlrouter]# mkdir /etc/mysql[root@server26 mysqlrouter]# chown -R mysql.mysql /data/mysql[root@server26 mysqlrouter]# vim ~/.bash_profile[root@server26 mysqlrouter]# source ~/.bash_profile[root@server26 mysqlrouter]# which mysql/usr/local/mysql/bin/mysql

至此mysql已安装好,server26可以访问集群中的数据

[root@server26 mysqlrouter]# mysql -h 192.168.40.146 -u zxl -P 7001 -p123456mysql>show databases;mysql>select* from test.t1;


启动组复制,查询集群成员状态

[root@server25 local]# mysql -p123456mysql>START GROUP_REPLICATION;mysql>SELECT * FROM performance_schema.replication_group_members;

集群中的机器均安装lsof服务,用于验证 MySQL Router 是否成功工作

yuminstall-ylsof

在 server26 本机上,通过 MySQL Router 的 7001 端口,连接到后端的 MySQL 数据库集群

[root@server26 mysqlrouter]# mysql -h 192.168.40.146 -u zxl -P 7001 -p123456

server26 上的 MySQL Router 收到了连接请求,并且它成功地将该请求转发到了后端的 server22 这个数据库节点。连接状态为 ESTABLISHED,说明连接已经建立,可以进行数据交互

同理,可以访问 7002 端口

[root@server26 mysqlrouter]# mysql -h 192.168.40.146 -u zxl -P 7002 -p123456

2 InnoDB Cluster

InnoDB Cluster 是 MySQL 官方提供的一套完整的高可用解决方案。它通过将多个 MySQL 服务器实例组合成一个集群,提供自动故障转移、数据复制和读写分离等功能。

InnoDB Cluster 主要由以下三个核心组件构成:

  1. MySQL 服务器 (MySQL Server):
    这是集群的基础,至少需要 3 个 MySQL 服务器实例。
    通常采用单主模式,即一个实例作为主节点(Primary) 处理读写请求,其余作为从节点(Secondary) 处理只读请求,并复制主节点的数据。
    也可以配置为多主模式,所有实例均可读写。

  2. MySQL Group Replication:
    这是 InnoDB Cluster 的核心技术引擎。
    它基于共识算法(如 Paxos)提供数据复制、自动成员资格管理和自动故障转移功能。
    当主节点发生故障时,集群会自动从从节点中选举一个新的主节点,对应用透明。

  3. MySQL Router:
    这是一个轻量级的中间件,作为应用程序和数据库集群之间的“路由器”。
    它了解集群的拓扑结构,并自动将读写请求路由到当前的主节点,将只读请求分发到从节点。
    当主节点发生故障切换时,Router 能自动感知并将请求路由到新的主节点,从而实现应用层的无缝切换。

优势

  1. 高可用性 (High Availability):通过自动故障转移和容错机制,确保服务持续可用。

  2. 易用性 (Ease of Use):通过 MySQL Shell 的 AdminAPI 可以轻松部署和管理,避免复杂的手动配置。

  3. 透明路由 (Transparent Routing):MySQL Router 让应用程序无需感知后端集群的复杂拓扑和变化。

  4. 读写分离 (Read/Write Splitting):将读和写操作分发到不同的实例,提升整体性能。

2.1 配置mgr单主模式

修改配置文件,切换单主模式

[root@server25 ~]# vim /etc/mysql/my.cnf[root@server25 ~]# systemctl restart mysqld.service


用引导模式“强行”建立一个新组,使主节点恢复为 primary

[root@server25 ~]# mysql -p123456mysql>SELECT * FROM performance_schema.replication_group_members;#此时看到集群已经失效mysql>SET GLOBALgroup_replication_bootstrap_group=ON;mysql>START GROUP_REPLICATION;mysql>SET GLOBALgroup_replication_bootstrap_group=OFF;mysql>SELECT * FROM performance_schema.replication_group_members;


server22和server23重新启动集群即可,恢复为secondary

[root@server22 ~]# mysql -p123456mysql>START GROUP_REPLICATION;mysql>SELECT * FROM performance_schema.replication_group_members;

此时已经改为单主模式

2.2 mysql shell

MySQL Shell(mysqlsh)是官方推出的新一代高级命令行客户端和代码编辑器,可以看作是传统 mysql 命令的增强版。

核心能力

  1. 多语言编程支持:可以在同一个工具中使用 SQL、JavaScript 和 Python 编写脚本,非常适合编写复杂的自动化运维任务。

  2. 强大的 AdminAPI:通过 AdminAPI,你可以使用简单的 JavaScript 或 Python 命令来创建、配置和管理 InnoDB Cluster、InnoDB ClusterSet 和 InnoDB ReplicaSet,大大简化了高可用集群的运维工作。

  3. 现代化的交互体验:提供更友好的命令行界面,包括语法高亮、智能的 TAB 键自动补全以及历史命令记录(\history),能显著提升工作效率。

安装

[root@server26 ~]# yum install -y mysql-shell-8.0.46-1.el7.x86_64.rpm

在primary节点创建集群管理员

mysql>CREATEUSERicadmin@'%'IDENTIFIED BY'123456';mysql>GRANT ALL PRIVILEGES ON *.* TO icadmin@'%'WITH GRANT OPTION;mysql>FLUSH PRIVILEGES;

接管现有mgr集群

[root@server26 ~]# mysqlsh icadmin@192.168.40.145:3306var cluster=dba.createCluster("mgr_single_cluster",{adoptFromGR:true, force:true});cluster.status();#验证集群状态CTRL+D退出

2.3 mysql router

自动生成配置

[root@server26 ~]# mysqlrouter --bootstrap icadmin@192.168.40.145:3306 --user=mysqlrouter[root@server26 ~]# systemctl restart mysqlrouter.service[root@server26 ~]# mysql -h 192.168.40.146 -u zxl -P 6446 -p123456

连接 6446 端口 时,Router 会将其路由到 InnoDB Cluster 的 主库(Primary) ,可以读写。

连接 6447 端口 时,Router 会将其路由到 从库(Secondary),只读。

主节点查看

此时停掉主节点server25的服务,备节点仍可工作,并推选出一个新的主节点server22,恢复服务,原来的主节点变为备节点

2.4 mysql router 高可用与横向扩容

可以搭配keepalived、lvs 实现mysqlrouter 高可用与横向扩容
新加入四台虚拟机
server26、server27做路由器
server28、server29做LVS
分别将七台机器的IP都加入解析文件

第一层均衡:LVS(server28 & server29)
作用:提供 VIP(虚拟IP) 和 负载均衡。

将客户端发往 VIP 的连接,按照轮询(rr)算法,分发到后端的多个 MySQL Router 实例(server26 和 server27),实际就是对路由器实现负载均衡。

实现 Router 层的高可用和负载分担。如果 server26 宕机,LVS 会自动将流量全部切到 server27;同时,两个 Router 共同承担连接压力。

第二层路由:MySQL Router(server26 & server27)
作用:读写分离和故障感知。

发往 7001 端口的连接,Router 会全部路由到当前 MGR 集群的 primary 节点(server25)。

发往 7002 端口的连接,Router 会根据负载均衡策略将连接分发到多个 secondary 节点(server22、server23)。这里实现了读请求的负载均衡。

7001(读写端口):保证写入一致性,所有写操作必须由主库处理。
7002(只读端口):将查询压力分散到多个从库,提升整体吞吐量。

第三层数据层:MGR(server25、22、23)—— 保障“数据一致性”
作用:数据存储和高可用。
目的:主库故障时,从库自动升级为主库,保证数据不丢失,服务可持续。

2.4.1 路由器部署

[root@server27 ~]# yum install -y mysql-router-community-8.0.46-1.el7.x86_64.rpm

时间同步

systemctl restart chronyd

安装mysql或mariadb进行测试

[root@server26 ~]# scp -rp /usr/local/mysql server27:/usr/local/
[root@server27 ~]# vim .bash_profile #将mysql路径写入[root@server27 ~]# source .bash_profile[root@server27 ~]# which mysql[root@server27 ~]# mysqlrouter --bootstrap icadmin@192.168.40.142:3306 --user=mysqlrouter[root@server27 ~]# systemctl restart mysqlrouter.service[root@server27 ~]# mysql -h 192.168.40.146 -P 6446 -u zxl -p123456


测试:可以远程访问数据库

2.4.2 LVS部署

server28、server29

yuminstall-yinstallkeepalived.x86_64 yuminstall-yipvsadm
主节点部署
[root@server28 ~]# vim /etc/keepalived/keepalived.conf[root@server28 ~]# systemctl enable --now keepalived.service

自动绑定VIP

备节点部署

配置文件拷贝到备节点

[root@server28 ~]# scp /etc/keepalived/keepalived.conf server29:/etc/keepalived/

设置为备用节点,优先级低于主节点,不会自动接管VIP

[root@server29 ~]# vim /etc/keepalived/keepalived.conf[root@server29 ~]# systemctl enable --now keepalived.service


查看当前生效的负载均衡规则表

ipvsadm-ln

在 MySQL Router 节点上,通过 arptables 实现 LVS DR 模式的 ARP 抑制和 VIP 绑定

server26

[root@server26 ~]# yum install -y arptables[root@server26 ~]# ip a a 192.168.40.100/24 dev eth0[root@server26 ~]# arptables -A INPUT -d 192.168.40.100 -j DROP[root@server26 ~]# arptables -A OUTPUT -s 192.168.40.100 -j mangle --mangle-ip-s 192.168.40.176[root@server26 ~]# arptables-save > /etc/sysconfig/arptables[root@server26 ~]# systemctl restart arptables.service


server27

[root@server27 ~]# ip a a 192.168.40.100/24 dev eth0[root@server27 ~]# arptables -A INPUT -d 192.168.40.100 -j DROP[root@server27 ~]# arptables -A OUTPUT -s 192.168.40.100 -j mangle --mangle-ip-s 192.168.40.177[root@server27 ~]# arptables-save > /etc/sysconfig/arptables[root@server27 ~]# systemctl restart arptables.service


在server29测试:可通过VIP访问数据库

[root@server29 ~]# yum install -y mariadb[root@server29 ~]# mysql -h 192.168.40.100 -P 6446 -u zxl -p123456

测试
  • 测试 Keepalived 的 VIP 漂移机制

server28停止keepalived服务,VIP自动从server28解绑,绑定到server29

恢复server28,VIP自动切换回server28

  • 测试 MySQL Router 层的高可用和自动故障恢复机制,以及 LVS(或 Router 内部)对故障节点的剔除与恢复策略
  1. 访问6446端口,指向主库

可以在除了LVS的主节点以外的机器上执行,从 Master 节点访问 VIP,请求不一定经过 LVS,可能会直接由本机处理

mysql-h192.168.40.100-P6446-uzxl-p123456

server25与主备路由器都建立

server22和server23无连接

停掉26的mysqlrouter再访问

[root@server26 ~]# systemctl stop mysqlrouter.service

server25只与server27有连接

恢复服务,重新与server26建立连接,但是建立的 TCP 连接是持久的,已有的连接不会立即切回,保持连接到 server27

过一段时间,没有持续的新连接请求产生,且已有的短连接执行完毕后自然关闭

再次访问

mysql-h192.168.40.100-P6446-uzxl-p123456

有新的连接,由于负载均衡的配置,此次连接上server26

此时查看调度器,26有一条新的TCP连接

  1. 访问6447端口,指向从库
mysql-h192.168.40.100-P6447-uzxl-p123456

此时主库server25无连接

从库server22和server23连接均衡


若遇以下问题:Router 多次握手 / 连接异常,超过 MySQL 参数 max_connect_errors 阈值,数据库直接拉黑 Router 的 IP,拒绝它继续发起连接。

可在集群的三个节点中执行以下语句临时解锁

mysqladmin-uroot-pflush-hosts

3 MHA高可用

MHA高可用和 InnoDB Cluster(基于 MGR)是两种不同的高可用实现路径。

MHA 本身并不改变 MySQL 主从复制的架构,而是作为一套管理工具,运行在主从集群之上。它通过 SSH 连接到各个数据库节点,执行一系列脚本来实现高可用。

核心组件:

  1. MHA Manager(管理节点):通常部署在一台独立服务器上,是集群的“大脑”,负责监控主库、发起和执行故障切换。

  2. MHA Node(数据节点):部署在每台 MySQL 服务器上,接收 Manager 的指令并执行具体操作,比如保存日志、应用差异数据等。

工作原理:当主库宕机时

  1. 监控与发现:Manager 节点会持续监控主库的健康状态。一旦发现主库无法连接(例如连续几次心跳失败),就判定主库发生故障。

  2. 尽力抢救数据:MHA 会尝试通过 SSH 登录到故障的主库,尽力把主库上最新的二进制日志(binlog)复制出来,以防数据丢失。

  3. 选举新主库:Manager 会检查所有从库,根据数据更新的程度(哪个从库的 Exec_Master_Log_Pos 最大),选举出数据最新的从库作为新主库的候选者。

  4. 数据补齐与切换:如果上一步成功抢救了主库的 binlog,MHA 会把这些日志应用到候选新主库上,确保其数据是最新的。接着,MHA 会让其他从库与这个新主库建立复制关系。最后,通过脚本或与 Keepalived 等工具配合,将虚拟 IP(VIP)漂移到新的主库上,对上层应用屏蔽切换过程。

3.1 创建一主两从集群

3.1.1 master配置

清理数据

[root@server25 ~]# systemctl stop mysqld.service[root@server25 ~]# cd /data/mysql/[root@server25 mysql]# rm -fr *

修改配置

[root@server25 mysql]# vim /etc/mysql/my.cnf

注意:这里要保证集群里每个节点的server_id不同

初始化并启动服务

[root@server25 mysql]# mysqld --defaults-file=/etc/mysql/my.cnf --initialize[root@server25 mysql]# grep temporary mysql-error.log[root@server25 mysql]# systemctl start mysqld.service

配置master

[root@server25 mysql]# mysql -pmysql>alter user root@localhost identified by'123456';mysql>CREATEUSER'repl'@'%'IDENTIFIED WITH mysql_native_password BY'123456';mysql>GRANT REPLICATION SLAVE ON *.* TO'repl'@'%';mysql>show master status;

3.1.2 slave配置

server22

[root@server22 ~]# systemctl stop mysqld.service[root@server22 ~]# cd /data/mysql/[root@server22 mysql]# rm -fr *[root@server22 mysql]# vim /etc/mysql/my.cnf

[root@server22 mysql]# mysqld --defaults-file=/etc/mysql/my.cnf --initialize[root@server22 mysql]# grep temporary mysql-error.log[root@server22 mysql]# systemctl start mysqld.service[root@server22 mysql]# mysql -pmysql>alter user root@localhost identified by'123456';mysql>CHANGE MASTER TOMASTER_HOST='192.168.40.145',MASTER_USER='repl',MASTER_PASSWORD='123456', MASTER_AUTO_POSITION=1;mysql>start slave;mysql>show slave status\G;


server23

[root@server23 ~]# systemctl stop mysqld.service[root@server23 ~]# cd /data/mysql/[root@server23 mysql]# rm -fr *[root@server23 mysql]# vim /etc/mysql/my.cnf

[root@server23 mysql]# mysqld --defaults-file=/etc/mysql/my.cnf --initialize[root@server23 mysql]# grep temporary mysql-error.log[root@server23 mysql]# systemctl start mysqld.service[root@server23 mysql]# mysql -pmysql>alter user root@localhost identified by'123456';mysql>CHANGE MASTER TOMASTER_HOST='192.168.40.145',MASTER_USER='repl',MASTER_PASSWORD='123456', MASTER_AUTO_POSITION=1;mysql>start slave;mysql>show slave status\G;

3.2 MHA部署

server26做管理端
删除server26下所有文件,将如下四个rpm包放在/root

复制客户端软件并安装

[root@server26 ~]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server25:[root@server26 ~]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server22:[root@server26 ~]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server23:
[root@server25 ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@server22 ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@server23 ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm

server26安装管理端软件

[root@server26 ~]# yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm mha4mysql-node-0.58-0.el7.centos.noarch.rpm

缺少四个依赖模块

[root@server26 ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo[root@server26 ~]# yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm mha4mysql-node-0.58-0.el7.centos.noarch.rpm

MHA配置

[root@server26 ~]# mkdir /etc/masterha[root@server26 ~]# vim /etc/masterha/app1.cnf

在master上设置mysql 管理员权限,slave节点会自动同步

[root@server25 ~]# mysql -p123456mysql>CREATEUSER'root'@'%'IDENTIFIED WITH mysql_native_password BY'123456';mysql>GRANT ALL PRIVILEGES ON *.* TO root@'%'WITH GRANT OPTION;

管理端配置ssh免密

[root@server26 ~]# ssh-keygen[root@server26 ~]# ssh-copy-id server26[root@server26 ~]# scp -r .ssh/ server25:[root@server26 ~]# scp -r .ssh/ server22:[root@server26 ~]# scp -r .ssh/ server23:

检测各节点ssh免密连接

[root@server26 ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf


检测主从复制集群状态

[root@server26 ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf

3.3 故障切换

3.3.1 手动切换正常节点

当前主节点在server25,状态正常,手动切换到server22

[root@server26 ~]# masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=192.168.40.142 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000


server22变成主库

server25和server23是从库

3.3.2 手动切换故障节点

此时主节点为server22
手动停止master节点上的msql服务,模拟故障

[root@server22 ~]# systemctl stop mysqld.service

将server25切换为主库

[root@server26 ~]# masterha_master_switch --master_state=dead --conf=/etc/masterha/app1.cnf --dead_master_host=192.168.40.142 --dead_master_port=3306 --new_master_host=192.168.40.145 --new_master_port=3306 --ignore_last_failover


查看主库状态

查看正常的从库状态

手动恢复故障节点

[root@server22 ~]# systemctl start mysqld.service[root@server22 ~]# mysql -p123456mysql>change master tomaster_host='192.168.40.145',master_user='repl',master_password='123456',master_auto_position=1;mysql>start slave;mysql>show slave status\G;

3.3.3 自动切换

故障切换后会生成lock文件,需要手动删除

[root@server26 ~]# cd /etc/masterha/[root@server26 masterha]# cd app1/[root@server26 app1]# lsapp1.failover.complete[root@server26 app1]# rm -f app1.failover.complete

在进行自动切换之前,必须保证主从集群正常,一主两从
加入故障切换脚本

[root@server26 app1]# cd[root@server26 ~]# vim /etc/masterha/app1.cnf


编辑项目开始前加入的脚本

master_ip_failover是 MHA 在故障切换过程中调用的关键脚本之一,其核心功能是管理 VIP 的漂移

[root@server26 ~]# mv master_ip_* /etc/masterha/[root@server26 ~]# cd /etc/masterha/[root@server26 masterha]# chmod +x master_ip_*[root@server26 masterha]# vim master_ip_failover


master_ip_online_change是 MHA 用于在线手动切换的脚本,也将VIP写入

[root@server26 masterha]# vim master_ip_online_change


启动manger程序,并打入后台运行

[root@server26 masterha]# masterha_manager --conf=/etc/masterha/app1.cnf &[root@server26 masterha]# ps aux | grep masterha_manager


查看

测试:
停掉主节点的mysql服务模拟故障

[root@server25 ~]# systemctl stop mysqld.service

自动切换主节点到server22


完成切换任务后manager进程会自动退出,防止二次切换

查看故障切换日志

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 7:47:56

Flickr元数据批量抓取实战:基于开放API与异步编程构建数据管道

简介:FlickrMetaCrawlr 是一套基于 Java 的 Flickr 元数据采集工具,主要面向需要批量获取 Flickr 照片及用户信息的开发者与数据分析人员。它借助 Flickr 开放 API,可按标签、边界框和时间范围筛选照片元数据,并可将结果上传至传感…

作者头像 李华
网站建设 2026/9/1 7:46:27

从流量到留量:GEO代理如何重塑全国商业生态?

随着AI搜索成为新一代流量入口,各地商业生态正在经历深刻的重构。GEO代理加盟不仅仅是销售一套AI优化工具,更是通过技术手段帮助企业实现从“流量”到“留量”的跨越,从而区域市场中建立起强大的商业影响力。 一、精准触达,重构本…

作者头像 李华
网站建设 2026/9/1 7:45:56

修复druid连接池漏洞

针对 的未授权访问漏洞,这里提供两种主流的解决方案: 方案一:完全关闭监控页面:最简单直接的修复方式,可彻底消除此漏洞带来的安全风险。方案二:保留功能,配置访问密码:在保留监控能…

作者头像 李华
网站建设 2026/9/1 7:45:47

基于HLS的MNIST神经网络在Zynq7020 FPGA上的硬件加速实现

简介:手写数字识别神经网络FPGA加速设计工程包,面向具备HLS与FPGA基础的开发者,解决MNIST模型在Zynq 7020 SoC平台上的硬件实现问题。项目基于Vivado HLS工具,将神经网络算法转换为硬件逻辑,流程覆盖数据预处理、网络结…

作者头像 李华
网站建设 2026/9/1 7:44:47

极核APP自定义壁纸背景变白BUG排查与高效设置方案

1. 这篇文章真正要解决的问题 如果你正在使用极核APP,并且被它的自定义壁纸功能折磨得够呛,那么这篇文章就是为你写的。你可能已经遇到了那个令人抓狂的BUG:精心挑选的图片设置后,背景却变成一片刺眼的白,什么也看不见…

作者头像 李华
网站建设 2026/9/1 7:44:32

BCM943602CS在Windows 10下的驱动安装与蓝牙调试全指南

简介:面向 Windows 10 x64 环境下使用 BCM943602CS 苹果原装网卡的用户,这份驱动整合包用于解决无线 Wi-Fi 与蓝牙无法识别、驱动缺失或安装失败等常见问题,尤其适合黑苹果用户或改装机型在 Windows 下恢复网卡完整功能。包内共 153 个文件&a…

作者头像 李华