1) 检查硬件平台:确认是否为Intel或Apple Silicon(M1/M2),架构不同影响虚拟化与原生软件支持。
2) 操作系统基线:记录当前macOS版本(例如10.15 Catalina)与目标版本(例如12 Monterey/13 Ventura)。
3) 软件依赖:列出Apache/Nginx、MySQL/MariaDB、PHP、Docker 及第三方守护进程版本并对照兼容性表。
4) 网络服务:核实DNS、域名A/AAAA记录、反向DNS、邮件(SMTP/IMAP)、SSL证书与端口映射。
5) 安全与防护:评估现有防火墙规则、DDoS防护厂商(如Cloudflare)与CDN缓存策略以避免升级时流量中断。
1) 内存要求:建议生产苹果服务器内存 >=16GB,虚拟化或Docker场景>=32GB。
2) 存储空间:升级前保留至少50GB可用空间,系统分区建议空闲比例>=20%。
3) CPU与架构:记录CPU型号(示例:Intel i7-8559U 4核8线程或Apple M1 8核),影响二进制兼容。
4) 网络带宽:确认公网带宽与峰值,升级期间设置低流量窗口并调整DNS TTL为60秒以便回滚。
5) 电源与硬件冗余:确保UPS正常、RAID阵列健康并完成磁盘SMART自检。
1) 导出服务清单:列出所有运行的服务与端口(示例在表格中展示)。
2) 数据库版本:示例:MySQL 5.7 -> 兼容性注意MySQL 8.0语法差异。
3) PHP/扩展:记录PHP版本与扩展(mbstring、gd、pdo_mysql等)。
4) Docker镜像:对Intel->ARM需重建镜像或使用多架构镜像。
5) 证书备份:备份/etc/letsencrypt及私钥,记录到安全存储。
| 服务 | 当前版本 | 建议最小 |
|---|---|---|
| macOS | 10.15.7 | 11+ |
| MySQL | 5.7.31 | 5.7或8.0 |
| PHP | 7.3 | 7.4+ |
| Docker | 19.03 | 20.10+ |
1) 文件级备份:使用rsync增量备份命令示例:rsync -aHAX --delete /var/www/ /backup/www/。
2) 数据库导出:MySQL备份示例:mysqldump -u root -p'密码' --single-transaction --routines --triggers --databases prod_db > /backup/mysql/prod_db.sql。
3) 镜像与快照:对支持的存储做LVM快照或APFS快照,记录保留周期7天。
4) 配置备份:导出/etc、/Library/Server、Nginx/Apache配置并校验差异。
5) 异地与CDN:将备份同步到异地VPS或对象存储(示例:s3兼容,保留两份副本)。
1) 计划时间窗:选择低峰期并设置沟通与维护通知,提前降低DNS TTL到60秒。
2) 验证环境:先在测试Mac mini或VPS上复刻升级流程并验证服务。
3) 顺序升级:先停止非必须服务,升级系统内核与XNU,升级应用(DB最后)。
4) 自动化脚本:使用Ansible或bash脚本执行备份、升级、服务重启并记录日志。
5) 回滚触发:若核心服务异常,依据快照与备份在30-60分钟内恢复到升级前状态。
1) 背景:客户使用Mac mini (2018,i7,32GB,2TB SSD) 运行网站与邮件,原系统10.14。
2) 问题:需升级到11以支持最新Docker与安全补丁,但Docker镜像基于Intel。
3) 处理:先在同配置的备机做全量备份(rsync + mysqldump),并将DNS TTL降为60秒。
4) 结果:重建关键镜像并使用二进制兼容层,升级耗时45分钟,回滚未触发,流量通过Cloudflare平滑过渡。
5) 教训:提前验证第三方扩展与DDoS防护策略可避免升级后短时流量中断。