# 数据库一键搬家工具

# 一键搬家的优势

  • 1、官方的web控制台 需要一个一个表导出导入,操作繁琐。而 一键搬家 不需要。

  • 2、直接用 官方的web控制台 导出的json文件导入腾讯云,会出现24位id和外键搜索查不到的bug。而 一键搬家 自动帮你所有24位id增加1位解决此bug。

  • 3、不仅支持将 A账号 下的 A1空间 搬家到 A2空间,还支持将 A账号 下的 A1空间 搬家到 B账号 下的 B1空间

  • 4、省心、省力、解放双手!

# 一键搬家最重要的优势

如果你用 官方的web控制台 从阿里云空间导出的json文件导入腾讯云空间,你会发现根据 _id 搜索时,有可能无法搜索到数据,那是因为腾讯云不支持阿里云生成的24位 _id,阿里云生成的24位 _id 导入到腾讯云空间后,会造成无法根据 _id 来查询数据,而 一键搬家 可以帮你完美解决这个棘手问题。

# 效果视频

# 名词定义

  • 1、旧空间:就是你需要搬家的空间。

  • 2、新空间:就是你需要把旧空间搬到这的空间。

# 注意事项

  • 1、请确保 旧空间新空间 是可以正常访问的空间。

  • 2、新空间 数据库的数据在导入前 会被全部清空(需要注意空间别选错了,否则后果自负)。

  • 3、旧空间 数据库的数据 不会被清空(也不会被修改)

  • 4、请一定要在阿里云环境 相对稳定 的时间段进行搬家(如果当前阿里云出 故障 了, 不稳定 ,则请等阿里云环境稳定了再进行搬家)

  • 5、腾讯云的空间会消耗数据库查询、写入次数,以及云函数流量。

  • 6、目前大致耗时 = (你数据量总记录数 / 1000) 秒(即每秒搬1000条数据)(后面会继续优化这个速度)

  • 7、如有问题,可以加Q群:22466457 进行反馈(关于插件问题必定会得到处理)。

# 插件市场地址

点击前往 (opens new window)

# 操作步骤

  • 1、打开【一键搬家】项目根目录 vk.db.config.js 配置文件,修改 oldEnvnewEnvdb 配置

# 可以自动根据 db_init.json 生成 vk.db.config.js (在项目根目录执行 node vk.create-db-config.js,可以自动根据 db_init.json 文件生成数据库表名列表)

如何获取 db_init.json

uniCloud控制台 导出 db_init.json 选择只导出首条记录,生成不包含ID(包含也没事)【一键搬家】运行时,会自动清空新空间的数据。(也可以直接从你旧项目中复制 db_init.json,但需保证旧项目中的 db_init.json 包含了所有表和表索引)

  • 2、【一键搬家】项目绑定 旧空间,并上传云函数 vk-db-migration

  • 3、【一键搬家】项目切换到 新空间 ,在 新空间 也上传云函数 vk-db-migration

如何切换空间?

右键 uniCloud 目录,点击关联空间,选择需要切换的空间。

如何切换阿里云和腾讯云空间

右键 uniCloud 目录,点击重命名,腾讯云为: uniCloud-tcb ,阿里云为 uniCloud-aliyun,然后再右键 uniCloud 目录,点击关联空间,选择需要切换的空间。

# 特别注意:如果你购买的是普通授权版(非源码授权版),你可能需为两个空间各购买1次插件。

  • 4、在 新空间 初始化你自己数据库的 db_init.json (注意,最好不带任何数据库数据,这步骤只为了创建数据库索引,但即使带了也没事,【一键搬家】运行时,会自动清空新空间的数据)

  • 5、【一键搬家】项目切换回 旧空间 ,启动 一键搬家 项目(请使用连接云端云函数)

注意:运行前先确认下,旧空间和新空间没有填错,否则运行时,新空间数据会清空(旧空间数据不会变)

  • 6、启动【一键搬家】项目,访问首页,当看到页面控制台上打印 点击上方【开始一键搬家】按钮可进行一键搬家 时,点击此按钮即可。

  • 7、点击【开始一键搬家】按钮

  • 8、如不出意外,等待进度条到100%即可。如果出了意外(比如阿里云数据库不稳定导致连续20次数据库连接失败(目前会自动重试20次),则需要刷新页面并重新点击【开始一键搬家】按钮

  • 9、完成后请将 uniCloud/cloudfunctions/vk-db-migration/vk.db.config.jsrunKey 设置为false,再分别上传到 旧空间新空间(这步很关键,防止后面误点导致数据被清空,也可以直接去web控制台删除云函数 vk-db-migration

  • 10、完成。