
简介这份文档面向云计算运维、后端开发及系统迁移实施人员围绕阿里云SLB、ECS、OSS、RDS四大核心服务梳理其在系统数据迁移场景中的定位与配合方式适合需要从零理解阿里云产品体系或准备上云迁移方案的技术人员参考。资源包内共1个docx文件约1.78MB内容以图文与目录结构组织涵盖OSS对象存储的桶、对象、存储类型等概念及上传下载与管理方式RDS的实例、数据库、账户模型与备份恢复、迁移服务SLB的监听器、后端服务器、会话保持、健康检查、证书管理与高可用架构并延伸至ECS与整体迁移思路。目录层级清晰从服务概述、基本概念到应用说明逐层展开便于按模块查阅与整理笔记。目前已有777人学习下载可作为上云迁移前的知识梳理材料帮助读者建立对阿里云基础服务组合的整体认知为后续实操与方案设计打下基础。1. 从一台快撑爆的 ECS 说起这套 SLB-ECS-OSS-RDS 迁移方案到底解决什么去年帮一个朋友处理他们的电商后台单台 ECS 上跑着 Nginx、Java 应用、MySQL图片全堆在服务器本地磁盘。大促前一天磁盘告警图片目录 40 多个 G数据库和 Web 服务抢 IO页面加载肉眼可见地变慢。这种一台机器扛所有的架构在业务量上来之后基本都会翻车。这份《阿里云 SLB-ECS-OSS-RDS 与系统数据迁移》文档讲的正是把这种单机架构拆成阿里云标准四件套的完整过程OSS 承接图片等非结构化资源RDS 接管 MySQLECS 承载应用服务SLB 做流量分发。文档覆盖了从服务概念、迁移准备到具体实施步骤的全流程适合正在做上云迁移或架构拆分的一线开发和运维。下面我按实际落地顺序把这份资料里能直接抄作业的部分拆开讲。2. OSS 对象存储图片资源从本地磁盘搬到 Bucket 的完整路径2.1 为什么图片不该继续放在 ECS 本地盘文档里对 OSS 的定位说得很清楚对象存储是 Key-Value 形式的分布式存储和文件系统的树状索引结构有本质区别。很多人第一次接触 OSS 会不自觉地把它当网盘用建一堆目录这其实是个误区。在 OSS 里test1/test.jpg只是一个字符串 Key和a.jpg没有本质区别不存在真正的目录层级。理解这一点很关键因为它直接决定了迁移时文件路径怎么映射。从成本角度看ECS 的系统盘和数据盘都是有容量上限的图片、视频这类非结构化数据增长速度快放在 ECS 上意味着要么不断扩容磁盘成本高且操作麻烦要么定期清理业务不允许。OSS 的容量弹性扩展标准存储适合频繁访问的热数据低频访问存储适合每月访问 1-2 次的数据归档存储适合半年以上不访问的冷数据。迁移时可以根据图片的实际访问频率选择存储类型不必一刀切用标准存储。从性能角度看图片请求走 OSS 后ECS 的磁盘 IO 和带宽压力会明显下降数据库和应用服务的响应也会更稳定。文档中提到 OSS 的数据设计持久性不低于 99.9999999999%12 个 9服务可用性不低于 99.995%这个可靠性级别是自建文件存储很难达到的。2.2 迁移前的网络与权限准备文档在迁移准备部分强调了网络访问的准备工作。实际操作中这一步的核心是确认 ECS 到 OSS 的网络连通性。如果 ECS 和 OSS Bucket 在同一个地域走内网 Endpoint 访问不走公网流量速度快且不产生公网流量费用。比如杭州地域的外网 Endpoint 是oss-cn-hangzhou.aliyuncs.com内网 Endpoint 是oss-cn-hangzhou-internal.aliyuncs.com。迁移时务必用内网 Endpoint否则大量图片走公网传输流量费用会让人后悔。权限方面文档提到了 AccessKey 的概念。AccessKey 由 AccessKeyId 和 AccessKeySecret 组成用于身份验证。实际迁移中不建议直接用主账号的 AccessKey而是通过 RAM 创建一个子账号只授予目标 Bucket 的读写权限。这样即使密钥泄露影响范围也可控。# 安装 ossutil 命令行工具Linux x86_64 wget https://gosspublic.alicdn.com/ossutil/1.7.19/ossutil64 chmod 755 ossutil64 mv ossutil64 /usr/local/bin/ossutil # 配置 AccessKey按提示输入 RAM 子账号的 AK ossutil config # 配置文件默认路径 ~/.ossutilconfig # 需要填写endpoint、accessKeyId、accessKeySecret上面这段是 ossutil 的安装和配置流程。ossutil 是阿里云官方提供的 OSS 命令行管理工具比控制台适合批量操作。ossutil config会交互式地让你输入 Endpoint、AccessKeyId、AccessKeySecret配置信息写入~/.ossutilconfig。Endpoint 填内网地址比如oss-cn-hangzhou-internal.aliyuncs.com。如果 ECS 和 Bucket 不在同一地域内网不通只能走公网 Endpoint这时候要评估流量成本。2.3 用 ossutil 批量迁移图片资源准备工作做完之后迁移本身其实不复杂。文档中迁移实施部分的核心思路是把本地文件资源通过 HTTP 或工具上传到 OSS。我一般用 ossutil 的cp命令做批量上传支持递归目录、断点续传和增量同步。# 创建 Bucket如果还没有的话 ossutil mb oss://your-bucket-name --acl private # 批量上传本地图片目录到 OSS-r 表示递归-u 表示增量跳过已存在且未修改的文件 ossutil cp -r /data/www/uploads/ oss://your-bucket-name/uploads/ -u --jobs 10 # 上传完成后验证文件数量 ossutil ls oss://your-bucket-name/uploads/ -s | tail -1-r参数表示递归处理子目录-u表示增量上传只上传本地比 OSS 上更新的文件重复执行不会重复上传。--jobs 10表示并发 10 个上传任务根据 ECS 的带宽和 CPU 情况调整一般 5-20 之间比较合适。上传完成后用ossutil ls -s查看统计信息对比本地文件数量和 OSS 上的对象数量是否一致。迁移完成后应用代码里的图片访问路径需要从本地路径改成 OSS 的 URL 或 CDN 加速域名。文档在后续操作部分提到了这一步。常见做法是把图片域名切到 CDNCDN 回源到 OSS这样用户访问图片走 CDN 边缘节点速度更快OSS 的回源压力也更小。注意迁移完成后不要急着删除本地图片至少保留一周作为回滚备份。确认线上图片访问全部正常后再清理。3. MySQL 迁移 RDS增量同步与割接窗口怎么控制3.1 迁移类型的选择逻辑文档在迁移类型说明部分区分了全量迁移和增量迁移。全量迁移是把源库的所有数据一次性搬到目标库适合停机时间充裕的场景。增量迁移是在全量迁移的基础上持续同步源库的 binlog 到目标库适合不能长时间停机的业务。实际生产环境中大多数业务都要求最小化停机时间所以增量迁移是更常见的选择。文档提到增量数据迁移支持同步的 SQL 操作包括 INSERT、UPDATE、DELETE 等。这意味着在迁移过程中源库的业务写入会实时同步到 RDS等到割接时只需要短暂停写确认增量同步追平后切换连接地址即可。整个割接窗口可以控制在几分钟以内而不是几小时。数据库账号的权限要求也需要提前确认。源库账号需要有 REPLICATION SLAVE 和 REPLICATION CLIENT 权限否则无法读取 binlog。目标 RDS 账号需要有读写权限。这些权限在迁移前就要配好不要等到迁移时才发现权限不够。3.2 迁移任务的创建与参数配置文档操作步骤部分描述了迁移任务的创建流程。在阿里云 DTS数据传输服务控制台创建迁移任务时需要填写源库和目标库的连接信息选择迁移类型结构迁移、全量迁移、增量迁移以及选择要迁移的库表。-- 在源库上确认 binlog 是否开启 SHOW VARIABLES LIKE log_bin; -- 如果返回 ON说明 binlog 已开启 -- 查看 binlog 格式必须是 ROW 模式 SHOW VARIABLES LIKE binlog_format; -- 返回 ROW 才能支持增量迁移 -- 确认源库账号权限 SHOW GRANTS FOR migration_user%; -- 需要包含 REPLICATION SLAVE 和 REPLICATION CLIENT上面这几条 SQL 是迁移前在源库上执行的检查。log_bin必须是 ONbinlog_format必须是 ROW这两个条件不满足的话增量迁移无法工作。binlog_format如果是 STATEMENT 或 MIXED需要在 my.cnf 里改成 ROW 并重启 MySQL这个操作本身就需要一次停机所以要提前规划。SHOW GRANTS确认迁移账号的权限缺少 REPLICATION 权限的话需要用 root 账号补授。迁移任务创建后DTS 会先做结构迁移建表再做全量迁移搬数据最后进入增量同步阶段。增量同步阶段会持续运行直到你手动结束任务。这期间源库的正常读写不受影响。3.3 割接窗口的操作清单增量同步追平后就可以做割接了。文档结束迁移任务和后续操作部分提到了收尾工作。割接的核心操作是停止源库写入 → 确认增量同步延迟为 0 → 将应用连接地址切换到 RDS → 恢复业务写入。# 割接前检查增量同步延迟在 DTS 控制台查看 # 确认延迟为 0 秒或接近 0 秒 # 停止应用写入以常见的 Java 应用为例通过 Nginx 摘除后端 # 在 Nginx 配置中将要迁移的服务器标记为 down # 然后 nginx -s reload # 切换应用数据库连接地址 # 修改 application.properties 或环境变量中的数据库连接串 # 从源库地址改为 RDS 的内网地址 # 重启应用验证数据库连接 # 观察日志中是否有连接异常割接窗口内先通过 Nginx 或 SLB 把流量从旧服务器摘除确保没有新的写入。然后观察 DTS 的增量同步延迟等延迟归零后修改应用的数据库连接配置重启应用。验证读写正常后结束 DTS 迁移任务。整个过程如果顺利5-10 分钟可以完成。注意割接前一定要在测试环境完整演练一遍包括连接切换、应用重启、回滚操作。生产环境的割接不要第一次就上。4. ECS 应用部署与 SLB 负载均衡从单机到集群的最后一公里4.1 应用服务的安装顺序与依赖关系文档在系统应用服务迁移 ECS部分列出了需要安装的组件JDK、Nginx、Redis、webp 依赖环境、Apache 服务、MapzoneServer 服务、系统 web 后台服务、系统 APP 移动端服务。这个安装顺序不是随意的有依赖关系在里面。JDK 是 Java 应用的基础运行环境必须最先装。Nginx 作为反向代理和静态资源服务通常第二个装。Redis 作为缓存服务如果应用依赖它做 session 共享或数据缓存需要在应用启动前就绪。webp 依赖环境是图片处理相关的库如果应用有图片格式转换功能需要提前安装。Apache 服务和 MapzoneServer 服务是特定业务组件按文档顺序安装即可。# 安装 JDK 8以 CentOS 为例 yum install -y java-1.8.0-openjdk-devel java -version # 确认输出 1.8.x # 安装 Nginx yum install -y nginx systemctl enable nginx systemctl start nginx # 安装 Redis yum install -y redis systemctl enable redis systemctl start redis redis-cli ping # 返回 PONG 说明正常 # 安装 webp 依赖 yum install -y libwebp-devel libjpeg-devel libpng-devel上面这段是基础环境的安装命令。java -version确认 JDK 版本redis-cli ping确认 Redis 可用。webp 依赖的三个库是图片处理的基础缺少的话应用启动时可能报UnsatisfiedLinkError或类似的本地库加载错误。这些依赖装完后再按文档顺序部署业务应用。4.2 SLB 实例的创建与监听配置文档创建负载均衡实例和配置负载均衡实例部分描述了 SLB 的配置流程。SLB 的核心概念包括监听器Listener、后端服务器Backend Server和健康检查。监听器负责接收客户端请求并转发给后端服务器健康检查负责探测后端服务器的可用状态。创建 SLB 实例时需要选择地域、实例类型公网或私网、计费方式。公网 SLB 有公网 IP直接对外提供服务私网 SLB 只有内网 IP通常配合 EIP 或 NAT 网关使用。对于大多数 Web 应用公网 SLB 是更直接的选择。# SLB 配置的核心参数在控制台或通过 API 设置 # 监听协议HTTP 或 HTTPS # 监听端口80 或 443 # 后端端口应用实际监听的端口如 8080 # 健康检查路径如 /health 或 /api/status # 健康检查间隔默认 5 秒 # 不健康阈值默认 3 次 # 健康阈值默认 3 次 # 后端服务器权重根据 ECS 配置设置配置高的权重高 # 例如ecs-1 权重 100ecs-2 权重 50健康检查的配置直接影响故障切换的速度。间隔 5 秒、不健康阈值 3 次意味着最坏情况下 15 秒后 SLB 会把故障节点摘除。如果应用启动较慢健康检查路径要选一个能快速响应的接口不要选依赖数据库的复杂接口否则应用刚启动时健康检查可能误判。4.3 域名解析与流量切换文档域名解析部分提到了将域名指向 SLB 的公网 IP。这一步在 DNS 服务商处操作添加一条 A 记录将业务域名解析到 SLB 的 IP 地址。如果原来域名直接解析到 ECS切换时把 A 记录改成 SLB 的 IP 即可。DNS 切换有缓存问题各地 DNS 服务器的缓存时间从几分钟到几小时不等。为了平滑切换可以提前把 TTLTime To Live调小比如从 3600 秒改成 60 秒这样切换后几分钟内就能全网生效。切换完成后观察 SLB 的监控指标确认流量正常分发到后端 ECS。注意SLB 实例创建后不要急着删除旧的 ECS 或释放资源确认业务稳定运行至少 24 小时后再做清理。5. 迁移过程中最容易翻车的几个地方5.1 现象ossutil 上传大量小文件时速度极慢原因默认并发数较低且小文件上传时每个请求的建立连接开销占比高。另外如果走了公网 Endpoint带宽瓶颈也会导致速度慢。解决确认使用内网 Endpoint将--jobs参数调大建议 10-20如果文件数量特别多几十万以上考虑先打包成 tar 再上传到 OSS 后再解压或者使用 OSS 的批量操作工具。5.2 现象DTS 增量迁移延迟持续增大追不上源库写入原因源库写入量太大DTS 的同步速度跟不上或者源库有大事务如批量 DELETE、ALTER TABLE导致 binlog 事件积压。解决检查源库是否有大事务在执行尽量拆分成小批次。如果是写入量本身太大考虑升级 DTS 实例规格。另外确认源库和目标库的网络延迟是否正常跨地域迁移时网络延迟会明显影响同步速度。5.3 现象SLB 健康检查显示后端 ECS 异常但应用实际正常运行原因健康检查路径配置错误或者应用监听的端口和 SLB 后端端口不一致。也可能是 ECS 的安全组没有放行 SLB 的健康检查源 IP。解决确认健康检查路径返回 200 状态码确认应用监听端口和 SLB 后端端口一致确认 ECS 安全组放行了 SLB 的健康检查 IP 段阿里云 SLB 的健康检查 IP 段是 100.64.0.0/10。5.4 现象迁移后图片访问 403 Forbidden原因OSS Bucket 的 ACL 设置为 private但应用直接拼接了 OSS 的公网 URL 访问没有签名。或者 CDN 回源时没有正确配置 OSS 的访问权限。解决如果图片是公开访问的Bucket ACL 设为 public-read如果是私有访问应用需要通过 SDK 生成带签名的 URL或者配置 CDN 回源时带上鉴权参数。不要为了省事直接把 Bucket 设为 public-read-write这会导致任何人都能上传文件。5.5 现象割接后应用连接 RDS 报连接数超限原因RDS 的最大连接数默认值比自建 MySQL 低应用连接池配置没有调整导致连接数打满。解决在 RDS 控制台查看当前连接数和最大连接数调整应用的连接池最大连接数如 HikariCP 的 maximumPoolSize确保不超过 RDS 的限制。如果确实需要更多连接可以升级 RDS 规格。6. 迁移完成后的验证清单与一个实用技巧迁移做完不等于结束验证才是保证不出问题的关键。我一般会按下面这个清单逐项确认验证项检查方法通过标准OSS 文件完整性对比本地文件数和 OSS 对象数数量一致抽样下载可正常打开图片访问浏览器访问图片 URL返回 200图片正常显示RDS 数据一致性对比源库和目标库的关键表行数行数一致抽样数据内容相同应用功能走一遍核心业务流程下单、支付、查询等正常SLB 流量分发查看 SLB 监控的后端服务器流量各后端 ECS 均有流量健康检查在 SLB 控制台查看后端服务器状态全部显示正常域名解析多地 ping 或 dig 域名解析到 SLB 的 IP这个清单看起来简单但每一条都对应着实际踩过的坑。比如 OSS 文件完整性检查曾经有一次迁移后发现少了几个文件原因是文件名里有特殊字符ossutil 默认跳过了。后来加了--include参数指定所有文件类型才解决。最后分享一个实用技巧迁移完成后在 OSS 上开启版本控制功能。文档在功能概览里提到了版本控制开启后针对数据的覆盖和删除操作会以历史版本保存下来。有一次应用代码 bug 导致批量覆盖了 OSS 上的图片因为开了版本控制直接回滚到之前的版本几分钟就恢复了。如果没有这个功能那些被覆盖的图片就真的找不回来了。从那以后我每次做 OSS 迁移都会在迁移完成后第一时间开启版本控制并且给 Bucket 配置生命周期规则把超过 90 天的历史版本自动转成低频存储既保留了后悔药又不会让存储成本失控。希望帮到你。本文还有配套的精品资源点击获取