数据迁移
====

ohpm-repo**2.2.0**版本开始支持数据迁移功能。在ohpm-repo配置文件中，db是元数据存储的配置项，store是文件存储的配置项，db和store不能随意搭配，需要符合下面表格中的匹配规范。如果需要改变db和store的存储方式，需要进行数据迁移操作。

| 
db：元数据存储

 | 

**与db所适配的store：三方包文件存储**

 |
| :-- | :-- |
| 

filedb

 | 

file storage

 |
| 

mysql（ohpm-repo 1.1.0开始支持）

 | 

file storage，sftp storage（ohpm-repo 1.1.0开始支持），custom storage（ohpm-repo 2.2.0开始支持）

 |

#### 流程概述

1.  为保证数据不丢失，请务必先进行[数据备份](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-data-backup)。
2.  参考[升级指导文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-upgrade)，升级ohpm-repo到目标版本。
3.  [使用迁移命令导出数据](#section397615294129)。
4.  修改配置文件中db和store的存储方式，以[新存储方式启动ohpm-repo](#section1959530132115)。
5.  [使用迁移命令导入数据](#section17126124310255)。

#### 备份ohpm-repo数据

请参考[数据备份指导文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-data-backup)进行操作。

#### 升级ohpm-repo到最新版本

请参考[升级指导文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-upgrade)进行操作。

#### 使用迁移命令导出数据

1.  导出DB数据
    
    使用[export\_userinfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-export-userinfo)命令导出下面10张数据表的数据，并且导出加密组件，在命令执行目录生成打包export\_userInfo\_xxx.zip文件。
    
    *   user
    *   group\_member
    *   public\_key
    *   access\_token
    *   uplink
    *   uplink\_proxy
    *   repo
    *   repo\_permission
    *   validation\_config
    *   system\_security
    
    ohpm-repo export\_userinfo
    
    PS D:\\> ohpm-repo export\_userinfo
    \[2025-08-09T19:14:16.721\] \[INFO\] default - initialize "file database" successfully.
    ...
    \[2025-08-09T19:14:16.734\] \[INFO\] default - export the "system\_security" table done.
    \[2025-08-09T19:14:16.761\] \[INFO\] default - userinfo exported completed, save the .zip file to : "D:\\export\_userInfo\_1754738056722.zip".
    
2.  导出已上架的包列表
    
    使用[export\_pkginfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-export-pkginfo)命令，导出已上架的包列表。
    
    ohpm-repo export\_pkginfo
    
    PS D:\\> ohpm-repo export\_pkginfo
    ...
    \[2025-08-09T17:56:15.319\] \[INFO\] default - export matched packages success: save to "D:\\pkgInfo\_1754733375315.json".
    
3.  批量下载包文件
    
    使用[batch\_download](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-batch-download)命令，从ohpm-repo配置的store存储目录中批量下载包文件。
    
    使用第2步生成的pkgInfo\_xxxx.json作为[batch\_download](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-batch-download)命令参数，批量下载har或tgz包，在命令执行目录生成batch\_download\_xxx.zip文件。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/2/v3/5WHv3awPRWiuWa-cydUzWA/caution_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073822Z&HW-CC-Expire=86400&HW-CC-Sign=7C20A99B9A0DF7B43F2F7139F97B142A9AE5114C322951950E6334A4E1BF60A9)
    
    如果不迁移所有的包，您可以在第2步生成的pkgInfo\_xxxx.json文件中删除掉不需要下载的包。
    
    ohpm-repo batch\_download <pkgInfo\_xxxx.json地址>
    
    PS D:\\> ohpm-repo batch\_download D:\\pkgInfo\_1754733375315.json
    \[2025-08-09T18:33:30.349\] \[INFO\] default - download "@ohos/test@1.0.0" from repository "ohpm" successfully".
    \[2025-08-09T18:33:30.367\] \[INFO\] default - download "@ohos/test-two@1.0.0" from repository "ohpm" successfully".
    ...
    \[2025-08-09T18:33:30.466\] \[INFO\] default - all "6" package(s) are successfully download.
    \[2025-08-09T18:33:30.466\] \[INFO\] default - save the .zip file to : "D:\\batch\_download\_1754735610304.zip".
    \[2025-08-09T18:33:30.467\] \[INFO\] default - Clear the cache.
    
    batch\_download\_xxx.zip文件中以仓库名作为目录，每个仓库目录中存在pkgInfo.json文件，其中记录了每个包的**文件名**、**包名**、**组织**、**上传者**、**Tag标签**，用于在批量上传时准确指定ohpm-repo的数据库中某个用户为某个包的真实上传用户，同时将包的Tag标签一起上传。
    
4.  导出包权限数据
    
    ohpm-repo 5.4.0版本开始，支持使用[export\_pkgPermission](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-export-pkgpermission)命令，导出包权限数据。
    
    ohpm-repo export\_pkgPermission
    
    PS D:\\> ohpm-repo export\_pkgPermission
    ...
    \[2025-09-16T14:58:24.806\] \[INFO\] default - successfully exported all package permissions: saved to "D:\\packagePermission\_1758005904806.json".
    

#### 新存储方式重启ohpm-repo

打开ohpm-repo压缩包解压根目录中配置文件config.yaml，修改db和store配置项，指定所需存储方式。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/21/v3/p8JuEEqtTiCq6wwgghFpuA/caution_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073822Z&HW-CC-Expire=86400&HW-CC-Sign=BDCF9CEAC4EA09E2A21BA11C985C3D21F7641C20258C0A2E86D7BFBB22B512A9)

修改db和store配置项后，需要您在配置文件中同时配置新的<deploy\_root>目录。

使用修改后的配置文件重新执行安装命令（这一步必须执行，初始化数据库和其他必要的配置）。

ohpm-repo install --config <配置文件路径>

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/79/v3/9L2FbF5hQPaBo3DN87G6bA/zh-cn_image_0000002625071913.png?HW-CC-KV=V1&HW-CC-Date=20260612T073822Z&HW-CC-Expire=86400&HW-CC-Sign=D2650BDE16EAEFD483A67B19DB7482626A53D1815AE4D9AFF1541F0E9CCF9FAD "点击放大")

根据提示信息刷新环境变量，然后重新启动ohpm-repo。

ohpm-repo start

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/69/v3/E0jMcGxOSQCKCbVyU_Ur0A/zh-cn_image_0000002594472418.png?HW-CC-KV=V1&HW-CC-Date=20260612T073822Z&HW-CC-Expire=86400&HW-CC-Sign=0DB885096A6BF23D55BF0FD54F232BB9F86D2A668FA65B7BEBC70655B849810D "点击放大")

#### 使用迁移命令导入数据

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/12/v3/xe1ZmdcIRaa7fbDL-qHQ8A/caution_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073822Z&HW-CC-Expire=86400&HW-CC-Sign=051C6127476FD9F2F156D7DE312FAA5F6D465C7FF6C5235DA9E32A31F3A02F4B)

*   若需要部署在新机器上，将上面ohpm-repo导出的**export\_userInfo\_xxx.zip**、**batch\_download\_xxx.zip****和****packagePermission\_xxx****.json**文件传到需要部署的机器中。
*   需要先导入DB数据，再进行批量上传，避免上传时找不到对应的用户和组织而报错。

1.  停止ohpm-repo服务。
    
    请在开始数据迁移前停止ohpm-repo服务，以防止迁移过程中因用户访问导致数据异常。
    
2.  导入DB数据。
    
    使用[import\_userinfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-import-userinfo)命令将export\_userInfo\_xxx.zip中的数据导入数据库。
    
    ohpm-repo import\_userinfo <zip\_file> --clean-db
    
    PS D:\\> ohpm-repo import\_userinfo D:\\export\_userInfo\_1754738056722.zip --clean-db
    \[2025-08-09T19:19:31.623\] \[INFO\] default - verifying the validity of the meta crypto component.
    \[2025-08-09T19:19:31.633\] \[INFO\] default - the meta crypto component is verified successfully.
    \[2025-08-09T19:19:31.639\] \[INFO\] default - initialize "file database" successfully.
    \[2025-08-09T19:19:31.660\] \[INFO\] default - all database data has been cleaned.
    \[2025-08-09T19:19:31.660\] \[INFO\] default - importing data in the 'user.json' file.
    ...
    \[2025-08-09T19:19:31.673\] \[INFO\] default - importing data in the 'system\_security.json' file.
    \[2025-08-09T19:19:31.674\] \[INFO\] default - data import finished.
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/a6/v3/R6S3YwIeR9i5s1hdGJME7w/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073822Z&HW-CC-Expire=86400&HW-CC-Sign=6684B61EA0FF5A47AC69B4A21784163105D1F2D8759E8CCFAF3BFCF859235E56)
    
    1.  '--clean-db' 表示在导入数据前会清空所有表数据，包括启动ohpm-repo时默认生成的admin用户。
    2.  如果不配置 '--clean-db'，导入过程中可能存在相同数据，默认会以兼容的方式跳过该数据的导入。例如：存在相同的admin用户，数据库中原本存在的admin用户假设为A1，导入数据中的admin用户设为A2。默认保留A1，如果A2的id在其他待导入表数据中存在，将会提前替换为A1的id。要注意的是，之后需要使用A1的密码进行登录。
    
    数据导入成功后，可启动ohpm-repo服务并登录管理页验证。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/24/v3/UpDedntDRWi5c36G_tij1w/zh-cn_image_0000002624991767.png?HW-CC-KV=V1&HW-CC-Date=20260612T073822Z&HW-CC-Expire=86400&HW-CC-Sign=2B7C6294CE13AEA5AF3AA3B66435272CEF9473FE62928960FA96D982310F5DBD "点击放大")
    
3.  批量上传包到ohpm-repo配置的store目录。
    
    使用[batch\_publish](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-batch-publish)命令，将批量下载生成的batch\_download\_xxx.zip中的包依次发布到ohpm-repo。
    
    ohpm-repo batch\_publish <zip\_file>
    
    PS D:\\> ohpm-repo batch\_publish D:\\batch\_download\_1754735610304.zip
    ...
    \[2025-08-09T19:12:01.497\] \[INFO\] default - all 6 package(s) are successfully published
    \[2025-08-09T19:12:01.497\] \[WARN\] default - You are using "filedb" to store data. If you have already started a repository service, please run \`ohpm-repo restart\` to restart the service.
    
    所有包发布成功，进入ohpm-repo网站查看包数量和包详情是否正确。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1e/v3/H2MbmlL-QkSzySDFj1a6Ag/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073822Z&HW-CC-Expire=86400&HW-CC-Sign=773462EDB014B417AB1AD14A26359287AA1290D919F54F0DAA65E2AE46F35FF1)
    
    1\. 在batch\_publish命令后面可以配置“--force”，如果进行批量上传时某个包的组织在ohpm-repo中不存在，将任意选取ohpm-repo中一位管理员用户作为组织负责人，自动创建组织。
    
    2\. 当批量上传的zip文件中仅包含一个仓库目录，可在batch\_publish命令后面配置--target-repo <string>，指定所有包上传至目标ohpm-repo仓库。
    
4.  导入包权限数据。
    
    ohpm-repo 5.4.0版本开始，支持使用[import\_pkgPermission](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-import-pkgpermission)命令，导入包权限数据。导入时有[三种导入模式](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-import-pkgpermission#section8679814134119)，请根据不同模式的处理规则选择适合的导入模式。
    
    PS D:\\> ohpm-repo import\_pkgPermission D:\\packagePermission\_1758008466123.json --mode override
    ...
    \[2025-09-17T14:44:38.451\] \[INFO\] default - > start importing package permissions to the "ohpm" repository.
    \[2025-09-17T14:44:38.459\] \[INFO\] default - import package permissions completed.