当您计划将ECS实例中部署的网站程序迁移至轻量应用服务器时,需要手动完成数据迁移操作。您可以参考本文介绍的迁移方式完成服务器间的数据迁移。

前提条件

已创建轻量应用服务器。创建服务器的具体操作,请参见创建轻量应用服务器

背景信息

本文示例中,服务器以及迁移涉及的工具说明如下:
  • 服务器说明如下表所示。
    ECS实例 轻量应用服务器
    • 示例名称:服务器A
    • 镜像:CentOS 7.8公共镜像。
    • 运行环境及应用程序:在LNMP环境中部署了WordPress网站。
      其中,应用的版本信息如下:
      • Nginx版本:1.16.1
      • MySQL版本:5.7.28
      • PHP版本:7.0.33
      • WordPress版本:5.1.10
      说明 本文不介绍如何在ECS实例中搭建LNMP环境以及部署WordPress网站。如果您需要了解具体操作,请参见手动搭建WordPress(CentOS 7)在ECS实例上手动搭建WordPress (CentOS 7)
    • 示例名称:服务器B
    • 镜像:不限。
    • 服务器密码:已设置。具体操作,请参见管理服务器密码
  • 迁移涉及的工具说明如下表所示。
    工具 说明
    宝塔面板免费版 一款服务器运维面板。本文将借助宝塔面板,在轻量应用服务器中重新部署与ECS实例内一致的LNMP环境。
    scp命令 该命令是基于SSH协议的远程拷贝文件的命令。服务器A中的网站程序(不包含数据库数据)将通过scp命令拷贝至服务器B中。
    阿里云数据传输DTS 服务器A中网站程序的数据库数据,将通过阿里云数据传输DTS迁移至服务器B的数据库中。关于DTS的更多信息,请参见什么是数据传输服务DTS

本文的示例场景中,会将服务器A中的运行环境重新部署至服务器B,然后将搭建好的WordPress网站成功迁移至服务器B,并保证网站可运行、数据完整。

其中,服务器A的WordPress网站主页信息以及MySQL数据库中WordPress相关表数据,如下图所示。在完成迁移后,服务器B中的数据将与此保持一致。
  • WordPress网站主页信息wp主页
  • MySQL数据库中WordPress相关表数据信息mysql-wp

迁移前的准备工作与注意事项

在开始迁移之前,您需要完成以下准备工作:
  • 创建快照以备份数据。
    建议您分别为ECS实例与轻量应用服务器创建快照,如果因迁移失败造成服务器数据异常,您可以通过快照回滚服务器的云盘数据。具体操作,请参见:
  • 检查网络。

    您需要确保ECS实例与轻量应用服务器具备公网访问能力。如果是跨国际地域迁移,请注意由网络环境不稳定造成的迁移速率过慢等问题。

  • 检查服务器内的授权应用。

    ECS实例与轻量应用服务器处于不同的专有网络VPC中,因此在迁移数据后,系统底层硬件设备会发生变化,可能会导致某些与硬件绑定的应用许可证(license)失效,您需要自行做好检查。

在开始迁移之前,您需要了解以下注意事项:
  • 保证迁移前后两台服务器内的运行环境版本信息一致。

    部分网站对服务器的运行环境的版本有较高的要求,如果迁移前后的运行环境版本不一致,可能导致网站无法正常运行,因此您需要完全了解您的ECS实例中运行环境的版本信息。例如,您的运行环境为LNMP环境,则您需要了解Nginx、MySQL以及PHP应用的版本信息,并保证在轻量应用服务器上重新部署相同应用版本的运行环境。

  • 服务器的公网IP将发生变化。

    ECS实例的公网IP与轻量应用服务器的公网IP不相同,如果您的ECS实例绑定了域名,在迁移完成后,您需要在轻量应用服务器中重新绑定并解析域名。

步骤一:确认服务器B的操作系统

您需要确认新建的服务器B所使用的镜像与服务器A所使用的镜像是否一致:
  • 如果一致,请跳过该步骤。
  • 如果不一致,您需要为服务器B重置系统,使服务器B所使用的镜像与服务器A所使用的镜像尽量保持一致。例如,本示例中服务器A所使用的镜像为CentOS 7.8公共镜像,则需要将服务器B的镜像重置为CentOS 7.6系统镜像。重置系统的具体操作,请参见重置系统
轻量应用服务器的镜像选择说明:
  • 轻量应用服务器的系统镜像版本不如ECS实例公共镜像版本全面,在实际的迁移过程中,您可以选择接近的操作系统版本。
    例如,ECS实例使用的是CentOS 7.*版本的公共镜像,您可以将轻量应用服务器的镜像更换为CentOS 7.3或CentOS 7.6的系统镜像。
    说明 轻量应用服务器提供了BT-Panel应用镜像,该镜像中的操作系统为CentOS 7,且预装了宝塔面板。如果您的ECS实例使用的是CentOS 7.*版本的公共镜像,且您的业务可以通过宝塔面板快速部署,建议您为服务器B重置系统时,选用BT-Panel应用镜像。
  • 轻量应用服务器的应用镜像中预装了部分应用程序,可能与您的ECS实例内的网站运行环境所选用的应用程序相同,但是应用程序的版本可能不同。为了避免因应用程序的版本不同造成的网站程序运行失败,不建议您直接选用与ECS实例内运行环境匹配的轻量应用服务器应用镜像,而是选择轻量应用服务器的系统镜像。

    例如:您的ECS实例内搭建的运行环境为LAMP环境,不建议直接使用轻量应用服务器的LAMP应用镜像来运行网站程序,而是选择Linux相关的系统镜像后,重新部署网站的运行环境,并完成数据迁移。

步骤二:在服务器B中安装并配置宝塔面板

在实际的迁移过程中,您需要根据业务的真实情况,手动配置轻量应用服务器中的网站运行环境,以保证与ECS实例中的配置一致。

本文建议您在服务器B中,使用宝塔面板高效地配置服务器运行环境,并保证运行环境的版本信息与服务器A中的一致。宝塔面板部署环境的操作步骤如下所示:
说明 如果您的服务器B所用的镜像为BT-Panel应用镜像,请跳过安装宝塔面板的步骤,直接配置宝塔面板。
  1. 配置防火墙。
    本示例中,您需要在服务器B的防火墙中添加规则,放行MySQL的默认端口3306、宝塔面板的默认端口8888以及数据库管理工具phpmyadmin默认端口888。具体操作,请参见添加防火墙规则
  2. 通过管理控制台远程连接服务器B
  3. 运行以下命令,切换至root用户。
    sudo su root
  4. 安装宝塔面板。
    您可以访问宝塔面板获取适用于不同操作系统的安装包。本文示例中服务器B的操作系统为CentOS 7.6,因此,需要运行以下命令,安装宝塔面板免费版。
    yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
    如下图所示,表示成功安装宝塔面板。您需要保存外网面板地址内网面板地址username以及password信息。成功安装宝塔如需了解安装宝塔面板的更多信息,请参见宝塔Linux面板安装教程
  5. 在本地主机,通过浏览器访问外网面板地址,然后使用username以及password信息登录宝塔面板。
    登录宝塔面板后,您还需要登录宝塔账号。如果没有宝塔账号则需要先注册账号,您根据实际的页面提示即可完成操作。
    成功登录面板后,界面如下图所示。宝塔面板主页
  6. 在宝塔面板中,搭建服务器B所需的运行环境。
    1. 在左侧导航栏,单击软件商店
    2. 应用分类区域,单击运行环境
    3. 在软件列表中分别找到以下应用,并单击操作列的安装
      • Nginx

        单击安装后,选择nginx 1.16版本,然后单击提交

      • MySQL

        单击安装后,选择mysql 5.7版本,然后单击提交

      • PHP-7.0

        单击安装后,保持默认配置,然后单击提交

      • phpMyAdmin

        单击安装后,选择phpmyadmin 4.9版本,然后单击提交

      安装软件需要一定的时间,请您耐心等待安装完成。
  7. 在宝塔面板中,添加站点信息。
    1. 在左侧导航栏,单击网站
    2. 网站管理页面,单击添加站点
    3. 添加站点-支持批量建站对话框的创建站点页签,完成配置,然后单击提交
      主要配置说明如下表所示,没有提及的配置项保持默认配置。
      配置项 说明 示例
      域名
      • 如果您已将自己的域名绑定并解析至轻量应用服务器(服务器B),您可以直接设置域名信息。
      • 如果您还没有将自己的域名绑定并解析至轻量应用服务器(服务器B),您可以先设置为服务器B的公网IP地址,用于后续的测试操作。待迁移完成后,再为服务器B绑定并解析域名,同时修改此处的配置。
      本示例中,仅设置了服务器B的公网IP地址,用于后续对网站进行测试访问。
      备注 该站点的备注信息,可为空。 本示例中,设置为server-B
      根目录 网站所在的根目录信息。宝塔面板默认的根目录均在/www/wwwroot路径下。 本示例中,设置为/www/wwwroot/wordpress
      成功添加站点后,如下图所示。添加站点
  8. 在宝塔面板中,完成MySQL数据库的配置。
    1. 在左侧导航栏,单击数据库
    2. 数据库管理页面,修改root密码。
      1. 单击root密码
      2. root密码后的文本框中输入自定义密码,然后单击提交
        本示例中,密码设置为test123..
        说明 您在实际设置密码时,请妥善保存密码信息,避免因密码泄露造成的服务器异常风险。
    3. 数据库管理页面,单击phpMyAdmin
    4. phpMyAdmin页面,输入MySQL的root用户以及密码,然后单击执行
    5. 在顶部菜单栏,单击SQL。输入以下命令,然后单击执行
      迁移数据库数据时,需要MySQL数据库中的用户具有远程连接权限,因此,您需要在服务器B的MySQL数据库中,设置一个用于远程连接的MySQL用户。
      -- 切换数据库至mysql。
      use mysql;
      -- 本示例中,用于远程连接的MySQL用户名为testUser,密码为Test123。
      create user 'testUser'@'%' IDENTIFIED BY 'Test123';
      -- 为testUser授予远程连接权限。
      grant all privileges on *.* to 'testUser'@'%' with grant option;
      -- 使配置立即生效。
      flush privileges;
    6. 在顶部菜单栏,单击SQL。输入以下命令,然后单击执行
      为了方便后续WordPress网站迁移后可以直接连接MySQL数据库,您需要参考服务器A中WordPress网站对应的MySQL信息,在服务器B创建完全一致的数据库以及数据库用户。

      本示例中,服务器A的WordPress网站对应的MySQL数据库名为wordpress,数据库用户名为user,密码为PASSword123.

      -- 创建数据库wordpress。
      create database wordpress;
      -- 创建新用户user,新用户密码为PASSword123.。
      create user 'user'@'localhost' identified by 'PASSword123.';
      -- 赋予用户对数据库wordpress的全部权限。
      grant all privileges on wordpress.* to 'user'@'localhost' identified by 'PASSword123.';
      -- 使配置立即生效。
      flush privileges;
  9. 在宝塔面板中,完成防火墙配置。
    1. 在左侧导航栏,单击安全
    2. 防火墙区域,放行MySQL默认端口3306。
      具体的配置信息如下图所示。宝塔防火墙
    3. 单击放行

步骤三:配置服务器A

使用阿里云数据传输DTS迁移数据库数据前,您需要在服务器A中完成以下配置。

  1. 配置安全组。
    迁移数据库数据时,需要开放服务器防火墙的指定端口。服务器A服务器B内安装的数据库均为MySQL数据库,因此,您需要在服务器A的安全组中开放MySQL默认占用的3306端口。具体操作,请参见添加安全组规则
  2. 配置MySQL。
    迁移数据库数据时,需要MySQL数据库中的用户具有远程连接权限,因此,您需要在服务器A中,设置一个用于远程连接的MySQL用户。
    1. 远程连接服务器A
    2. 运行以下命令,登录MySQL数据库。
      mysql -uroot -p
    3. Enter password:后输入MySQL的root用户对应的密码。
      您需要输入您自行部署的MySQL数据库的登录密码。
      说明 在输入密码时,系统为了最大限度的保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
    4. 运行以下命令,使用mysql数据库。
      use mysql;
    5. 运行以下命令,创建用于远程连接的数据库用户。
      本示例中,用户名为testUser,密码为Test123
      说明 该密码仅为示例值。您需要自行设置密码,并妥善保管,避免因密码泄露造成的数据异常风险。
      create user 'testUser'@'%' IDENTIFIED BY 'Test123';
    6. 依次运行以下命令,为testUser授予远程连接权限。
      1. 授予远程连接权限。
        grant all privileges on *.* to 'testUser'@'%' with grant option;
      2. 使配置立即生效。
        flush privileges;
    7. 运行以下命令,退出MySQL。
      \q;

步骤四:使用scp命令拷贝网站程序

  1. 确认服务器B的信息。
    使用scp命令远程拷贝网站程序时,需要设置目标服务器的公网IP地址以及文件存储路径,因此,您需要确认服务器B的以下信息:
  2. 远程连接服务器A
  3. 运行以下命令,使用scp命令将服务器A的网站程序迁移至服务器B
    scp -r /usr/share/nginx/html/wordpress/* root@<服务器B的公网IP>:/www/wwwroot/wordpress
    scp命令解析:
    • -r:表示递归拷贝整个目录。如果您需要拷贝的是单个文件,请去掉-r
    • /usr/share/nginx/html/wordpress/*:表示本机(服务器A)中,网站程序所在的文件夹内的所有文件(/*)。
    • root@<服务器B的公网IP>:通过SSH协议远程连接服务器B
    • /www/wwwroot/wordpress:表示服务器B中的网站根目录。
  4. root@<服务器B的公网IP>'s password:后,输入服务器B的登录密码。
    说明 在输入密码时,系统为了最大限度的保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。
    scp远程拷贝文件的数据传输方式为加密传输,因此传输速率受限,您需要等待文件拷贝完成。

步骤五:使用DTS迁移数据库数据

  1. 登录数据传输控制台
  2. 在左侧导航栏,单击数据迁移,然后在页面右上角,单击创建迁移任务
  3. 完成迁移任务的配置。
    主要配置说明如下,未提及的配置项保持默认配置。
    • 任务名称:自定义名称。例如test-swas-01
    • 源库信息(服务器A的信息):
      配置项 配置示例
      实例类型 ECS上的自建数据库
      实例地区 服务器A所在的地域。例如:华东1(杭州)
      ECS实例ID 服务器A的实例ID
      数据库类型 MySQL
      端口 3306
      数据库账号 testUser
      数据库密码 Test123
      说明 该密码仅为示例值,您需要自行设置密码,并妥善保管,避免因密码泄露造成的数据异常风险。
    • 目标库信息(服务器B的信息):
      配置项 配置示例
      实例类型 有公网IP的自建数据库
      实例地区 服务器B所在的地域。例如:华东1(杭州)
      数据库类型 MySQL
      主机名或IP地址 服务器B的公网IP
      端口 3306
      数据库账号 testUser
      数据库密码 Test123
      说明 该密码仅为示例值,您需要自行设置密码,并妥善保管,避免因密码泄露造成的数据异常风险。
  4. 配置完成后,单击测试连接,测试各个服务器的MySQL是否可以正常连接。
    如下图所示,表示可以正常连接。测试连接
  5. 在页面底部,单击授权白名单并进入下一步,然后在DTS服务器访问授权对话框,单击下一步
  6. 迁移对象区域,单击bugtracker,然后单击图标1图标。
    其他配置保持默认设置。
    操作完成后,正确的界面信息如下图所示。已选择对象
  7. 在页面底部,单击预检查并启动
    您需要等待预检查完毕。预检查
    当预检查完毕后,单击下一步
  8. 购买配置确认对话框,选中《数据传输(按量付费)服务条款》,然后单击立即购买并启动
    本示例中通过DTS迁移数据的操作不计费,您在操作中需要以DTS控制台页面的实际信息为准。关于DTS计费的相关信息,请参见产品定价
    启动迁移任务后,您需要等待迁移任务完成。

步骤六:验证数据迁移结果

  1. 在本地主机中,通过浏览器登录服务器B的宝塔面板。
  2. 查看WordPress网站程序文件。
    1. 在宝塔面板的左侧导航栏,单击网站
    2. 网站管理页面的列表中,单击根目录列下的网站根目录。
      网站根目录
      如下图所示,您可以查看到迁移后,服务器B中存放的网站程序。网站程序文件
    3. 检查网站程序是否存在问题。
      您需要根据实际业务场景,自行检查并判断服务器B中的网站程序是否与服务器A中的一致。例如,在本示例中,服务器A中的wp-config.php文件设置了软链接。在迁移后,文件的软链接失效,因此文件权限发生了改变,需要修改服务器B中的wp-config.php文件权限。

      管理文件的操作可以在宝塔面板中完成。具体操作如下所示:

      1. 鼠标悬浮至对应的文件上,然后单击权限文件权限
      2. 设置权限对话框,设置文件的权限,完成后单击确定
        您需要根据实际的业务需求进行修改。本示例中,为wp-config.php文件授予了所有权限。设置权限
  3. 查看WordPress网站对应的数据库信息。
    1. 在宝塔面板的左侧导航栏,单击数据库
    2. 单击从服务器获取
      如下图所示,可以获取到服务器B中数据库wordpress的信息。wordpress宝塔
    3. 操作列,单击工具,查看数据库wordpress中的表数据信息。
      如下图所示,服务器B中的表数据信息与服务器A中一致。数据库宝塔
  4. 在本地主机中,使用浏览器访问服务器B的公网IP,测试访问WordPress网站。
    如下图所示,WordPress网站访问正常,且网站展示的数据与迁移前一致。wordpressB

后续步骤

由于更换了服务器,因此服务器的公网IP发生了变化。如果您之前的服务器中绑定并解析了域名,则您在完成数据迁移后,需要在新的服务器中重新绑定并解析域名。具体操作,请参见绑定域名和DNS解析