Jac*_*ack 5 mysql mysqldump mysql-workbench restore
我们有多个格式MySQL
的数据库备份文件,*.SQL
我们希望使用这些文件来恢复数据库。但是,由于 sql 文件包含"DROP TABLE"
定义,因此运行一个脚本会导致删除由前一个脚本创建的数据。除了这些 sql 文件之外,我们还有一些其他的备份文件夹,其中包含*.FRM
和*.MYD
文件。在所有两种情况下,我认为这些备份是Differential
或Incremental
我们必须合并/组合所有这些。如果是这样,我们如何在不丢失数据的情况下组合它们?由于我没有经验MySQL
,如果可能的话,你能解释一下使用的方法MySQL Workbench
吗?提前致谢。
来自 sql 文件之一的一些行:
DROP TABLE IF EXISTS `BLACKLIST`;
CREATE TABLE `BLACKLIST` (
`ID` int(11) NOT NULL auto_increment,
`NAME` varchar(30) NOT NULL,
`SURNAME` varchar(30) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `BLACKLISTINDEX` (`NAME`,`SURNAME`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
.SQL 文件是文本。您可以在文本编辑器中打开它们。然后,找到并删除DROP TABLE
andCREATE TABLE
语句。最后,使用工作台或任何其他客户端运行其余的 INSERT 语句。
关于差异备份和增量备份,您必须以正确的顺序还原 SQL 文件才能获得您希望的结果。这意味着您必须根据您拥有的文件非常仔细地计算出该顺序。Oracle 等商业 RDMS 拥有精心设计的增量备份和差异备份方案,以及恢复方案。MySQL 没有这样的东西,所以无论你拥有什么,要么是自行开发的,要么是基于某种第三方软件包的。
如果这是我的项目,我会创建数据库和所有备份文件、.frm 文件和其他内容的牺牲副本。然后我会尝试以正确的顺序恢复内容。
一旦我确信我的副本是正确的,我就会对整个内容进行 SQL 备份。我实际上创建了两个备份项:一个仅包含 CREATE TABLE 语句,另一个仅包含数据。工作台可以做到这一点。
然后恢复该干净备份以创建新的生产数据库。
工作台无法帮助您处理 FRM 和 MYD 文件。要使用它们,您需要弄清楚如何将它们放在服务器文件系统中的正确位置,并重新启动正在查看它们的 MySQL 服务器。将这些文件视为备份是一项粗略且危险的工作。如果你成功地恢复了它们,请将你的成就想象成一头会说话的驴子。它表现不佳并不奇怪,它能发挥作用才是奇迹。
展望未来:普通的 SQL 备份文件不应包含数据定义语言,例如 DROP TABLE 或 CREATE 表语句。您可以创建仅包含这些语句而不包含数据的单独文件,并在需要时保留它们。
归档时间: |
|
查看次数: |
6002 次 |
最近记录: |