利用mysqldump备份magento数据库

在Magento开发和维护过程中,经常需要将Magento的数据库导出、导入,这些工作可以通过mysqldump这个工具来实现。

下面我来简单介绍一下mysqldump在导出导入Magento database时需要注意的地方:

导出:

1
$ mysqldump -uroot -p PASSWD db_name > db_name.sql

这条命令可以把mysql中db_name数据库中的所有表导出到db_name.sql文件中。
如果你只需要db_name数据库中的几个表,可以在上述命令添加table选项, 命令如下:

1
$ mysqldump -uroot -p PASSWD db_name table1 table2 > db_name.sql

这条命令只会导出db_name数据库中table1和table2表。

顺便多说一点:
mysqldump导出整个数据库的命令有两个格式:

只导出一个数据库:

1
mysqldump [options] db_name [tbl_name ...]

导出多个数据库:

1
mysqldump [options] --databases db_name ...

–databases 选项可以指定将要导出的数据库名称,但是在导出的文件中,会在每个数据库的sql开头添加如下代码:

1
2
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `origin_db_name` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `origin_db_name`;

具体使用哪种命令,需要根据具体情况加以选择。
docs: mysqldump docs

在通过mysqldump得到sql文件之后,可以通过mysql的source命令导入这些数据:

假如你的sql文件是通过mysqldump [options] db_name [tbl_name …]这条命令导出的,就需要在导入之前先选中数据库:

1
mysql> use new_db_name;

然后执行导入命令:

1
mysql> source /path/to/db_name.sql

这样就可以把db_name.sql中包含的数据导入到new_db_name数据库中。

回到Magento这里,当把一个Magento Site的数据库导入到一个新的Magento Site的数据库中后,还需要修改core_config_data表中的有关base_url和domain的记录的value:

如果不更新这些记录,会导致一些奇怪的问题,凡是涉及到base_url和cookie的地方都会出现问题。

具体命令如下:

1
2
update core_config_data set value='http://new.domain.com/' where path like '%base_url%';
update core_config_data set value='new.domain.com' where path like '%domain%';

这样,原来Magento Site的数据库就导入到了新的Magento Site数据库中了。