Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
完成MySQL转储的数据库重置?_Mysql_Sql_Database - Fatal编程技术网

完成MySQL转储的数据库重置?

完成MySQL转储的数据库重置?,mysql,sql,database,Mysql,Sql,Database,这似乎是一个非常愚蠢的问题,但我没有从其他任何方面了解到这一点,我只是想澄清一下 我不久前开始使用MySQL,为了测试各种场景,我备份了我的数据库。我使用MySQL转储来实现这一点: 出口: mysqldump-hSERVER-uUSER-pPASSWORD--all databases>filename.sql 进口: mysql-hSERVER-uUSER-pPASSWORDfilename.sql 有关详细信息,请参阅。您描述的转储和恢复过程没有什么神奇之处mysqldump写出描述正在转

这似乎是一个非常愚蠢的问题,但我没有从其他任何方面了解到这一点,我只是想澄清一下

我不久前开始使用MySQL,为了测试各种场景,我备份了我的数据库。我使用MySQL转储来实现这一点:

出口:

mysqldump-hSERVER-uUSER-pPASSWORD--all databases>filename.sql

进口:

mysql-hSERVER-uUSER-pPASSWORD 很简单,直到现在它工作得很好,我注意到这个“设置”有一个小问题:它没有完全“重置”数据库和表。例如,如果在创建转储文件后添加了一个附加表,则如果导入相同的转储文件,该附加表不会消失。它本质上只是“更正”已有的表,并重新创建任何缺失的数据库或表,但不删除任何其他表,这些表的名称恰好不在转储文件中


我要做的是在导入这样的转储文件时完全重置服务器上的所有数据库。最好的解决方案是什么?是否为此目的保留了特殊的导入功能,或者我必须先删除数据库?或者这是个坏主意?

您可以使用参数--add drop database在每个“create database”语句之前向转储添加一个“drop database”语句

e、 g

mysqldump-hSERVER-uUSER-pPASSWORD--所有数据库--添加-删除数据库>filename.sql


有关详细信息,请参阅。

您描述的转储和恢复过程没有什么神奇之处
mysqldump
写出描述正在转储的一个或多个数据库的当前状态的SQL语句。它必须在您要转储的每个数据库中获取一个表列表,然后它必须逐个读取这些表并将它们作为SQL写出。在任何大小的数据库上,这都需要时间

因此,如果您在运行
mysqldump
时创建一个新表,它可能不会拾取该新表。类似地,如果应用程序软件在运行
mysqldump
时更改了表的内容,则这些更改可能会显示在备份中,也可能不会显示在备份中

您可以查看.sql文件
mysqldump
写出来的内容,以查看它们拾取了什么。如果您想确保转储的.sql文件是完美的,您需要在一个安静的服务器上运行
mysqldump
——一个没有人运行数据定义语言的服务器


MySQL热备份解决方案可用。您可能需要调查一下。

OP可能需要调查一下

mysql_install_db
如果他们想重新开始安装后的默认设置 恢复一个或多个转储的数据库之前的设置。对于 生产服务器,另一个有用的脚本是:

mysql_secure_installation
此外,他们可能更愿意转储他们单独创建的数据库:

mysqldump -hSERVER -uUSER -pPASSWORD --database foo > foo.sql
为避免无意中更改内部DBs:
mysql、信息模式、性能模式。

在没有备份的情况下删除数据从来都不是一个好主意。好吧,从SQL文件导入不会删除数据,除非SQL文件包含删除/删除查询。