共计 2866 个字符,预计需要花费 8 分钟才能阅读完成。
你应该知道了,Magento2采用了全新的结构和数据库设计。为了给升级过程营造一个愉快的氛围,Magento官方发布了一个数据转移工具帮助开发者从Magento 1迁移到Magento 2。官方资源:
数据库迁移工具依据XML文件规定的规则将数据从M1转换到M2。说清楚点,这个工具只会转移数据。主题和你自定义过的商铺设置并不会自动迁移到Magento2。将工具安装到一个空Magento 2网站。这不是一个插件,而是一个需要结合Magento 2框架才能工作的Shell APP。位置在:
vendor/magento/data-migration-tool/bin/migrate
编辑下面文件夹中XML文件完成安装
vendor/magento/data-migration-tool/etc/ce-to-ce/
在受支持的Magento环境中,仅需在config.xml中配置好源(M1)和目标(M2)即可:
[php]
<source>
<database host="localhost" name="magento1_db" user="root"/>
</source>
<destination>
<database host="localhost" name="magento2_db" user="root"/>
</destination>
[/php]
config.xml 是最只要的配置文件,定义了连接到其他XML文件的路径,定义了那些步骤需要执行。
map.xml 保留全局定义,那些表格、行列的取舍都在里面有说明。其他XML都是分步定义的文件。迁移分成三步走:设置,数据,Delta,他们及其子步骤可以在config.xml中看到:
[php]
cd vendor/magento/data-migration-tool/bin/
php migrate –help
Usage:
migrate <mode> –config=path/to/config.xml [options]
migrate –help
Possible modes:
settings Migrate system configuration
data Main migration of data
delta Migrate the data is added into Magento after the main migration
Available options:
–reset Reset the current position of migration to start from the beginning
–config <value> Path to main configuration file, i.e.: etc/m1_version/config.xml
–verbose <level> Verbosity levels: DEBUG, INFO, ERROR
–help Help information
[/php]
迁移设置
首先,转移设置、网站、商铺到M2,大部分数据都和Magento网店相关,这部分需要先行转移。
转移数据
数据转移就是迁移分类、产品、客户、订单、评分…..等等所有M2中有的东西。当然,转移时最好关闭Logs,Quots功能。
转移增量数据
最有趣的部分来了。成功转移数据之后,你只需将M1的访问设置连接到新的M2数据即可,会自动从上次停止的地方重新开始。这个步骤不会改变分类、产品数据,只会涉及一些用户,订单等类似于用户相关的数据。数据转移时,一套m2_*数据表会在你的M1数据库中创建,用以追踪迁移过程。这个过程确保迁移到M2的过程顺畅简短,让你尽快把M2网店运行起来。
转移媒体文件
转移媒体文件很简单,只需把M1中的文件拷贝、粘贴到M2对应位置就可以了。
自定义设置转移过程
当然你的网站肯定是有自己设置的,不会和Magento默认网站一样,所以开发者总是需要对这个工具做一些自己的设置。这个转移工具本身是很灵活的,基本都可以通过xml文件进行定义,用php类文件进行筛选,不得不说,magento团队干的漂亮。假设你在M1中有自定义变量 sales_flat_order.custom_column,我们运行转移工具就是得到错误: [ERROR]: Source fields not mapped. Document: sales_flat_order. Fields: custom_column 。怎么办呢?在map.xml 文件中添加如下代码
[php]
<source>
<field_rules>
<ignore>
<field>sales_flat_order.custom_column</field>
</ignore>
..
[/php]
唯一的问题是,也许不止一个设置与Magento xml默认配置不一样,这个时候,你要确保所有不一样的都被屏蔽掉,不被执行。 以将值转移到重命名后的custom_column,并同时修改值为例:
[php]
<source>
<field_rules>
..
<transform>
<field>sales_flat_order.custom_column</field>
<handler class="\Migration\Handler\AddPrefix">
<param name="prefix" value="inchoo_"/>
</handler>
</transform>
<move>
<field>sales_flat_order.custom_column</field>
<to>sales_order.new_custom_column</to>
</move>
..
[/php]
从例子可以看出,你可以使用Handler类,或者你甚至可以自定义一个让你的转移工作飞起来。如果这个路径图不能满足你,你可以自己创建自定义步骤。 Each step is composed out of Integrity, Data and Volume classes. Integrity is triggered before migration to check if everything is ok with mapping, Data transfers data, Volume checks if everything is ok after migration. Delta class can be added to support delta migrations.
推测
这个工具确实在M1迁移到M2的过程中起了很大的作用。开发者可以自定义配置,能够为转移工作节省大量时间。由于是数据库到数据库转移,速度相当快。写此文的时候,还只能支持1.9.1版本,但是我用在1.9.2.0版本上也没有遇到错误。 M2发布的时候,其他版本的M1应该也能得到支持。所以简短的说整个转移过程就是:先安装一个空的M2,再将M1的数据转移到M2网站中。你需要检查和开发你在M2中所有需要用到的参数、表,一旦完成这个过程,你的M2网站也就可以发布了!