CentOS 7 企业级数据库高可用实战:MySQL MGR + Router + MHA 与 Redis 集群全栈部署指南
目录摘要mysql路由组复制MGR–MySQL Group Replication单主模式配置mysql shellmysql routerkeepalived 高可用MHA部署准备工作详细配置MHA部署MHA故障手动切换MHA故障自动切换RedisRedis安装redis主从复制redis高可用redis哨兵模式Sentinelredis集群摘要本文详细介绍了在 CentOS 7 环境下构建高可用 MySQL 数据库及 Redis 缓存层的完整解决方案。主要内容包括MySQL Group Replication (MGR)配置单主模式集群实现数据强一致性复制。MySQL Router部署读写分离代理自动路由请求至 MGR 集群的正确节点。Keepalived LVS为 MySQL Router 提供虚拟 IP (VIP) 漂移消除单点故障实现高可用访问入口。MHA (Master High Availability)作为传统主从架构的自动故障切换方案实现主库故障时的快速切换与从库重定向。Redis部署主从复制、哨兵模式及集群模式满足不同规模下的高性能缓存与高可用需求。通过分步实操演示从环境准备、服务配置到故障模拟切换完整呈现了企业级数据库高可用架构的搭建与验证过程。关键词MySQL 高可用MGRMySQL RouterMHARedis 集群mysql路由Mysql Router 部署·Router 通过读取元数据来自MGR集群自动感知节点角色将写请求路由到主节点读请求分发到从节点·使用 mysqlrouter --bootstrap 命令可自动生成配置文件简化手工配置。#mysql路由部署rpm-ivhmysql-router-community-8.0.46-1.el7.x86_64.rpmcd/etc/mysqlrouter/vimmysqlrouter.confsystemctlenable--nowmysqlrouter.service yuminstall-ymariadb create userlzc%identified by654321;mysql-h192.168.88.146-P7001-ulzc-p654321--default-authmysql_native_password子节点查看网络连接yuminstall-ylsoflsof-i:3306组复制MGR–MySQL Group Replication单主模式配置·server-id 必须全局唯一gtid_modeON 和 enforce-gtid-consistencyON 开启GTID便于故障恢复·group_replication_group_name 使用UUID格式集群内所有节点必须一致·group_replication_local_address 和 group_replication_group_seeds 分别定义本节点通信地址和集群成员列表·启动第一个节点时需临时开启 group_replication_bootstrap_groupON后续节点仅需执行 START GROUP_REPLICATION·注意检查防火墙/安全组放行 33061 端口组复制内部通信和 3306 端口。systemctl stop mysqldrm-fr*vim/etc/mysql/my.cnfserver1主节点disabled_storage_enginesMyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORYserver-id1gtid_modeON enforce-gtid-consistencyONbinlog_checksumNONElog_binbinloglog_replica_updatesONplugin_load_addgroup_replication.sogroup_replication_group_nameaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaagroup_replication_start_on_bootoffgroup_replication_local_address192.168.88.143:33061group_replication_group_seeds192.168.88.143:33061,192.168.88.144/:33061,192.168.88.145:33061group_replication_bootstrap_groupoffgroup_replication_ip_whitelist192.168.88.0/24,127.0.0.1/8group_replication_single_primary_modeON;group_replication_enforce_update_everywhere_checksOFF;mysqld --defaults-file/etc/mysql/my.cnf--initializemysqlSETGLOBALgroup_replication_bootstrap_groupON;Query OK,0rowsaffected(0.00sec)mysqlSTARTGROUP_REPLICATION;Query OK,0rowsaffected,1warning(2.09sec)mysqlSETGLOBALgroup_replication_bootstrap_groupOFF;Query OK,0rowsaffected(0.00sec)mysqlSELECT*FROMperformance_schema.replication_group_members;------------------------------------------------------------------------------------------------------------------------------------------------------------------|CHANNEL_NAME|MEMBER_ID|MEMBER_HOST|MEMBER_PORT|MEMBER_STATE|MEMBER_ROLE|MEMBER_VERSION|MEMBER_COMMUNICATION_STACK|------------------------------------------------------------------------------------------------------------------------------------------------------------------|group_replication_applier|01e2c898-8c06-11f1-b570-000c292077de|server1|3306|ONLINE|PRIMARY|8.0.36|XCom|------------------------------------------------------------------------------------------------------------------------------------------------------------------1rowinset(0.03sec)server2 slavemysqlSTARTGROUP_REPLICATION;Query OK,0rowsaffected,1warning(2.02sec)mysqlSELECT*FROMperformance_schema.replication_group_members;------------------------------------------------------------------------------------------------------------------------------------------------------------------|CHANNEL_NAME|MEMBER_ID|MEMBER_HOST|MEMBER_PORT|MEMBER_STATE|MEMBER_ROLE|MEMBER_VERSION|MEMBER_COMMUNICATION_STACK|------------------------------------------------------------------------------------------------------------------------------------------------------------------|group_replication_applier|01e2c898-8c06-11f1-b570-000c292077de|server1|3306|ONLINE|PRIMARY|8.0.36|XCom||group_replication_applier|cd3c8329-8c09-11f1-b547-000c294eca46|server2|3306|RECOVERING|SECONDARY|8.0.36|XCom|------------------------------------------------------------------------------------------------------------------------------------------------------------------2rowsinset(0.12sec)再添加一个slave,server3server3与server2进行相同操作mysql shellserver4-mysql routeryuminstall-ymysql-shell-8.0.46-1.el7.x86_64.rpm mysqlsh icadmin192.168.88.143:3306server1–主节点mysqlCREATEUSERicadmin%IDENTIFIEDBY654321;Query OK,0rowsaffected(0.09sec)mysqlGRANTALLPRIVILEGESON*.*TOicadmin%WITHGRANTOPTION;Query OK,0rowsaffected(0.03sec)mysqlFLUSHPRIVILEGES;Query OK,0rowsaffected(0.02sec)server4:路由器接管MGR集群MySQL192.168.88.143:3306ssl JSvar clusterdba.createCluster(mgr_single_cluster,{adoptFromGR:true,force:true});#查看集群状态cluster.status();mysqlrouter--bootstrapicadmin192.168.88.143:3306--usermysqlrouter systemctl restart mysqlrouter.servicemysql routerkeepalived 高可用·在 server6 和 server7 上部署 Keepalived通过 VRRP 虚拟出一个 IP192.168.88.100并配置 LVS 将流量分发至两台Routerserver4, server5master:server6·lb_algo wrr 采用加权轮询调度persistence_timeout 保持用户会话粘性·通过 TCP_CHECK 检测后端Router服务的存活状态实现自动剔除故障节点。部署另一台路由器yuminstall-ykeepalivedvim/etc/keepalived/keepalived.conf global_defs{notification_email{rootlocalhost}notification_email_from keepalivedlocalhost smtp_server127.0.0.1 smtp_connect_timeout30router_id LVS_DEVEL vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval0vrrp_gna_interval0}vrrp_instance VI_1{state MASTER interface ens32 virtual_router_id51priority100advert_int1authentication{auth_type PASS auth_pass1111}virtual_ipaddress{192.168.88.100}}virtual_server192.168.88.1006446{delay_loop3lb_algo wrr lb_kind DR persistence_timeout300protocol TCP real_server192.168.88.1466446{weight1TCP_CHECK{connect_timeout3connect_port6446}}real_server192.168.88.1476446{weight1TCP_CHECK{connect_timeout3connect_port6446}}virtual_server192.168.88.1006447{delay_loop3lb_algo wrr lb_kind DR persistence_timeout300protocol TCP real_server192.168.88.1466447{weight1TCP_CHECK{connect_timeout3connect_port6447}}real_server192.168.88.1476447{weight1TCP_CHECK{connect_timeout3connect_port6447}}}}backup:server7global_defs{notification_email{rootlocalhost}notification_email_from keepalivedlocalhost smtp_server127.0.0.1smtp_connect_timeout30router_id LVS_DEVEL vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval0vrrp_gna_interval0}vrrp_instance VI_1{state MASTER interface ens32 virtual_router_id51priority90#权重比master小 advert_int1authentication{auth_type PASS auth_pass1111}virtual_ipaddress{192.168.88.100}}virtual_server192.168.88.1006446{delay_loop3lb_algo wrr lb_kind DR persistence_timeout300protocol TCP real_server192.168.88.1466446{weight1TCP_CHECK{connect_timeout3connect_port6446}}real_server192.168.88.1476446{weight1TCP_CHECK{connect_timeout3connect_port6446}}virtual_server192.168.88.1006447{delay_loop3lb_algo wrr lb_kind DR persistence_timeout300protocol TCP real_server192.168.88.1466447{weight1TCP_CHECK{connect_timeout3connect_port6447}}real_server192.168.88.1476447{weight1TCP_CHECK{connect_timeout3connect_port6447}}}MHA部署准备工作·在 server1、server2、server3 上配置一主两从异步复制均开启GTID简化位置管理·创建用于复制的专用用户 repl 和 MHA管理用户 root需具备管理权限·所有节点需配置SSH免密登录MHA依赖SSH进行日志传输和故障切换。详细配置primarysystemctl stop mysqld[rootserver1 mysql]# cd /data/mysql[rootserver1 mysql]# rm -fr *[rootserver1 mysql]# vim /etc/mysql/my.cnf[mysqld]basedir/usr/local/mysqldatadir/data/mysqlsocket/data/mysql/mysql.sock log-binmysql-binport3306usermysql pid-file/data/mysql/mysql.pid character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci log-error/data/mysql/mysql-error.loginnodb_buffer_pool_size1Gmax_connections1000default_authentication_pluginmysql_native_passwordserver_id1gtid_modeONenforce_gtid_consistencyONlog_slave_updatesONlog_binbinlog[client]socket/data/mysql/mysql.sock[rootserver1 mysql]# mysqld --defaults-file/etc/mysql/my.cnf --initialize[rootserver1 mysql]# systemctl start mysqldmysql alter user rootlocalhost identified by ‘654321’;Query OK, 0 rows affected (0.01 sec)mysqlCREATEUSERrepl%IDENTIFIEDWITHmysql_native_passwordBY654321;Query OK,0rowsaffected(0.01sec)mysqlGRANTREPLICATIONSLAVEON*.*TOrepl%;Query OK,0rowsaffected(0.01sec)mysqlshowmasterstatus;---------------------------------------------------------------------------------------------------|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set|---------------------------------------------------------------------------------------------------|binlog.000002|950|||30a2d7e4-8e7c-11f1-863a-000c292077de:1-3|---------------------------------------------------------------------------------------------------1rowinset(0.00sec)slavesystemctl stop mysqldcd/data/mysqlrm-fr*vim/etc/mysql/my.cnf mysqld --defaults-file/etc/mysql/my.cnf--initializegreptemporary password/data/mysql/mysql-error.logmysqlalteruserrootlocalhostidentifiedby654321;Query OK,0rowsaffected(0.03sec)mysqlchange mastertomaster_host192.168.36.173,master_userrepl,master_password654321,master_auto_position1;Query OK,0rowsaffected,7warnings(0.03sec)mysqlstartslave;Query OK,0rowsaffected,1warning(0.03sec)mysqlshowslavestatus\G;mysqlcreatedatabasewestos;Query OK,1rowaffected(0.02sec)mysqlusewestosDatabasechanged mysqlcreatetableuser_tb(usernamevarchar(25)notnull,-passwordvarchar(50)notnull);Query OK,0rowsaffected(0.08sec)mysqlinsertintouser_tbvalues(user1,111);Query OK,1rowaffected(0.21sec)mysqlinsertintouser_tbvalues(user2,222);Query OK,1rowaffected(0.01sec)mysqlselect*fromwestos.user_tb;MHA部署server4systemctl stop mysqlrouter.service ssh-keygen ssh-copy-id server4scp-r.ssh/ server1:scp-r.ssh/ server2:scp-r.ssh/ server3: yuminstall-yha4mysql-node-0.58-0.el7.centos.noarch.rpm#若果安装失败添加epel源wget-O/etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo yuminstall-ymha4mysql-manager-0.58-0.el7.centos.noarch.rpm#集群安装客户端软件scpmha4mysql-node-0.58-0.el7.centos.noarch.rpm server1:scpmha4mysql-node-0.58-0.el7.centos.noarch.rpm server2:scpmha4mysql-node-0.58-0.el7.centos.noarch.rpm server3:mkdir/etc/masterhacd/etc/masterhavim/etc/masterha/app1.cnf[server default]userrootpassword654321ssh_userrootrepl_userreplrepl_password654321master_binlog_dir/data/mysqlremote_workdir/tmpsecondary_check_scriptmasterha_secondary_check-s192.168.88.144-s192.168.88.145ping_interval3manager_workdir/etc/masterha/app1manager_log/etc/masterha/app1/manager.log[server1]hostname192.168.88.143candidate_master1check_repl_delay0[server2]hostname192.168.88.144no_master1[server3]hostname192.168.88.145candidate_master1check_repl_delay0检查免密连接 masterha_check_ssh--conf/etc/masterha/app1.cnf检查集群masterha_check_repl--conf/etc/masterha/app1.cnfMHA故障手动切换MHA故障自动切换·监控进程 masterha_manager 定期通过 ping_interval 检测主库健康·当主库故障时MHA自动执行 master_ip_failover 脚本将VIP漂移到新主库并将所有从库重新指向新主·切换完成后原主库恢复后可作为新的从库加入集群。授予可执行权限chmod 755 master_ip_failoverchmod 755 master_ip_online_changevim master_ip_failover当 MHA 完成主库切换后自动执行这些命令将虚拟 IPVIP从旧主库漂移到新主库上。masterha_manager --conf/etc/masterha/app1.cnf 这条命令启动了 MHAMaster High Availability的核心监控进程它根据 app1.cnf 配置文件在后台静默运行。查看从库状态已切换至新的主节点。RedisRedisRemote Dictionary Server是一个开源的内存数据结构存储系统支持网络访问可用作数据库、缓存、消息代理和流处理引擎。特性说明内存存储数据主要存在内存中读写速度极快10万 QPS数据结构丰富不仅是 key-value还支持 String、Hash、List、Set、Sorted Set、Bitmap、HyperLogLog、Stream、Geo 等持久化支持 RDB快照和 AOF日志两种持久化方式单线程模型核心命令处理是单线程的避免锁竞争保证原子性高可用支持主从复制Replication、Sentinel 哨兵、Cluster 集群模式原子操作所有命令都是原子的适合并发场景Redis安装tarzxf redis-6.2.4.tar.gzcdredis-6.2.4makemakeinstallcdutils/viminstall_server.sh#运行安装脚本./install_server.sh改为监听所有端口redis主从复制·从节点通过配置 replicaof master_ip master_port 指向主库启动后自动同步数据·主从复制为异步适用于读多写少场景可横向扩展读能力。server1rsync-aredis-* server2:/usr/local/binrsync-aredis-6.2.4 server2:server2cdredis-6.2.4/utils ./install_server.shvim/etc/redis/6379.conf replicaof192.168.88.1436379systemctl restart redis_6379测试redis-cliinforedis高可用redis哨兵模式Sentinel·在 server1、server2、server3 上分别部署哨兵进程监控主库状态·哨兵之间相互通信通过投票机制判断主库是否客观下线并自动执行故障转移server2[rootserver1 redis]# redis-cli shutdownredis集群./create-cluster start·集群通过哈希槽16384个槽位分区数据自动分布在多个主节点上./create-cluster create连接集群redis-cli-c-p30001info127.0.0.1:30004setname ljx -Redirected to slot[5798]located at127.0.0.1:30002 OK#添加新节点30007、30008后需执行 reshard 迁移槽位才能均匀数据分布redis-cli--clusteradd-node127.0.0.1:30007127.0.0.1:30001·添加从节点时需指定主节点ID实现副本备份。redis-cli--clusteradd-node127.0.0.1:30008127.0.0.1:30001 --cluster-slave --cluster-master-id ef99a4fc501bce05f725ba926510c2816d1c9f46redis-cli--clustercheck127.0.0.1:30001#迁移hash槽redis-cli--clusterreshard127.0.0.1:30001

相关新闻

人形机器人伦理:阿西莫夫法则、性别争议及人形机器人自杀事件的法律定性(上)

人形机器人伦理:阿西莫夫法则、性别争议及人形机器人自杀事件的法律定性(上)

一、阿西莫夫法则的修订提案及欧盟AI法案(一)阿西莫夫机器人法则的现代扩展阿西莫夫经典的机器人三定律(不伤害人类、服从人类命令、保护自身存在)在当今时代已显现出局限性。学者和机构因此提出了一些新的补充框架:阿…

2026/10/17 23:41:54 阅读更多 →
MCBE快速T触发器:原理、设计与低延迟电路实现

MCBE快速T触发器:原理、设计与低延迟电路实现

在红石电路的世界里,速度就是一切。无论是建造高速农场、自动化流水线,还是设计复杂的逻辑门,一个响应迅速、延迟极低的触发器往往是整个系统的性能瓶颈。如果你还在为传统红石中继器带来的延迟而烦恼,或者觉得某些触发器设计过于…

2026/10/16 22:10:02 阅读更多 →
SAP ABAP选择屏幕进阶:动态必输与健壮检查实战

SAP ABAP选择屏幕进阶:动态必输与健壮检查实战

1. 从“能用”到“好用”:选择屏幕的进阶思考 在SAP ABAP开发里,选择屏幕(Selection Screen)是每个开发者都绕不开的基础设施。它看起来很简单,无非就是几个输入框、单选按钮、复选框,加上一个执行按钮。很…

2026/10/15 5:51:09 阅读更多 →

最新新闻

交叉熵损失、可调节参数与LoRA:大模型微调核心链路全解析

交叉熵损失、可调节参数与LoRA:大模型微调核心链路全解析

交叉熵损失&大模型可调节参数&LoRA搞大模型微调的人,一定绕不开这三样东西:损失函数怎么算、超参数怎么调、参数高效微调用什么手法。这三个词看着各自独立,其实是一条完整链路——交叉熵损失告诉你模型学得好不好,可调节…

2026/10/17 23:41:41 阅读更多 →
Agent策略是什么?从岗位说明书到决策机制全解析

Agent策略是什么?从岗位说明书到决策机制全解析

“Agent策略”这个词,我第一次听到的时候觉得特别玄乎,总觉得它是某种高深的数学定义或者算法黑话。后来真正上手做智能体应用,踩了半年坑才反应过来:策略就是给AI定的一套“在什么情况下做什么事”的规则,是它决策和行…

2026/10/17 23:41:41 阅读更多 →
数据科学硕士申请全攻略:笔试与面试真题解析、备考策略

数据科学硕士申请全攻略:笔试与面试真题解析、备考策略

去年十一月,我在申请交流群里看到一条新消息:“数据科学硕士笔试通知已发出,请查收邮件。”那一刻我的手确实抖了一下。作为一个统计学背景的申请者,笔试对我而言意味着两件事:一是材料关总算过了,二是真正…

2026/10/17 23:41:41 阅读更多 →
模型部署:TGI/vLLM/Ollama生产部署与TaoToken统一接入实践

模型部署:TGI/vLLM/Ollama生产部署与TaoToken统一接入实践

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

2026/10/17 23:40:40 阅读更多 →
Claude Code 新手保姆级安装与使用指南(ZCF 版):从 Node.js 到 API Key 一次跑通

Claude Code 新手保姆级安装与使用指南(ZCF 版):从 Node.js 到 API 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/17 23:40:40 阅读更多 →
不说废话!在Cursor中10分钟内简单入门MCP使用与TaoToken配置

不说废话!在Cursor中10分钟内简单入门MCP使用与TaoToken配置

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

2026/10/17 23:40:40 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →