
文章目录一、阿里云的概念1.1 什么是阿里云1.2 为什么要进行数据迁移1.2.1 本地部署的痛点1.2.2 上云迁移的优势二、云上架构图三、迁移步骤3.1 资源清单3.2 创建 VPC 和交换机3.3 购买 ECS2台3.4 安全组配置3.5 购买 RDS MySQL3.6 购买云 RedisTair3.7 购买 SLB3.8 购买SLS3.9 获取RDS mysql 的内网地址和Redis 的内网地址3.9.1 获取RDS mysql 的内网地址3.9.2 获取Redis 的内网地址3.10 数据迁移SQL 导入3.10.1 在RDS MySQL中先创建库和账号3.10.2 创建了数据库然后在本地终端上进行数据导出3.10.3 上传到 ECS-13.11 后端 jar 包配置与运行3.11.1 在本地虚拟机从镜像中提取 jar 包3.11.2 安装JDK 1.83.11.3 application-druid.yml文件3.11.4 application.yml 文件3.11.5 运行 jar 包3.12 前端迁移3.12.1 在本地虚拟机上找到dist文件3.12.2 上传到 ECS-1和ECS-2后解压3.12.3 在 ECS-1 和 ECS-2 上安装 Nginx3.12.4 配置 Nginx 反向代理3.13 测试高可用3.14 安装 Logtail 采集日志到 SLS3.14.1 创建弹性公网IP3.14.2 安装 Logtail3.14.3 在 SLS 控制台配置采集四、迁移过程中出现的问题一、阿里云的概念1.1 什么是阿里云阿里云Alibaba Cloud是阿里巴巴集团旗下的云计算服务平台成立于2009年是全球领先的云计算及人工智能科技公司之一。阿里云提供包括弹性计算、数据库、存储、网络、安全、大数据、人工智能等在内的全方位云服务服务范围覆盖全球200多个国家和地区。1.2 为什么要进行数据迁移1.2.1 本地部署的痛点痛点说明硬件成本高需要购买服务器、交换机、防火墙等硬件设备前期投入大运维复杂需要专业的运维团队负责服务器、网络、数据库的日常维护扩展性差业务增长时需要采购新硬件周期长、成本高高可用难保障单点故障风险高灾备方案复杂且昂贵安全防护弱需要自行应对DDoS攻击、数据泄露等安全威胁1.2.2 上云迁移的优势优势说明按量付费无需一次性投入硬件成本按需使用、按量付费高可用云平台提供SLB、RDS主备、多可用区等原生高可用能力弹性扩展支持随时升降配从容应对业务流量变化运维简化RDS、Redis等托管服务免去日常运维工作安全合规云平台提供DDoS防护、WAF、数据加密等安全能力日志服务SLS日志服务替代传统ELK免运维、低成本二、云上架构图三、迁移步骤3.1 资源清单资源名称规格内网地址/公网IPVPCruoyi-vpc10.0.0.0/16-交换机 Aruoyi-switch-a10.0.1.0/24可用区B交换机 Bruoyi-switch-b10.0.2.0/24可用区HECS-1ruoyi-ecs-012核4G CentOS 7.910.0.1.15ECS-2ruoyi-ecs-022核4G CentOS 7.910.0.2.101RDSruoyi-mysqlMySQL 5.7 2核4Grm-xxx.mysql.rds.aliyuncs.comRedisruoyi-redisRedis 6.0 1GBr-xxx.redis.rds.aliyuncs.comSLBruoyi-slb公网型 HTTP:80218.244.145.10SLSruoyi-logs-0829日志存储30天-3.2 创建 VPC 和交换机在阿里云中找到vpc进行以下操作这里是一个vpc下有两个交换机3.3 购买 ECS2台这里以一台为例购买两台2C4G的ECS第二台ECS是把交换机这一个换了3.4 安全组配置此操作是为了将两个ECS放到同一个安全组中添加规则将两个实例添加到新建的安全组中在创建vpc时会自动创建安全组自动创建的不删除3.5 购买 RDS MySQL这个只买一个就可以3.6 购买云 RedisTairredis也只要购买一个3.7 购买 SLB只买一个3.8 购买SLS开通后创建这里选择取消不接入数据3.9 获取RDS mysql 的内网地址和Redis 的内网地址3.9.1 获取RDS mysql 的内网地址在 RDS 详情页点击左侧菜单 “数据库连接” 或 “连接管理”3.9.2 获取Redis 的内网地址设置白名单3.10 数据迁移SQL 导入3.10.1 在RDS MySQL中先创建库和账号3.10.2 创建了数据库然后在本地终端上进行数据导出# 本地导出 SQLdockerexecmysql.server mysqldump-uroot-p123456\--default-character-setutf8mb4\--single-transaction\--set-gtid-purgedOFF\--no-create-db ry-vue/opt/ruoyi/sql/ry-vue-export.sql3.10.3 上传到 ECS-1在ruoyi文件里的sql找到ry-vue-export.sql将其放在电脑桌面上然后远程连接实例将数据上传到/opt目录下在左边有个文件点击文件然后双击/opt下的ruoyi目录。即可看到上传文件# 上传到 ECS-1通过 Workbench# 在 ECS-1 上导入 RDSrm-xxx.mysql.rds.aliyuncs.com是RDS MySql 的内网地址mysql-hrm-bp1064d028w406i06.mysql.rds.aliyuncs.com-uruoyi-pry-vue/root/ry-vue-export.sql# 验证mysql-hrm-xxx.mysql.rds.aliyuncs.com-uruoyi-pry-vue-eSHOW TABLES;# 结果30张表3.11 后端 jar 包配置与运行在ECS-1和ECS-2上进行3.11.1 在本地虚拟机从镜像中提取 jar 包# 从 Docker 镜像中复制 jar 包出来dockerrun--rmruoyi-admin:1.0cat/opt/ruoyi-admin.jar/tmp/ruoyi-admin.jar# 确认文件存在并将其放在桌面上ls-lh/tmp/ruoyi-admin.jar# 上传 /tmp/ruoyi-admin.jar 到 ECS-1 的 /opt3.11.2 安装JDK 1.8# 安装 JDK 1.8yuminstall-yjava-1.8.0-openjdk# 验证java-version3.11.3 application-druid.yml文件vimapplication-druid.yml# 数据源配置spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: master: url: jdbc:mysql://RDS MySql 的内网地址:3306/ry-vue?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: ruoyi password: 你的RDS密码 slave: enabled:falseurl: username: password: initialSize:5minIdle:10maxActive:20maxWait:60000connectTimeout:30000socketTimeout:60000timeBetweenEvictionRunsMillis:60000minEvictableIdleTimeMillis:300000maxEvictableIdleTimeMillis:900000validationQuery: SELECT1FROM DUAL testWhileIdle:truetestOnBorrow:falsetestOnReturn:falsewebStatFilter: enabled:truestatViewServlet: enabled:trueallow: url-pattern: /druid/* login-username: ruoyi login-password:123456filter: stat: enabled:truelog-slow-sql:trueslow-sql-millis:1000merge-sql:truewall: config: multi-statement-allow:true3.11.4 application.yml 文件vimapplication.yml ruoyi: name: RuoYi version:3.9.1 copyrightYear:2026profile: /opt/ruoyi/uploadPath addressEnabled:falsecaptchaType: math server: port:8080servlet: context-path: / tomcat: uri-encoding: UTF-8 accept-count:1000threads: max:800min-spare:100logging: level: com.ruoyi: debug org.springframework: warn user: password: maxRetryCount:5lockTime:10spring: messages: basename: i18n/messages profiles: active: druid servlet: multipart: max-file-size: 10MB max-request-size: 20MB devtools: restart: enabled:trueredis: host: redis内网地址 port:6379database:0password: 你的Redis密码 timeout: 10s lettuce: pool: min-idle:0max-idle:8max-active:8max-wait:-1mstoken: header: Authorization secret: abcdefghijklmnopqrstuvwxyz expireTime:30mybatis: typeAliasesPackage: com.ruoyi.**.domain mapperLocations: classpath*:mapper/**/*Mapper.xml configLocation: classpath:mybatis/mybatis-config.xml pagehelper: helperDialect: mysql supportMethodsArguments:trueparams:countcountSql swagger: enabled:truepathMapping: /dev-api referer: enabled:falseallowed-domains: localhost,127.0.0.1,ruoyi.vip,www.ruoyi.vip xss: enabled:trueexcludes: /system/notice urlPatterns: /system/*,/monitor/*,/tool/*3.11.5 运行 jar 包cd/opt/ruoyi# 在ECS-1和ECS-2上运行 jar 包java-jarruoyi-admin.jar# 让后端在后台持续运行nohupjava-jarruoyi-admin.jar/opt/ruoyi/logs/ruoyi.log21curlhttp://localhost:8080# 返回欢迎使用Ruoyi后台管理框架当前版本v3.9.13.12 前端迁移3.12.1 在本地虚拟机上找到dist文件cd/path/to/ruoyi-ui# 安装依赖如果 node_modules 不存在npminstall# 打包生产环境npmrun build:prod# 压缩 distzip-rdist.zip dist/3.12.2 上传到 ECS-1和ECS-2后解压cd/opt/ruoyiunzip-odist.zipcp-rdist /usr/share/nginx/html/3.12.3 在 ECS-1 和 ECS-2 上安装 Nginxyuminstall-ynginx# 启动 Nginxsystemctl start nginx systemctlenablenginx# 验证curlhttp://localhost:803.12.4 配置 Nginx 反向代理cat/etc/nginx/conf.d/ruoyi.confEOF server { listen 80; server_name _; root /usr/share/nginx/html/dist; index index.html index.htm; location / { try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } EOF# 测试配置nginx-t# 重启 Nginxsystemctl restart nginx# 验证在浏览器访问 SLB 公网 IPhttp://218.244.145.103.13 测试高可用停止 ECS-1然后再次访问SLB 公网 http://218.244.145.103.14 安装 Logtail 采集日志到 SLS3.14.1 创建弹性公网IP在ECS实例这一块的基础信息里有一个弹性公网ip创建弹性公网ip这里需要绑定实例3.14.2 安装 Logtail# 下载安装脚本wget-T10-t2https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/logtail.sh-Ologtail.sh# 安装bashlogtail.shinstallauto# 启动 Logtail/etc/init.d/ilogtaild start# 查看状态/etc/init.d/ilogtaild status3.14.3 在 SLS 控制台配置采集进入 SLS 控制台 → 选择 Project ruoyi-logs-0829把ruoyi-ecs-group作为应用机器组完成后等待一会就可以看到日志了四、迁移过程中出现的问题问题原因解决方案RDS 连接失败本地虚拟机不在 VPC 网段通过 ECS 中转导入 SQLLogtail 无法下载ECS 无公网 IP临时绑定弹性 IP装完释放RDS 白名单未配置忘记添加 ECS IP添加 10.0.1.15, 10.0.2.101