私有化迁移方案
一、目标
vika维格表平台的测试环境、生产环境,所有应用服务、存储服务与定制开发服务完整地、平滑地无缝迁移到K8S,保障数据、用户、权限以及第三方集成平台等,迁移后保持正常运行且数据无误。
二、部署架构图

三、迁移准备事项
已集成自研或第三方系统,请自行同步迁移
有哪些服务或资源需要迁移?
类别 | 当前服务/资源 | 迁移说明 |
应用服务 | Redis | 自建,新环境重新安装 |
应用服务 | 数据库 | 自建,新环境重新安装,并迁移数据 |
应用服务 | rabbit-mq | 自建,新环境重新安装 |
应用服务 | Nginx | 自建,新环境重新安装 |
应用服务 | Minio | 重新安装Minio OSS存储服务,并迁移图片、附件、视频等数据 |
应用服务 | imageProxy | 自建,新环境重新安装 |
应用服务 | backend-server | 自建,新环境重新安装 |
应用服务 | socket-server | 自建,新环境重新安装 |
应用服务 | room-server | 自建,新环境重新安装 |
应用服务 | fusion-server | 自建,新环境重新安装 |
其他服务 | 自研或第三方服务 | 请自行在新环境重新安装与配置 |
四、迁移步骤
以下步骤涵盖测试环境与生产环境,新服务器部署完成后,需停机迁移数据,迁移步骤如下:
第一阶段:资源准备、新环境部署与调试
准备k8s集群、k8s证书上传到终端服务器、私有化镜像仓库(可选)
开通VPN账号,支持vika OP工程师可远程登录终端服务器
登录新终端服务器,使用k8s证书,开始在K8S平台上部署所有应用服务、存储服务与定制化服务
从旧环境同步环境变量
新环境启动完成
第二阶段:正式迁移
按双方约定时间,原POC服务器、新环境的应用停止,开始迁移数据库
根据实际情况选择:
情况1:若使用云MySQL数据库,通过云DTS数据服务,在线同步Mysql数据,拷贝到新服务器数据库
情况2:若本地安装的MySQL,用Navicat 工具或 mysql dump 执行导出数据库文件,再导入新数据库
具体步骤
先测试下验证工具可以正常同步数据,配置好工具并确认正常可以同步
全量一次同步,初始数据后,咱们可以在新环境试验下
最后旧服务器停服,全量同步一次
清空redis 所有key , 完毕
对象存储服务Minio数据,原POC服务器安装并使用Minio client工具,拷贝到新服务器,还原附件、图片等数据,参见 Minio数据迁移
新服务器,重启所有服务
切换域名到新环境
打开内网维格表地址,验证数据是否已完整迁移,测试定制化功能是否正常
试运行
Mysql 迁移
进入原来mysql 服务器执行备份
mysqldump -uroot -p vikadata > /data/mysql/vikadata_$(date +%F).sql
2. 导入到新数据库
mysql -uroot -p
-- 关闭binlog ,可选
> SET sql_log_bin = 0;
> use vikadata;
> source /data/mysql/vikadata_$(date +%F).sqlMinio数据迁移

执行步骤:
1、进入旧minio服务器,安装Minio Client(MC)工具
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc && chmod +x /usr/local/bin/mc2、在旧minio服务器,将新minio 暴露 k8s-endpoint 端口到本地
kubectl --kubeconfig kubeconfig port-forward services/minio --address 0.0.0.0 9000:9000 -n vika-datacenter3、执行一键同步minio数据
#!/bin/bash
###
# 本机能访问源和目标minio 存储桶
# 将k8s minio 代理到本机方法: kubectl port-forward services/minio --address 0.0.0.0 9000:9000 -n vika-datacenter
###
MINIO_ENDPOINT=${MINIO_ENDPOINT:-http://minio-apitable:9000}
MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-apitable}
MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-apitable@com}
MINIO_DEST_ENDPOINT=${MINIO_DEST_ENDPOINT:-http://127.0.0.1:9000}
MINIO_DEST_ACCESS_KEY=${MINIO_DEST_ACCESS_KEY:-admin}
MINIO_DEST_SECRET_KEY=${MINIO_DEST_SECRET_KEY:-73VyYWygp7VakhRC6hTf}
MINIO_BUCKET=${MINIO_BUCKET:-assets}
mkdir -p minio-dst
# cp from source
mc alias set src-minio ${MINIO_ENDPOINT} ${MINIO_ACCESS_KEY} ${MINIO_SECRET_KEY}
#mc cp -r src-minio/${MINIO_BUCKET} minio-dst/
# cp to dst
mc alias set remote-dst-minio ${MINIO_DEST_ENDPOINT} ${MINIO_DEST_ACCESS_KEY} ${MINIO_DEST_SECRET_KEY}
#mc cp -r minio-dst/${MINIO_BUCKET}/ remote-dst-minio/${MINIO_BUCKET}/
# 网络互通时使用,推荐
mc mirror -a src-minio/${MINIO_BUCKET}/ remote-dst-minio/${MINIO_BUCKET}/