2009-05-05 154 views
6

我正在使用命令行来备份和恢复MYSQL数据库。 让我使用具有数据库数据1的视图和过程。 当Cmd line,我用mysqldumpMySQL备份和从命令行恢复

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

当我使用上述Cmd的,它创建一个Dtafile.mysql 名称在MySQL的bin文件夹中的备份文件。

但事情是它创建仅备份表,非程序。

当我M在一个空数据库“数据2”

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

它是什么恢复它,它创建的所有表和视图转换成表和无手续已恢复。

意味着我无法使用所有表格,视图和过程还原我的完整数据库备份。

可以你们任何人帮助它.. 我会非常感谢。

回答

10

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

编辑#1: 你的mysqldump命令现在应该是什么样子,

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

编辑#2:
您需要添加--add-drop-table在开关,以及如果你想保留你的观点。原因是视图是分两步创建的(首先是虚拟表格,然后是真实视图)。另外请注意表和视图共享相同的名称空间,所以不要被mysqlclient中的“显示表”命令给出的输出误导。使用“显示创建视图vw_test”,而不是如果该命令显示创建视图查询然后宾果,也确保视图已被正确恢复,将一些数据插入到其他数据库的相关表中,然后运行选择查询查看,如果数据关系比你想的要好,那么你可以在后面拍一下:)否则你总是可以回到Stackoverflow这个美妙的社区。

所以(保持视图)您的mysqldump命令现在看起来应该是这样

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

HTH

+1

嘿,我怎么包括 - 例程,而采取转储? CAn你PLZ解释一下 – 2009-05-05 08:40:49

-1

有备份数据库的使用命令行,phpmyadmin的或MySQL管理员三个最佳方法 mysql数据库备份在简单的方法恢复,使用mysql数据库备份

mysql administrator

phpmyadmin