You need to enable JavaScript to run this app.
导航

电商业务部署及数据库上云

最近更新时间2021.11.16 15:26:17

首次发布时间2021.11.15 16:57:17

近些年随着云计算、大数据等行业的高速发展,电商业务上云逐渐成为主流。本文为您介绍电商业务部署以及数据库上云的相关操作,指导您搭建数据库、部署业务及数据迁移等。

注意

本文仅为演示操作,文中出现的所有截图、费用等均为示例信息,无实际意义。您在实际操作中请以控制台展示为准。

方案介绍

数据库上云有如下两种场景:

  • 场景一:把火山引擎云服务器上自建数据库中的数据,通过火山引擎数据库传输服务DTS,迁移至火山引擎云数据库RDS。

  • 场景二:把其他云厂商云上存储数据,通过火山引擎数据迁移服务DMS,迁移至火山引擎对象存储TOS。

本文仅按照最基础的配置,为您进行介绍。

方案优势

  • 通过负载均衡进行流量转发,快速扩展应用对外服务的能力。
  • 通过Redis缓解高并发的数据读写。
  • 将静态资源存储在对象存储TOS,通过CDN分发,提升用户访问体验。
  • RDS提供高可用架构,保障数据的可用性和可靠性。

名词解释

产品介绍
私有网络VPCVPC为云上资源构建隔离的、自主配置和管理的虚拟网络环境,可以在自己创建的专有网络内创建和管理云产品实例,比如ECS、负载均衡、RDS等。
负载均衡CLB是一种将访问流量按策略分发给多台后端服务器的服务,可以扩展系统对外服务能力,通过消除单点故障提升应用系统的可用性。
云服务器ECS是一种由CPU、内存、云盘组成的资源集合,可以结合自己的需求申请对应大小、不同规格的资源,用于运行不同的业务负载。
云数据库RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案。
对象存储TOS是一款海量、安全、低成本、高可靠的云存储服务。
全局流量分发CDN通过广泛的网络节点分布,提供快速、稳定、安全、可编程的全球内容分发加速服务,支持将网站、音视频、下载等内容分发至接近用户的节点。
数据迁移服务DMS是一个线上数据迁移服务,可将其他云服务商对象存储(或文件存储)服务的数据在线迁移至火山引擎对象存储TOS中,也可以在火山引擎对象存储的存储桶之间做数据迁移。
数据库传输服务DTS是一个线上数据库传输服务,可将火山引擎云服务器中数据库,传输至火山引擎云数据库RDS。

场景一操作步骤

模拟电商资源建站

创建私有网络

  1. 登录火山引擎私有网络控制台。

  2. 在顶部导航栏选择私有网络所在的地域,需要与待部署的云资源保持一致,本操作选择“华北2(北京)”。

  3. 单击“创建私有网络”,进入私有网络配置界面。

  4. 私有网络和子网的配置如下,配置完成后单击“确定”。
    image.png

  5. 私有网络和子网创建完成后,单击私有网络名称,可查看私有网络详细信息,当前私有网络为可用状态。
    image.png

申请公网IP

  1. 在左侧导航树单击“公网IP” ,进入公网IP页面。

  2. 单击“申请公网IP”,参数配置如下图所示,地域需要与私有网络保持一致。image.png

  3. 单击“确认订单”,确认信息无误后勾选“我已阅读并同意《公网IP服务条款》”,然后单击“立即购买”。

创建ECS实例

  1. 登录云服务器控制台

  2. 在左侧导航树选择“实例与镜像 > 实例”,然后单击“创建实例”。

  3. 配置相关参数,基础配置如下图所示,操作系统选择CentOS 7.8。
    image.png

  4. 在网络和高级配置阶段,私有网络和子网选择已创建的“vpctest”和“subnettest”,配置完成后单击“下一步:确认订单”。
    image.png

  5. 确认订单信息无误后,勾选“我已阅读并同意《云服务器服务条款》”,然后单击“立即购买”。

  6. 返回实例控制台,刷新后即可以看到刚刚创建的云服务器实例。

公网访问验证

  1. 单击云服务器实例列表“操作”列的“ ··· > 网络配置 > 绑定公网IP”。

  2. 选择之前创建的公网IP“EIPtest”,然后单击“确定”。
    image.png

  3. 为了可远程登录到服务器ECS,需确认云服务器ECS所在安全组已经放端口22。

    1. 单击云服务器实例名称,进入“概览”页面。

    2. 在概览页面单击安全组名称,跳转至云服务器所在安全组“概览”。

    3. 单击“访问规则”,在“入方向”页签下查看安全组访问规则是否放通端口22,若没有放通,单击“添加规则”,添加一条规则,如下图所示。

    image

  1. 在远端客户端执行命令 ssh root@云服务器公网IP地址,如ssh root@180.XX.XX.62,输入yes然后输入登录云服务器的密码,成功登录表明可远程访问云服务器ECS。
    image.png

搭建Magento网站并创建自建数据库环境

安装配置LAMP平台

系统/软件说明

  • CentOS 7.8
  • Apache 2.4.6
  • Mysql 5.7
  • PHP 7.0
  • Composer 1.10.19
  • Magento 2.1
  1. 登录已经创建的云服务器实例“ecstest”。

  2. 执行如下命令,更新软件包并安装Apache。

    yum -y update
    yum -y install httpd
    
  3. 执行如下命令,启动Apache。

    systemctl start httpd #启动Apache
    systemctl enable httpd #设置开机自启动
    
  4. 修改Apache配置文件。

    1. 执行如下命令,按i键进入编辑模式。

      vim /etc/httpd/conf/httpd.conf
      
    2. 所示位置的配置参数AllowOverride None 改为AllowOverride All
      image.png

    3. 在配置文件末新增一行配置参数LoadModule rewrite_module modules/mod_rewrite.so,如下图所示,完成后按Esc,然后输入:wq按回车键退出编辑模式。
      image.png

  5. 执行如下命令,在云服务器上安装Mysql 5.7。

    sudo rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    
  6. 执行如下命令,确认Mysql仓库是否成功添加。

    sudo yum repolist all | grep mysql | grep enabled
    

    如果显示结果如下,则表示成功添加Mysql仓库,否则表示Mysql仓库添加失败,请重新添加。
    image.png

  7. 执行如下命令,开始安装Mysql5.7,大约需要几分钟,请耐心等待。

    sudo yum -y install mysql-community-server
    
  8. 执行如下命令,启动Mysql,查看Mysql状态。

    sudo systemctl start mysqld
    sudo systemctl enable mysqld
    sudo systemctl status mysqld
    

    预期结果如下图所示:
    image.png

  9. CentOS上的root默认密码可以在文件/var/log/mysqld.log找到,并通过如下命令可以打印出来。

    cat /var/log/mysqld.log | grep -i 'temporary password'
    

    image.png

  10. 执行如下命令,设置数据库编码为utf8。

    sudo vim /etc/my.cnf
    

    i进入编辑模式,分别在[mysqld]、[client]、[mysql]节点下添加编码设置,添加完成后按Esc,然后输入:wq按回车键退出编辑模式。

    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8
    
  11. 执行如下命令,重启Mysql。

    sudo systemctl restart mysqld
    

    登陆Mysql修改密码,修改完成后执行quit;命令退出Mysql。

    mysql -u root -p
    #输入密码 
    #执行修改密码语句
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
    
  12. 依次执行以下命令,安装PHP 7和用于Magento安装的一些必需的PHP扩展。

    1. 执行如下命令,添加ius源和epel源。

      yum install https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      
    2. 执行如下命令,添加Webtatic源。

      rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
      
    3. 执行如下命令,安装PHP7及所需扩展

      yum -y install php70w php70w-pdo php70w-mysqlnd php70w-opcache php70w-xml php70w-gd php70w-mcrypt php70w-devel php70w-intl php70w-mbstring php70w-bcmath php70w-json php70w-iconv
      
    4. 执行php -v命令查看PHP版本,返回结果如下所示,说明PHP安装成功。
      image.png

  13. 配置PHP。

    1. 运行以下命令打开PHP配置文件.

      vim /etc/php.ini
      
    2. 在文件最后添加关于内存限制和时区的配置:

      ; 允许为PHP脚本分配的最大内存值。您可根据实际情况增加或减少内存限制
      memory_limit = 1024M
      ; 设置时区为上海
      date.timezone = Asia/Shanghai
      
    3. 添加后如图所示, 按下Esc键后,输入:wq并按回车键,保存并关闭文件。
      image.png

  14. 执行systemctl restart httpd命令,重启Apache服务。

    1. 运行mysql -u root -p命令使用root用户和密码登录MySQL。

    2. 运行以下命令创建数据库。

      CREATE DATABASE test1; #根据实际情况将test1替换为您需要创建的数据库名称
      
    3. 依次运行以下命令为数据库创建用户,完成后输入exit并回车退出MySQL。

      GRANT ALL ON test1.* TO <YourUser>@localhost IDENTIFIED BY '<YourPass>'; #替换<YourUser>和<YourPass>为您需要创建的账号和密码
      FLUSH PRIVILEGES;
      

安装并配置Composer

Composer是PHP的一个依赖管理工具。Composer允许您申明项目所依赖的代码库,并帮您在项目中安装依赖的代码库。

  1. 执行以下命令安装Composer。
    由于Magento2的依赖为Composer1.x版本。所以需确保安装的Composer版本的1.x版本。

    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php composer-setup.php --install-dir=/usr/bin/ --filename=composer --version=1.10.19
    

    执行结果如下图所示。

    image.png

  2. 执行以下命令,配置Composer全局使用。

    mv /root/composer.phar /usr/bin/composer
    
  3. 执行composer -v命令,验证Composer否成功安装。
    回显信息如下图所示。
    image.png

安装Magento

您可以使用不同的方法安装Magento,可以选择是否安装示例数据。

  • 如果安装Magento仅用于测试,您可以选择安装示例数据。

  • 如果安装Magento用于生产环境,建议您安装全新的Magento,从头开始配置。

  1. 执行yum -y install git命令,安装git。

  2. 依次执行如下命令,使用git下载Magento。

    cd /var/www/html/
    git clone https://github.com/magento/magento2.git
    
  3. 执行如下命令,将Magento切换到稳定版本。

    默认情况下前一步骤的命令会安装最新开发版本的Magento。在生产环境中使用时,建议切换到稳定版本,否则将来将无法进行升级。

    cd magento2 && git checkout tags/2.1.0 -b 2.1.0
    

    回显信息如下:

    image.png

  4. 执行如下命令,将安装文件移到Web服务器的根目录下。

    shopt -s dotglob nullglob && mv /var/www/html/magento2/* /var/www/html/ && cd ..
    
  5. 依次执行如下命令,设置Magento文件的权限。

    chown -R :apache /var/www/html
    find /var/www/html -type f -print0 | xargs -r0 chmod 640
    find /var/www/html -type d -print0 | xargs -r0 chmod 750
    chmod -R g+w /var/www/html/{pub,var}
    chmod -R g+w /var/www/html/{app/etc,vendor}
    chmod 750 /var/www/html/bin/magento
    
  6. 分别执行如下命令,安装Magento。

    yum install -y unzip zip
    cd /var/www/html/
    composer install
    
  7. 使用浏览器访问http:// 云服务器公网IP地址/setup,如“http://180.XX.XX.62/setup” ,页面显示如下图所示,表示Magento安装成功。

  8. 配置Magento。

    1. 单击“Agree and Setup Magento”按钮,开始Magento的配置。

    2. 单击“Start Readiness Check”按钮,开始环境检测,检测通过后单击“Next”。

    image.png

  9. 设置MySQL数据库名称、并输入“root”帐户的密码,然后单击“Next”。

    数据库名称是上文“安装配置LAMP平台”的步骤14中创建的数据库名称;密码为登录MySQL数据库root账户的密码。

    image.png

  10. 设置网站的访问地址、后台管理地址,如http://180.XX.XX.62/admin_1h5z9s,然后单击单击“Next”。

    image.png

  11. 设置语言和时区和货币类型,然后单击“Next”。

    image.png

  12. 创建管理员账户,然后单击“Next”。

    image.png

  13. 单击“Install Now”立即安装系统。

    image.png

  14. 完成后显示如下界面时,表示系统安装成功。

    image.png

  15. 设置cron来运行预定的作业。

    1. 执行如下命令配置cron作业。

      crontab -u apache -e
      
    2. i键进入编辑模式,添加以下内容,完成后按Esc,输入:wq后按回车键退出编辑状态。

      */10 * * * * php -c /etc /var/www/html/bin/magento cron:run
      */10 * * * * php -c /etc /var/www/html/update/cron.php
      */10 * * * * php -c /etc /var/www/html/bin/magento setup:cron:run
      
  16. 使用浏览器访问 http:// 云服务器公网IP地址 ,如http://180.XX.XX.62 ,界面显示如下图。

    image.png

  17. 使用浏览器访问步骤8中设置的Magento后台管理地,如http://180.XX.XX.62/admin_1h5z9s,使用设置的管理账号和密码登录,登录成功后显示如下图所示。

    若登录后界面提示“One or more indexers are invalid. Make sure your Magento cron job is running.”,可在目录/var/www/html下执行php bin/magento indexer:reindex命令。

    image.png

开通数据库RDS实例

创建RDS实例并完成购买

  1. 登录云数据库控制台,在顶部导航栏切换至华北2(北京)。

  2. 单击创建实例,根据下图配置参数,完成后单击“确认订单”,根据界面指导,完成购买。
    image.png

创建RDS实例账号

  1. 单击新创建的数据库名称,进入详情页面,然后单击“账号管理”页签。

  2. 单击“创建账号”,设置数据库账号及密码,账号类型选择“普通账号”。
    image.png

创建RDS数据库

  1. 单击新创建的数据库名称,进入详情页面,然后单击进入“数据库管理”页签。

  2. 单击“创建数据库”,参考下图配置参数,完成数据库的创建。

    注意:使用数据库普通权限账号迁移时,需确保数据库名称和源数据库名称一致。

    image.png

源库配置检查确认

源库binlog开启检查& 源库server-id检查

如果选择增量迁移,需要开启源库binlog,如果binlog没有打开,需要修改源数据库配置文件中的log_bin,开启二进制日志log_bin=mysql_bin。配置完成后重启源数据库,参考MySQL重新进行预检查。

  1. 登录云服务器云服务器实例。

  2. 执行命令mysql -u root -p,输入数据库密码登录MySQL数据库。

  3. 执行命令,查看log_bin状态,如果log_bin值为OFF,需要修改/etc/my.cnf配置。

    show global variables like "log_bin";
    

    image.png

  4. 执行命令vi /etc/my.cnfi进入编辑状态,根据下方完整的配置文件补充所缺的信息,补充完成后,按Esc输入:wq然后按回车键,退出编辑状态。

    # 完整的配置信息
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    symbolic-links=0
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld.pid
    
    log-bin=/var/lib/mysql/mysql-bin
    server-id=2
    
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    collation-server=utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server=utf8
    
  5. 执行命令service mysqld restart重启数据库。

  6. 执行命令mysql -u root -p,输入密码,重新进入数据库。

  7. 在数据库中执行命令show global variables like "log_bin";,重新查看log_bin状态,此时log_bin状态为ON。
    image.png

  8. 执行如下命令,查询server_id。

    show global variables like "server_id";
    

    image.png

源库binlog模式检查

执行命令show global variables like "binlog_format";查询binlog_format模式。

  • binlog_format值为ROW,则符合预期。
    image.png

  • binlog_format值不为ROW,需执行命令set global binlog_format=row;将模式修改为ROW。

配置数据库访问限制

执行如下命令,创建数据库迁移账号,并授予权限。

create user dtssync identified by 'P@ssw0rd'; 
grant REPLICATION CLIENT,REPLICATION SLAVE,select on *.* to 'dtssync'@'%' identified by 'P@ssw0rd'; 
flush privileges;

配置安全组

配置数据迁移任务时,如果需要放开源数据库或目标数据库的DTS访问限制,只需放开目标数据库所在区域对应的DTS IP段。

DTS IP段可在下文“使用DTS进行数据迁移”中“创建DTS”时单击“查看DTS IP段”获取。
image.png

  1. 返回云服务器控制台,单击自建数据库所属的云服务器实例名称,进入详情页面。

  2. 在详情页面,单击安全组名称“Default”,进入安全组概览页面。
    image.png

  3. 单击“访问规则”页签,然后单击“添加规则”,参照下图添加一条安全组规则,放通DTS IP段。
    image.png

使用DTS进行数据迁移

创建DTS

  1. 进入数据传输服务DTS控制台,在顶部导航栏选择“华北2(北京)”。

  2. 单击“创建任务”创建,参考下图配置一个新的迁移任务。
    image.png

  3. 配置迁移对象,然后单击“预检查并启动”。
    image.png

  4. 等待检查结果均成功后,单击“确定”返回DTS控制台,此时迁移任务状态为“执行中”。
    image.png

    image.png

购买DTS等待迁移

  1. 单击迁移任务名称,进入任务详情页面,然后单击“任务进度”,查看迁移状态。
    image.png

  2. 迁移完成后,通过navicat登录数据库查看迁移的信息。

    image.png

增量数据验证

在自建源数据库表“score”中增加rows,可以看到RDS增量数据同步之后信息如下图所示。

image.png

场景二操作步骤

本文以迁移阿里云对象存储数据为例进行介绍,其他云厂商数据迁移的配置与此类似。

迁移第三方云上数据到火山引擎对象存储

  1. 登录对象存储控制台,单击右侧“创建Bucket”,创建用于迁移的TOS目标桶。
    image.png

  2. 参照下图,配置存储桶参数,然后单击“确认”完成创建。
    image.png

  3. 创建完成后,可在桶列表中查看。
    image.png

  4. 单击右上角账户名称,选择“访问控制”,单击“密钥管理 > 新建密钥”创建密钥,完成后打开AccessKey Secret下的开关查看并复制AccessKey Secret信息。

    image.png

  5. 登录数据迁移服务控制台,单击“创建迁移任务”,参考下图进行源端配置,单击“连接测试”,测试与源端的联通性,如果信息输入无误会提示“连接成功”。

    源端Access key、Endpoint等信息可参考第三方厂商对象存储服务相关文档。

    image.png

  6. 参考下图,进行目的端配置,完成后单击“下一步:设置任务参数”。

    image.png

  7. 参考下图设置任务参数,完成后单击“下一步:确认任务信息”。

    image.png

  8. 确认任务信息无误后,单击“提交”,然后返回查看迁移任务状态。当迁移任务状态变为“迁移成功”,表明初始迁移任务已经完成。

    image.png

  9. 返回对象存储控制台,单击目标桶名称进入“文件列表”页面,可以看到文件已经成功迁移到了目标桶内。

    image.png

业务流量切换

  1. 停下业务,并确保两边的数据一致。

    本操作暂不涉及替换。

  2. 将阿里云的应用连接切换到火山引擎并公网访问数据库,保持单边写入。

  3. 更换数据库地址:

    1. 查看源应用db的配置文件。

    2. 将文件中db的host地址,替换为rds的地址。

    回滚方案:将连接地址切回。

  4. 修改域名公网DNS解析,将用户访问切换到火山引擎应用。

    回滚方案:将域名解析切回。

至此,已完成电商部署及数据库上云的全部操作。