【问题标题】:Create MySql Database Backup / Rollback创建 MySql 数据库备份/回滚
【发布时间】:2012-02-01 10:32:53
【问题描述】:

我知道我可以使用 MySql 的命令BACKUPRESTORE 来备份数据库并在需要时回滚。

我的问题是,我可以这样执行吗:

sql="BACKUP my_db TO DISK my_backup_folder WITH FORMAT #";

if ($stmt = $this->connect->prepare($sql)) {    
$stmt->execute();
$stmt->close();
} else {
    $error              = true;
    $message['error']   = true;
    $message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE;
    return json_encode($message);
}   

以同样的方式进行修复:

sql="RESTORE DATABASE my_db FROM DISK my_backup_folder WITH FILE #";

if ($stmt = $this->connect->prepare($sql)) {    
$stmt->execute();
$stmt->close();
} else {
    $error              = true;
    $message['error']   = true;
    $message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE;
    return json_encode($message);
}   

在每种情况下,# 代表什么,是 .bak 吗?除了里面的东西,我还有什么需要补充的吗?

【问题讨论】:

  • 有没有引入BACKUPRESTORE 命令?
  • 根据我的回答和@Mchl 的评论,这些是不推荐使用的命令,可能不是为 MySQL 准备实用备份系统的最佳方法。

标签: php mysql backup restore


【解决方案1】:

命令行上的快速峰值显示这些是已弃用的命令。

mysql> help backup; Name: 'BACKUP TABLE' Description: Syntax: BACKUP TABLE tbl_name [, tbl_name] ... TO '/path/to/backup/directory'

*Note*: This statement is deprecated and is removed in MySQL 5.5. As an alternative, mysqldump or mysqlhotcopy can be used instead.

我会说任何关于如何使用已弃用命令的建议有点用词不当。在mysqldump 上达到顶峰。还有其他选项,例如LVM snapshots 等。

【讨论】:

  • 好的。我尝试使用 mysqldump,但它在我的本地服务器上不起作用,我找不到原因。但现在我正在尝试另一种解决方案,我正在遍历数据库并获取所有现有表以及其中的任何内容。我正在使用fopen 制作文件并将数据写入其中,还使用CREATE TABLE IF NOT EXISTS 等sql 命令。反正我问的这个方法也不好用。
  • 只是我的意见,但我建议弄清楚为什么 mysqldump 不起作用。这是一个标准工具,听起来你现在正在重写它。我敢打赌,在您花时间让 mysqldump 工作时,您将无法用自己的东西替换它。但谁知道呢,有时新的解决方案是有好处的。
  • 确实如此。好吧,有人说这是因为我在 Windows 环境中进行测试,但是我有 XAAMP 可以使所有进程正常工作,我的意思是除此命令之外的任何其他工作。有人说我无权写,但对于其他写的程序有效。所以我无法弄清楚为什么它不起作用。我决定使用我知道它会起作用的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 2013-07-12
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多