Windows Server 2019 双机热备与 SQL Server 2019 群集部署实战
简介这份图文教程面向需要在 Windows Server 2019 环境下搭建高可用数据库的运维工程师与系统管理员围绕 MSCS 故障转移群集与 SQL Server 2019 群集部署展开解决单节点故障导致业务中断的问题。资源共 1 个 PDF 文件压缩包约 4.94MB文档共 71 页以截图配文字的方式逐步讲解涵盖域控制器搭建、节点服务器配置、心跳网卡与 DNS 设置、故障转移群集安装、SQL Server 2019 群集安装及运行测试等完整流程并附有虚拟机三节点模拟环境的 IP 与主机名配置示例。目前已有 5502 人学习下载适合希望掌握双机热备与群集排错思路的中高级读者对照实操也可作为企业内部高可用架构落地的参考手册。1. Windows Server 2019 双机热备与 SQL Server 2019 群集部署为什么值得做以及它到底在解决什么生产库里最怕的不是慢查询而是单点。一台物理机或虚拟机上的 SQL Server 2019 实例只要宿主、存储、网卡、系统盘任意一环出问题业务就整体停摆。Windows Server 2019 自带的 MSCSMicrosoft Cluster Service故障转移群集配合 SQL Server 2019 的 Always On 故障转移群集实例FCI做的就是把「单实例」变成「多节点共享一份数据、对外只暴露一个虚拟 IP 和虚拟网络名」的双机热备方案。客户端连接串不用改节点挂了自动在另一台拉起RTO 通常在一分钟级别RPO 取决于共享存储本身。这套方案适合中小规模、预算有限、又要求数据库高可用的场景也是很多运维从「会装 SQL Server」跨到「会做数据库高可用」的第一道门槛。下面按选型、环境、部署、验证、避坑的顺序把能复现的步骤和参数讲透。2. 部署前的选型与前置条件MSCS 和 SQL Server 2019 FCI 到底怎么配2.1 先分清 FCI 和 Always On 可用性组别选错很多人一上来就说「我要做双机热备」但没分清两种形态。FCIFailover Cluster Instance是实例级高可用两个节点共享同一份存储同一时刻只有一个节点持有实例故障时整个实例漂移过去对外是同一个虚拟网络名和虚拟 IP。Always On 可用性组AG是数据库级每个节点各自有独立存储靠日志传输同步可以读写分离。标题里写的是「MSCS 下 SQL Server 2019 群集部署」指的就是 FCI 这条路。选 FCI 的理由很直接应用连接串完全不用动共享存储保证数据只有一份不存在同步延迟导致的数据分歧。代价是共享存储本身成了新的单点所以生产上共享存储一般也要做 RAID 或双控。如果预算只够两台机器、没有共享存储那应该考虑 AG 而不是 FCI这是选型阶段最容易翻车的地方。2.2 硬件、系统与网络的前置清单在动手之前把下面这些条件逐条确认缺一条后面都会卡住。项目要求说明节点数量2 台双机热备最小规模操作系统Windows Server 2019 数据中心版标准版对群集节点数有限制数据中心版更稳SQL Server2019 企业版FCI 需要企业版标准版只支持 2 节点但功能受限共享存储iSCSI / FC / SAN两节点必须能同时看到同一 LUN网卡每节点至少 2 块一块业务心跳一块 iSCSI建议物理隔离域环境必须加入 AD 域MSCS 强依赖域账户和 DNS账户域管理员或委派权限创建群集和 SQL 服务账户都需要网络规划上我一般会分三个网段业务网客户端访问虚拟 IP、心跳网节点间私有通信、存储网iSCSI 流量。心跳网不要和业务网共用否则大流量查询会把心跳包挤掉导致节点误判对方下线触发不必要的故障转移这是最典型的「玄学漂移」来源。2.3 域账户和 DNS 记录的准备MSCS 需要一个域账户来运行群集服务SQL Server 2019 FCI 还需要一个独立的域账户跑 SQL 服务。建议提前建好两个账户比如domain\clustersvc和domain\sqlsvc密码设置成永不过期避免某天密码到期导致群集服务起不来。DNS 方面群集的虚拟网络名CNOCluster Name Object和 SQL 的虚拟网络名VNN都需要在 DNS 里有对应记录通常由群集服务自动注册。如果 DNS 是手动管理的要提前留好 A 记录的位置否则创建群集时会报「无法更新 DNS 记录」。3. 搭建 MSCS 故障转移群集从加域到验证的完整步骤3.1 安装故障转移群集功能并配置 iSCSI 共享存储两台节点分别执行下面的 PowerShell安装群集和 iSCSI 发起程序功能。# 在两台节点上分别执行 Install-WindowsFeature -Name Failover-Clustering, Multipath-IO -IncludeManagementTools Install-WindowsFeature -Name FS-iSCSITarget-Server -IncludeManagementTools # 仅存储服务器需要 # 启动 iSCSI 发起程序服务 Set-Service -Name MSiSCSI -StartupType Automatic Start-Service -Name MSiSCSI逻辑说明Failover-Clustering是 MSCS 的核心功能Multipath-IO用于多路径存储避免单条 iSCSI 链路故障。FS-iSCSITarget-Server只在你要把某台机器当存储服务器时才装如果用的是独立 SAN 或 NAS这一步跳过。参数说明-IncludeManagementTools会一并装上图形化管理工具方便后面用cluadmin.msc排查。装完必须重启否则群集服务无法注册。存储侧在 iSCSI 目标端划一个 LUN比如 500GB然后在两台节点上用iscsicpl.exe连接。连接时勾选「启用多路径」和「将此连接添加到收藏目标列表」保证重启后自动重连。连上之后在磁盘管理里会看到一块「脱机」的磁盘先不要初始化等群集创建时由群集接管。3.2 用 PowerShell 创建群集并加入第二节点第一台节点上执行创建第二台节点执行加入。# 在节点1上创建群集 New-Cluster -Name SQLCLUSTER -Node Node1,Node2 -StaticAddress 10.10.1.100 -NoStorage # 验证群集状态 Get-Cluster -Name SQLCLUSTER | Format-List Name, Status, Nodes # 把共享磁盘加入群集 Get-ClusterAvailableDisk -Cluster SQLCLUSTER | Add-ClusterDisk逻辑说明New-Cluster一次性把两个节点都加进去-StaticAddress指定群集的虚拟 IP这个 IP 必须和业务网同网段且未被占用。-NoStorage表示先不自动纳管存储等群集建好后再手动加避免存储没准备好导致创建失败。参数说明-Name是群集的虚拟网络名后面 SQL Server 安装时会用到。Get-ClusterAvailableDisk会列出所有对两个节点都可见、但还没被群集纳管的磁盘Add-ClusterDisk把它们加进来。加进来之后磁盘会变成「群集磁盘」在磁盘管理里显示为「保留」。创建完成后用Test-Cluster做一次验证重点看存储、网络、系统配置三项有没有警告。存储的「磁盘仲裁」警告通常可以忽略但网络的「只有一块网卡」警告必须处理否则后面心跳会出问题。3.3 配置群集仲裁和心跳网络双节点群集默认用「节点多数」仲裁但更稳的做法是加一个文件共享见证或磁盘见证。# 查看当前仲裁配置 Get-ClusterQuorum -Cluster SQLCLUSTER # 设置磁盘见证如果有共享磁盘 Set-ClusterQuorum -Cluster SQLCLUSTER -DiskWitness Cluster Disk 1 # 或者设置文件共享见证 Set-ClusterQuorum -Cluster SQLCLUSTER -FileShareWitness \\fileserver\witness逻辑说明仲裁决定群集在节点失联时如何判断哪边是「多数派」。双节点场景下如果没有见证两个节点互相看不到对方时会同时认为自己是唯一存活节点导致「脑裂」。加见证后能联系到见证的节点获胜另一方自动下线。参数说明-DiskWitness指定一块共享磁盘作为见证这块盘不能用来存数据。-FileShareWitness指定一个网络共享路径适合没有额外共享磁盘的场景。文件共享见证的路径必须对两个节点的计算机账户都有读写权限。心跳网络方面在群集管理器里把心跳网卡的「允许群集通信」勾上业务网卡也勾上但把心跳网卡的优先级调高。如果心跳网卡是独立网段可以在网卡属性里取消「Microsoft 网络客户端」和「文件和打印机共享」只保留「Internet 协议版本 4」减少无关流量。4. 在 MSCS 上安装 SQL Server 2019 群集实例参数与顺序都不能错4.1 安装前的账户与权限确认SQL Server 2019 FCI 安装必须用域账户且这个账户要对两个节点都有本地管理员权限安装时临时需要装完可以降权。提前在 AD 里建好domain\sqlsvc密码永不过期。另外确认两件事一是共享磁盘已经加入群集并且处于「联机」状态二是群集的虚拟网络名和虚拟 IP 已经能 ping 通。如果这两条不满足安装程序会在「群集网络名称」这一步直接报错。4.2 用命令行执行静默安装图形界面安装容易在「群集磁盘选择」那一步选错我一般用命令行参数明确、可复现。# 在节点1上执行安装 SQL Server 2019 FCI Setup.exe /Q /ACTIONInstallFailoverCluster /FEATURESSQLENGINE,IS \ /INSTANCENAMEMSSQLSERVER /SQLSVCACCOUNTdomain\sqlsvc /SQLSVCPASSWORDYourPassword \ /SQLSYSADMINACCOUNTSdomain\sqladmin /AGTSVCACCOUNTdomain\sqlsvc /AGTSVCPASSWORDYourPassword \ /FAILOVERCLUSTERNETWORKNAMESQLVNN /FAILOVERCLUSTERIPADDRESSESIPv4;10.10.1.101;Cluster Network 1;255.255.255.0 \ /FAILOVERCLUSTERDISKSCluster Disk 2 /INSTALLSQLDATADIRS:\MSSQL \ /UPDATEENABLEDFalse /IACCEPTSQLSERVERLICENSETERMS逻辑说明/ACTIONInstallFailoverCluster告诉安装程序这是群集实例安装不是独立实例。/FAILOVERCLUSTERNETWORKNAME是 SQL 对外暴露的虚拟网络名客户端连接串里写的就是这个名字。/FAILOVERCLUSTERIPADDRESSES指定虚拟 IP格式是「协议;IP;网络名;子网掩码」。参数说明/FAILOVERCLUSTERDISKS指定 SQL 数据要放在哪块群集磁盘上这里填的是磁盘在群集里的资源名不是盘符。/INSTALLSQLDATADIR是数据目录建议单独放一块盘不要和系统盘混用。/UPDATEENABLEDFalse关掉自动更新避免安装过程中被 Windows Update 打断。节点1装完后在节点2上执行AddNodeSetup.exe /Q /ACTIONAddNode /INSTANCENAMEMSSQLSERVER \ /SQLSVCACCOUNTdomain\sqlsvc /SQLSVCPASSWORDYourPassword \ /AGTSVCACCOUNTdomain\sqlsvc /AGTSVCPASSWORDYourPassword \ /IACCEPTSQLSERVERLICENSETERMS逻辑说明AddNode只装二进制文件和群集资源不碰数据所以速度比节点1快很多。执行前确认节点2能访问共享磁盘且群集服务正在运行。4.3 安装后的服务账户与依赖检查装完后打开群集管理器在「角色」里应该能看到一个「SQL ServerMSSQLSERVER」角色包含网络名称、IP 地址、磁盘、SQL Server 服务、SQL Agent 服务等资源。逐个检查依赖关系特别是「SQL Server 服务」依赖「网络名称」和「磁盘」如果依赖顺序错了故障转移时会卡住。服务账户方面确认 SQL Server 和 SQL Agent 都用的是domain\sqlsvc不要用 LocalSystem。用 LocalSystem 的话故障转移后新节点上的服务账户权限可能不一致导致实例起不来。5. 故障转移验证与常见问题排查别等生产出事才第一次切换5.1 手动故障转移的完整验证流程装完不验证等于没做。我一般按下面的顺序做一次完整切换测试。# 查看当前 SQL 角色在哪个节点 Get-ClusterGroup -Name SQL Server (MSSQLSERVER) | Format-List Name, OwnerNode, State # 手动把角色移到节点2 Move-ClusterGroup -Name SQL Server (MSSQLSERVER) -Node Node2 # 等待角色联机 Start-Sleep -Seconds 30 Get-ClusterGroup -Name SQL Server (MSSQLSERVER) | Format-List Name, OwnerNode, State逻辑说明Move-ClusterGroup会按依赖顺序依次把资源从节点1下线、在节点2上线。整个过程通常 30 到 60 秒。切换完成后用sqlcmd连虚拟网络名SQLVNN执行SELECT SERVERNAME确认返回的是群集实例名而不是某个节点名。参数说明-Node指定目标节点必须是群集里的有效节点。如果切换卡在「联机挂起」去事件查看器看「FailoverClustering」日志通常是磁盘没释放或网络名称注册失败。5.2 常见问题排查清单现象创建群集时报「无法访问共享磁盘」。原因iSCSI 会话没建立或者磁盘在两台节点上状态不一致一台联机一台脱机。 解决在两台节点上分别打开iscsicpl.exe确认会话状态是「已连接」然后在磁盘管理里把磁盘状态统一成「脱机」再重新执行Add-ClusterDisk。现象SQL Server 安装到「群集磁盘选择」这一步列表是空的。原因共享磁盘还没加入群集或者加入后没联机。 解决在群集管理器里确认磁盘资源状态是「联机」如果显示「脱机」右键联机。如果磁盘根本没出现在群集里用Get-ClusterAvailableDisk | Add-ClusterDisk加进去。现象故障转移后客户端连不上报「找不到网络名」。原因DNS 里 SQL 虚拟网络名的记录没更新或者客户端 DNS 缓存没刷新。 解决在 DNS 服务器上确认SQLVNN的 A 记录指向当前持有节点的 IP然后在客户端执行ipconfig /flushdns。如果用的是 hosts 文件记得同步改。现象群集日志里频繁出现「节点心跳丢失」。原因心跳网卡和业务网卡混用或者心跳网段有防火墙拦截。 解决给心跳单独划一个网段在群集管理器里把心跳网卡的「允许群集通信」勾上业务网卡取消勾选。防火墙放行「Failover Clustering」的入站规则。现象SQL Server 服务在故障转移后启动失败事件日志报「无法打开数据库文件」。原因共享磁盘的盘符在新节点上变了或者 SQL 服务账户对新节点上的磁盘没有权限。 解决在群集管理器里确认磁盘资源的盘符和安装时一致如果不一致用cluster res Cluster Disk 2 /priv DiskLetterX:改回来。服务账户权限方面把domain\sqlsvc加到新节点的本地管理员组并授予数据目录的完全控制权限。6. 进阶技巧把切换时间压到 30 秒以内以及我踩过的那些坑默认配置下SQL Server FCI 的故障转移时间在 60 到 90 秒之间主要耗在三个地方群集检测节点下线的超时、SQL 服务停止的等待、新节点上数据库恢复的时间。想把切换压到 30 秒以内可以从下面几个参数入手。第一调整群集的「同一子网延迟」和「跨子网延迟」。在群集管理器的「网络」里把心跳网络的「同一子网延迟」从默认的 1000ms 调到 500ms「跨子网延迟」调到 1000ms。这样节点失联的判定更快但不要调太低否则网络抖动会误触发切换。第二SQL Server 服务资源里有个「LooksAlive」和「IsAlive」轮询间隔默认分别是 5000ms 和 60000ms。可以在注册表HKLM\Cluster\Resources\SQL Resource GUID\Parameters下把LooksAlivePollInterval调到 3000IsAlivePollInterval调到 30000。改完重启群集服务生效。第三数据库恢复时间取决于日志大小和检查点频率。把recovery interval设成 30 秒左右让检查点更频繁故障转移时需要前滚的日志更少。代价是正常运行时磁盘写入压力略增SSD 存储上基本无感。-- 在 SQL 实例上执行把恢复间隔设为 30 秒 EXEC sp_configure show advanced options, 1; RECONFIGURE; EXEC sp_configure recovery interval, 30; RECONFIGURE;逻辑说明recovery interval控制检查点之间的最大时间值越小故障恢复时需要重放的日志越少切换越快。参数说明单位是秒默认 0 表示由 SQL Server 自动管理设成 30 是手动指定。改完用SELECT * FROM sys.configurations WHERE name recovery interval确认生效。我踩过最深的坑是心跳网卡和 iSCSI 网卡共用一块物理网卡。当时为了省网卡把 iSCSI 流量和心跳都走同一块千兆网卡结果备份任务一跑心跳包延迟飙升群集误判节点下线半夜自动切换了两次。后来加了独立网卡问题再没出现过。另一个坑是 SQL 服务账户密码到期群集服务起不来但错误日志只报「登录失败」查了半天才想到是密码策略。现在我的习惯是所有群集相关的域账户密码永不过期并且单独建一个 OU 管理避免被全局密码策略覆盖。这套方案值不值得做取决于你的业务能不能接受一分钟以内的停机。如果能接受FCI 是性价比最高的选择如果不能接受那要考虑 Always On 可用性组加只读副本或者上云托管实例。但无论走哪条路先把 MSCS 这套基础打牢后面扩展都不会白费。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Kotlin协程原理与实践:从线程控制到结构化并发

Kotlin协程原理与实践:从线程控制到结构化并发

1. Kotlin协程的本质与设计哲学 第一次接触Kotlin协程时,很多人会被它的轻量级线程宣传所迷惑。但经过三年实际项目锤炼,我发现协程本质上是一个更高级的线程控制框架。它的核心价值不在于创建线程,而在于用同步代码写出异步逻辑,…

2026/10/14 8:59:39 阅读更多 →
C语言数组基础详解:声明、初始化、内存本质与常见坑

C语言数组基础详解:声明、初始化、内存本质与常见坑

C语言里有个概念,几乎所有教材都把它放在变量和循环之后讲,但每年还是有一大批初学者在它身上栽跟头,这就是数组。我见过太多人学指针、结构体、链表时自我感觉良好,回头却被一道“为什么函数里算不出数组长度”的题问得怀疑人生&…

2026/10/14 8:59:39 阅读更多 →
从源码看Gin:路由树、中间件链与Context复用

从源码看Gin:路由树、中间件链与Context复用

如果你想彻底搞懂一个 Web 框架,最好的方式从来不是背 API,而是读源码。第一次翻 gin 源码时,我最直观的感受是:这个框架居然这么小,去掉测试不过一万多行,核心文件就那么几个,但它的路由性能常…

2026/10/14 8:59:39 阅读更多 →

最新新闻

shadcn-dashboard-landing-template部署指南:Vercel、Netlify与静态托管方案对比

shadcn-dashboard-landing-template部署指南:Vercel、Netlify与静态托管方案对比

【免费下载链接】shadcn-dashboard-landing-template Accelerate your development with a sleek, open-source admin dashboard and landing page built on Vite-React, Next.js, Tailwind CSS, and Shadcn/UI which is fully customizable and production-ready. 项目地址&am…

2026/10/14 16:06:12 阅读更多 →
推箱子自动寻路实战:IDA*搜索与死锁检测优化

推箱子自动寻路实战:IDA*搜索与死锁检测优化

推箱子自动寻路,这东西看起来是个小游戏,真做起来才知道水有多深。网上讲这个主题的文章不少,但大多是拿BFS跑个小地图就收工,真正能处理中等规模关卡、能跑完不爆内存、不卡死的完整实现其实不多。我这边之前写过一个版本&#x…

2026/10/14 16:06:12 阅读更多 →
Godot TorusMesh 环面网格完整指南:参数详解、代码创建与实战应用

Godot TorusMesh 环面网格完整指南:参数详解、代码创建与实战应用

文档教程游戏开发 【免费下载链接】godot-docs Godot Engine official documentation 项目地址: https://gitcode.com/GitHub_Trending/go/godot-docs 点击查看 免费下载 引言:为什么需要 TorusMesh TorusMesh(环面网格,即甜甜圈…

2026/10/14 16:06:12 阅读更多 →
Kong网关7.5分SQL注入:混合模式的信任假设错了

Kong网关7.5分SQL注入:混合模式的信任假设错了

2026 年 10 月 12 日,Kong Gateway 的一个 SQL 注入漏洞公开:CVE-2026-1907,CVSS v4.0 评分 7.5(High),影响 Kong Enterprise Gateway 与开源版 Kong Gateway。漏洞的位置很具体:混合模式&#…

2026/10/14 16:06:12 阅读更多 →
腾讯云Python服务生产级部署:systemd+nginx+venv实战

腾讯云Python服务生产级部署:systemd+nginx+venv实战

简介:本资源是一份面向高校计算机专业学生与Python初学者的实战部署指南,聚焦疫情期间无法返校使用本地服务器时,如何借助腾讯云短期免费资源快速运行Python3.7PyTorch CPU版代码。文档详细覆盖从新用户微信认证领15天云服务器、CentOS/Ubunt…

2026/10/14 16:06:12 阅读更多 →
社交类iOS开发:即时通讯链路与性能优化实战地图

社交类iOS开发:即时通讯链路与性能优化实战地图

提到iOS开发,很多人第一反应是"不就是用Swift画页面嘛"。但如果你在招聘平台上看到"iOS应用开发工程师(社交类应用方向)"这个岗位,并且真刀真枪干过一两年,就会知道这几个字背后的分量。我从一线i…

2026/10/14 16:05:10 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →