{{i18nTranslate('_layout.t11')}} {{i18nGetLang()==='zh' ? 'EN' : '中文'}}

# 管理平台迁移

可以将管理平台或者其他节点迁移到别的服务器。

## 使用辅助功能迁移

从v0.3.5以后，可以在老的管理平台上使用迁移辅助功能将配置迁移到新的平台，在”系统设置” – “高级设置” – “迁移”里可以找到此功能。

## 手动迁移

### 原理

整个平台大致架构为：

               数据库
                /|\
                 |
    管理平台 --> API节点 <-- 边缘节点
                /|\
                 |
                 |
               其他节点

可以看出：

1. 修改数据库时会影响API节点，所以需要同时修改API节点的数据库配置（见迁移步骤）；
2. API节点是处于所有节点的中心，修改了API节点的地址后，需要修改所有管理平台、边缘节点和其他节点的配置，以便于其他节点能连接到新的API节点地址。
3. 如果只需要重新部署管理平台、边缘节点或者其他节点，则不需要修改API节点配置；

### 迁移步骤

1. 如果要迁移管理平台，需要将老的管理平台安装目录 `edge-admin/` 目录整体拷贝到新的服务器（尤其要注意其下的 `configs/` 目录；
   1. 如果API节点是和管理平台一起安装的，那么迁移后，API节点的地址也会自动修改为新的服务器的IP地址，此时需要修改 `edge-admin` 目录下面的 `configs/api_admin.yaml`（GoEdge v1.2.7之前是`api.yaml`） 中的 `endpoints` 中的API地址为新的API地址；
   2. 如果API节点是和管理平台一起安装的，在修改`api_admin.yaml`（GoEdge v1.2.7之前是`api.yaml`）配置后，可以使用 `EdgeAdmin安装目录/bin/edge-admin start` 启动管理平台，并登录，然后在”系统设置” – “高级设置” – “API节点”中修改API节点的访问地址为新的地址；
   3. 如果管理平台无法登录，并提示API节点无法连接，请检查 `configs/api_admin.yaml`（GoEdge v1.2.7之前是`api.yaml`） 配置文件中的API地址是否正确，如有错误请修改成正确的；
2. 如果要切换数据库，请将数据库复制到别的数据库，复制后，修改API节点中的 `configs/db.yaml` 中的 `dbs.prod.dsn` 参数，格式为 `用户名:密码@tcp(主机地址:端口)/数据库名?charset=字符集&timeout=超时时间`（GoEdge v1.3.9以前）或者 `user: 用户名 password: 数据库 database: 数据库名 host: 数据库主机地址`（GoEdge v1.3.9及以后），通常只需要修改其中的用户名、密码、主机地址参数；修改后，重启API节点生效；
3. 如果要迁移API节点（或更改API节点IP），请将API节点安装目录 `edge-api/` 拷贝到新的服务器上（尤其要注意其下的 `configs/` 目录），并启动；需要确保 `configs/db.yaml` 中的数据库连接信息没有错误，请参考步骤1；
   1. 如果API节点地址已经修改，此时管理界面因无法连接到API节点而不能登录，可以修改管理平台下的 `configs/api_admin.yaml`（GoEdge v1.2.7之前是`api.yaml`） 中的 `rpc.endpoints` 中的地址为新的API节点地址，然后重启管理平台（`edge-admin restart`），重新登录管理平台后，在 “系统设置 – 高级设置 – API节点” 中修改GRPC访问地址为新的API节点地址；
   2. 修改所有边缘节点的 `configs/api_node.yaml` 中地址为新的API节点地址，并重启边缘节点进程（`edge-node restart`）让配置生效。
   3. 如果API节点无法连接，请先参考文档修复API节点错误。

## 迁移后确认

在迁移后，请确认：

- 管理员可以正常登录管理平台；
- 所有边缘节点在线；
- 节点运行日志无异常。

## 数据库导出、导入

请参考 MySQL导出和恢复 一节内容。

## 常见问题

### 迁移过程中影响用户访问吗？

在管理平台和API节点过程迁移过程中，不影响边缘节点的正常运行，用户仍然可以正常访问到边缘节点上的网站。只是无法记录访问日志和统计数据。

### 管理平台无法进入怎么办？

如果是提示API错误的，请参考迁移步骤中的第2条。

其次要检查有没有启动管理平台节点、有没有在防火墙或者其他安全策略里放行对应端口。

再如果管理平台因为先前在Web服务绑定了固定的IP地址，而迁移后无法访问，可以手动修改 `edge-admin/configs/server.yaml` 文件，其中 `http` 和 `https` 分别表示管理平台HTTP和HTTPS的访问地址；

另外如果因为安全设置，导致自己无法登录管理平台的，GoEdge v1.3.5之前可以进入MySQL数据库，在 `edgeSysSettings` 表中删除 `adminSecurityConfig` 相关的记录：

    DELETE FROM edgeSysSettings WHERE code='adminSecurityConfig';

GoEdge v1.3.5及之后可以执行以下命令：

    edge-admin security.reset

然后重启管理平台（`edge-admin restart`）后进入重新设置安全设置。

{{i18nTranslate('_layout.t27')}}
{{i18nTranslate('_layout.t12')}}