【问题标题】:MySQL backup and restore from command lineMySQL 从命令行备份和恢复
【发布时间】:2010-10-23 20:33:17
【问题描述】:

我正在使用命令行来备份和恢复 MYSQL 数据库。 让我使用一个包含视图和过程的数据库 Data1。 在Cmd line 中时,我使用mysqldump

..>bin> mysqldump -u root -proot Data1 > Datafile.mysql

当我使用上面的 Cmd 时,它会在 Mysql 的 bin 文件夹上创建一个带有 Dtafile.mysql 的备份文件 姓名。

但问题是它只创建表的备份,而不是过程。

当我在空白数据库“Data2”中恢复它时

..bin> mysql - u root -proot Data2 < Dataafile.mysql

它的作用是,它创建所有表并将视图转换为表,并且没有恢复任何过程。

意味着我无法使用所有表、视图和过程恢复我的完整数据库备份。

有没有人能帮帮我.. 我会非常感激的。

【问题讨论】:

    标签: mysql backup mysqldump restore


    【解决方案1】:

    为 mysqldump 包含“--routines”参数,它将转储程序。

    编辑#1: 您的 mysqldump 命令现在应该如下所示,

    mysqldump -u root -proot --routines Data1 > Datafile.mysql
    

    编辑#2:
    如果要保留视图,还需要添加 --add-drop-table 开关。原因是视图分两步创建(首先作为虚拟表,然后作为真实视图)。另外请注意,表和视图共享相同的名称空间,所以不要被 mysqlclient 中“显示表”命令给出的输出误导。如果该命令向您显示创建视图查询然后宾果游戏,请使用“显示创建视图 vw_test”,以确保视图已正确恢复,将一些数据插入其他数据库中的相关表,然后在看,如果数据比你撞到靶心,请拍拍自己的背 :) 否则你总是可以回到 Stackoverflow 上这个精彩的社区。​​p>

    所以(为了维护视图)你的 mysqldump 命令现在应该是这样的

    mysqldump -u root -proot --routines --add-drop-table Data1 > Datafile.mysql
    

    HTH

    【讨论】:

    • 嘿,我如何在转储时包含 --routines?你能解释一下吗
    • 嗨,我已经编辑了上面的答案以显示要使用的命令。
    • 嗨,谢谢.. 它有效.. 我面临的另一个问题是,在“Data1”中,我有引用其他数据库的视图。当我恢复它时,它将所有视图转换为表。即我在 Data1 中有 View vw_test,但是当我恢复它时,它变成了一个名为 vw_test 的表。会有什么问题。帮我。非常感谢。
    • 您好,感谢您的回复,但是.. 它不起作用。脚本仍然将视图(对其他数据库的引用)转换为表。
    • Show Create Table 显示了 vw_test 的表结构。以这种方式创建Table vw_test(id int...)。
    【解决方案2】:

    使用命令行、phpmyadmin 或 mysql 管理员备份数据库的三种最佳方式 mysql数据库备份和恢复简单,使用mysql数据库备份

    mysql administrator

    phpmyadmin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      相关资源
      最近更新 更多