近些年随着云计算、大数据等行业的高速发展,电商业务上云逐渐成为主流。本文为您介绍电商业务部署以及数据库上云的相关操作,指导您搭建数据库、部署业务及数据迁移等。
注意
本文仅为演示操作,文中出现的所有截图、费用等均为示例信息,无实际意义。您在实际操作中请以控制台展示为准。
数据库上云有如下两种场景:
场景一:把火山引擎云服务器上自建数据库中的数据,通过火山引擎数据库传输服务DTS,迁移至火山引擎云数据库RDS。
场景二:把其他云厂商云上存储数据,通过火山引擎数据迁移服务DMS,迁移至火山引擎对象存储TOS。
本文仅按照最基础的配置,为您进行介绍。
产品 | 介绍 |
---|---|
私有网络VPC | VPC为云上资源构建隔离的、自主配置和管理的虚拟网络环境,可以在自己创建的专有网络内创建和管理云产品实例,比如ECS、负载均衡、RDS等。 |
负载均衡CLB | 是一种将访问流量按策略分发给多台后端服务器的服务,可以扩展系统对外服务能力,通过消除单点故障提升应用系统的可用性。 |
云服务器ECS | 是一种由CPU、内存、云盘组成的资源集合,可以结合自己的需求申请对应大小、不同规格的资源,用于运行不同的业务负载。 |
云数据库RDS | 是一种稳定可靠、可弹性伸缩的在线数据库服务。提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案。 |
对象存储TOS | 是一款海量、安全、低成本、高可靠的云存储服务。 |
全局流量分发CDN | 通过广泛的网络节点分布,提供快速、稳定、安全、可编程的全球内容分发加速服务,支持将网站、音视频、下载等内容分发至接近用户的节点。 |
数据迁移服务DMS | 是一个线上数据迁移服务,可将其他云服务商对象存储(或文件存储)服务的数据在线迁移至火山引擎对象存储TOS中,也可以在火山引擎对象存储的存储桶之间做数据迁移。 |
数据库传输服务DTS | 是一个线上数据库传输服务,可将火山引擎云服务器中数据库,传输至火山引擎云数据库RDS。 |
登录火山引擎私有网络控制台。
在顶部导航栏选择私有网络所在的地域,需要与待部署的云资源保持一致,本操作选择“华北2(北京)”。
单击“创建私有网络”,进入私有网络配置界面。
私有网络和子网的配置如下,配置完成后单击“确定”。
私有网络和子网创建完成后,单击私有网络名称,可查看私有网络详细信息,当前私有网络为可用状态。
在左侧导航树单击“公网IP” ,进入公网IP页面。
单击“申请公网IP”,参数配置如下图所示,地域需要与私有网络保持一致。
单击“确认订单”,确认信息无误后勾选“我已阅读并同意《公网IP服务条款》”,然后单击“立即购买”。
登录云服务器控制台。
在左侧导航树选择“实例与镜像 > 实例”,然后单击“创建实例”。
配置相关参数,基础配置如下图所示,操作系统选择CentOS 7.8。
在网络和高级配置阶段,私有网络和子网选择已创建的“vpctest”和“subnettest”,配置完成后单击“下一步:确认订单”。
确认订单信息无误后,勾选“我已阅读并同意《云服务器服务条款》”,然后单击“立即购买”。
返回实例控制台,刷新后即可以看到刚刚创建的云服务器实例。
单击云服务器实例列表“操作”列的“ ··· > 网络配置 > 绑定公网IP”。
选择之前创建的公网IP“EIPtest”,然后单击“确定”。
为了可远程登录到服务器ECS,需确认云服务器ECS所在安全组已经放端口22。
单击云服务器实例名称,进入“概览”页面。
在概览页面单击安全组名称,跳转至云服务器所在安全组“概览”。
单击“访问规则”,在“入方向”页签下查看安全组访问规则是否放通端口22,若没有放通,单击“添加规则”,添加一条规则,如下图所示。
ssh root@云服务器公网IP地址
,如ssh root@180.XX.XX.62,输入yes
然后输入登录云服务器的密码,成功登录表明可远程访问云服务器ECS。系统/软件说明
登录已经创建的云服务器实例“ecstest”。
执行如下命令,更新软件包并安装Apache。
yum -y update yum -y install httpd
执行如下命令,启动Apache。
systemctl start httpd #启动Apache systemctl enable httpd #设置开机自启动
修改Apache配置文件。
执行如下命令,按i
键进入编辑模式。
vim /etc/httpd/conf/httpd.conf
所示位置的配置参数AllowOverride None
改为AllowOverride All
。
在配置文件末新增一行配置参数LoadModule rewrite_module modules/mod_rewrite.so
,如下图所示,完成后按Esc
,然后输入:wq
按回车键退出编辑模式。
执行如下命令,在云服务器上安装Mysql 5.7。
sudo rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
执行如下命令,确认Mysql仓库是否成功添加。
sudo yum repolist all | grep mysql | grep enabled
如果显示结果如下,则表示成功添加Mysql仓库,否则表示Mysql仓库添加失败,请重新添加。
执行如下命令,开始安装Mysql5.7,大约需要几分钟,请耐心等待。
sudo yum -y install mysql-community-server
执行如下命令,启动Mysql,查看Mysql状态。
sudo systemctl start mysqld sudo systemctl enable mysqld sudo systemctl status mysqld
预期结果如下图所示:
CentOS上的root默认密码可以在文件/var/log/mysqld.log
找到,并通过如下命令可以打印出来。
cat /var/log/mysqld.log | grep -i 'temporary password'
执行如下命令,设置数据库编码为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
执行如下命令,重启Mysql。
sudo systemctl restart mysqld
登陆Mysql修改密码,修改完成后执行quit;
命令退出Mysql。
mysql -u root -p #输入密码 #执行修改密码语句 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
依次执行以下命令,安装PHP 7和用于Magento安装的一些必需的PHP扩展。
执行如下命令,添加ius源和epel源。
yum install https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
执行如下命令,添加Webtatic源。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
执行如下命令,安装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
执行php -v
命令查看PHP版本,返回结果如下所示,说明PHP安装成功。
配置PHP。
运行以下命令打开PHP配置文件.
vim /etc/php.ini
在文件最后添加关于内存限制和时区的配置:
; 允许为PHP脚本分配的最大内存值。您可根据实际情况增加或减少内存限制 memory_limit = 1024M ; 设置时区为上海 date.timezone = Asia/Shanghai
添加后如图所示, 按下Esc键后,输入:wq
并按回车键,保存并关闭文件。
执行systemctl restart httpd
命令,重启Apache服务。
运行mysql -u root -p
命令使用root用户和密码登录MySQL。
运行以下命令创建数据库。
CREATE DATABASE test1; #根据实际情况将test1替换为您需要创建的数据库名称
依次运行以下命令为数据库创建用户,完成后输入exit
并回车退出MySQL。
GRANT ALL ON test1.* TO <YourUser>@localhost IDENTIFIED BY '<YourPass>'; #替换<YourUser>和<YourPass>为您需要创建的账号和密码 FLUSH PRIVILEGES;
Composer是PHP的一个依赖管理工具。Composer允许您申明项目所依赖的代码库,并帮您在项目中安装依赖的代码库。
执行以下命令安装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
执行结果如下图所示。
执行以下命令,配置Composer全局使用。
mv /root/composer.phar /usr/bin/composer
执行composer -v
命令,验证Composer否成功安装。
回显信息如下图所示。
您可以使用不同的方法安装Magento,可以选择是否安装示例数据。
如果安装Magento仅用于测试,您可以选择安装示例数据。
如果安装Magento用于生产环境,建议您安装全新的Magento,从头开始配置。
执行yum -y install git
命令,安装git。
依次执行如下命令,使用git下载Magento。
cd /var/www/html/ git clone https://github.com/magento/magento2.git
执行如下命令,将Magento切换到稳定版本。
默认情况下前一步骤的命令会安装最新开发版本的Magento。在生产环境中使用时,建议切换到稳定版本,否则将来将无法进行升级。
cd magento2 && git checkout tags/2.1.0 -b 2.1.0
回显信息如下:
执行如下命令,将安装文件移到Web服务器的根目录下。
shopt -s dotglob nullglob && mv /var/www/html/magento2/* /var/www/html/ && cd ..
依次执行如下命令,设置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
分别执行如下命令,安装Magento。
yum install -y unzip zip cd /var/www/html/ composer install
使用浏览器访问http:// 云服务器公网IP地址/setup
,如“http://180.XX.XX.62/setup” ,页面显示如下图所示,表示Magento安装成功。
配置Magento。
单击“Agree and Setup Magento”按钮,开始Magento的配置。
单击“Start Readiness Check”按钮,开始环境检测,检测通过后单击“Next”。
设置MySQL数据库名称、并输入“root”帐户的密码,然后单击“Next”。
数据库名称是上文“安装配置LAMP平台”的步骤14中创建的数据库名称;密码为登录MySQL数据库root账户的密码。
设置网站的访问地址、后台管理地址,如http://180.XX.XX.62/admin_1h5z9s,然后单击单击“Next”。
设置语言和时区和货币类型,然后单击“Next”。
创建管理员账户,然后单击“Next”。
单击“Install Now”立即安装系统。
完成后显示如下界面时,表示系统安装成功。
设置cron来运行预定的作业。
执行如下命令配置cron作业。
crontab -u apache -e
按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
使用浏览器访问 http:// 云服务器公网IP地址
,如http://180.XX.XX.62 ,界面显示如下图。
使用浏览器访问步骤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
命令。
登录云数据库控制台,在顶部导航栏切换至华北2(北京)。
单击创建实例,根据下图配置参数,完成后单击“确认订单”,根据界面指导,完成购买。
单击新创建的数据库名称,进入详情页面,然后单击“账号管理”页签。
单击“创建账号”,设置数据库账号及密码,账号类型选择“普通账号”。
单击新创建的数据库名称,进入详情页面,然后单击进入“数据库管理”页签。
单击“创建数据库”,参考下图配置参数,完成数据库的创建。
注意:使用数据库普通权限账号迁移时,需确保数据库名称和源数据库名称一致。
如果选择增量迁移,需要开启源库binlog,如果binlog没有打开,需要修改源数据库配置文件中的log_bin,开启二进制日志log_bin=mysql_bin。配置完成后重启源数据库,参考MySQL重新进行预检查。
登录云服务器云服务器实例。
执行命令mysql -u root -p
,输入数据库密码登录MySQL数据库。
执行命令,查看log_bin状态,如果log_bin值为OFF,需要修改/etc/my.cnf配置。
show global variables like "log_bin";
执行命令vi /etc/my.cnf
按i
进入编辑状态,根据下方完整的配置文件补充所缺的信息,补充完成后,按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
执行命令service mysqld restart
重启数据库。
执行命令mysql -u root -p
,输入密码,重新进入数据库。
在数据库中执行命令show global variables like "log_bin";
,重新查看log_bin状态,此时log_bin状态为ON。
执行如下命令,查询server_id。
show global variables like "server_id";
执行命令show global variables like "binlog_format";
查询binlog_format模式。
binlog_format值为ROW,则符合预期。
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段”获取。
返回云服务器控制台,单击自建数据库所属的云服务器实例名称,进入详情页面。
在详情页面,单击安全组名称“Default”,进入安全组概览页面。
单击“访问规则”页签,然后单击“添加规则”,参照下图添加一条安全组规则,放通DTS IP段。
进入数据传输服务DTS控制台,在顶部导航栏选择“华北2(北京)”。
单击“创建任务”创建,参考下图配置一个新的迁移任务。
配置迁移对象,然后单击“预检查并启动”。
等待检查结果均成功后,单击“确定”返回DTS控制台,此时迁移任务状态为“执行中”。
单击迁移任务名称,进入任务详情页面,然后单击“任务进度”,查看迁移状态。
迁移完成后,通过navicat登录数据库查看迁移的信息。
在自建源数据库表“score”中增加rows,可以看到RDS增量数据同步之后信息如下图所示。
本文以迁移阿里云对象存储数据为例进行介绍,其他云厂商数据迁移的配置与此类似。
登录对象存储控制台,单击右侧“创建Bucket”,创建用于迁移的TOS目标桶。
参照下图,配置存储桶参数,然后单击“确认”完成创建。
创建完成后,可在桶列表中查看。
单击右上角账户名称,选择“访问控制”,单击“密钥管理 > 新建密钥”创建密钥,完成后打开AccessKey Secret下的开关查看并复制AccessKey Secret信息。
登录数据迁移服务控制台,单击“创建迁移任务”,参考下图进行源端配置,单击“连接测试”,测试与源端的联通性,如果信息输入无误会提示“连接成功”。
源端Access key、Endpoint等信息可参考第三方厂商对象存储服务相关文档。
参考下图,进行目的端配置,完成后单击“下一步:设置任务参数”。
参考下图设置任务参数,完成后单击“下一步:确认任务信息”。
确认任务信息无误后,单击“提交”,然后返回查看迁移任务状态。当迁移任务状态变为“迁移成功”,表明初始迁移任务已经完成。
返回对象存储控制台,单击目标桶名称进入“文件列表”页面,可以看到文件已经成功迁移到了目标桶内。
停下业务,并确保两边的数据一致。
本操作暂不涉及替换。
将阿里云的应用连接切换到火山引擎并公网访问数据库,保持单边写入。
更换数据库地址:
查看源应用db的配置文件。
将文件中db的host地址,替换为rds的地址。
回滚方案:将连接地址切回。
修改域名公网DNS解析,将用户访问切换到火山引擎应用。
回滚方案:将域名解析切回。
至此,已完成电商部署及数据库上云的全部操作。