如何使用PHP正确备份Magento数据库

如何使用PHP正确备份Magento数据库,php,sql,linux,magento,magento-1.13,Php,Sql,Linux,Magento,Magento 1.13,问题是当我使用类似的东西进行转储时: shell_exec(“mysqldump-uuser{$backup_db}>{$sql_name}”) 然后在安装存储时使用此代码: shell_exec(“mysql-u user-ppass-h localhost{$dbName}

问题是当我使用类似的东西进行转储时:
shell_exec(“mysqldump-uuser{$backup_db}>{$sql_name}”)


然后在安装存储时使用此代码:
shell_exec(“mysql-u user-ppass-h localhost{$dbName}<{$storeName}.sql”)


安装不正确-打开Magento时出现异常:


我还应该补充一点,这不适用于仅企业版-使用此代码可以安装CE存储。
另外,我应该注意到,当我手动转储时(使用MyAdmin接口导出),MagentoEE的一切都正常。因此,它确保问题出在我的mysqldump命令中。
我认为我的linux命令中缺少一些标志或类似的东西。

phpMyAdmin(我假设您在说MyAdmin时指的是它)和其他基于web的MySQL转储通过将--opt标志(有时还有其他类似于-c的压缩标志)传递到dump命令,在备份文件中生成完整的插入行

默认情况下,命令行mysqldump不会执行此操作

如果您使用:

shell_exec("mysqldump --opt --default-character-set=utf8 -uuser {$backup_db} > {$sql_name}");
它应该会起作用。我只添加了--opt和--default character set=utf8标志

供参考:

根据

“--opt此选项是简写的。它与指定--add drop table--add locks--create options--disable key--extended insert--lock tables--quick--set charset相同。它应该为您提供一个快速转储操作,并生成一个可以快速重新加载到MySQL服务器中的转储文件。”

而且--default character set=utf8可能不是必需的,但不会有任何影响,它将强制转储为Magento EE使用的utf8格式。

phpMyAdmin(我假设您在说MyAdmin时引用它)和其他基于web的MySQL转储通过传递--opt标志在备份文件中生成完整的插入行(有时还有其他类似于-c的压缩)到dump命令

默认情况下,命令行mysqldump不会执行此操作

如果您使用:

shell_exec("mysqldump --opt --default-character-set=utf8 -uuser {$backup_db} > {$sql_name}");
我只添加了--opt和--default character set=utf8标志

供参考:

根据

“--opt此选项是简写的。它与指定--add drop table--add locks--create options--disable key--extended insert--lock tables--quick--set charset相同。它应该为您提供一个快速转储操作,并生成一个可以快速重新加载到MySQL服务器中的转储文件。”


而且--default character set=utf8可能不是必需的,但不会造成伤害,并且将强制转储文件使用Magento EE使用的utf8格式。

我认为您只需要添加放置表格(如果存在)…--将放置表格作为选项添加到mysqldump

我认为您只需要添加放置表格(如果存在)…--将放置表格作为选项添加到mysqldump