我在跑mysql-server-5.1.73-3.el6_5.x86_64
:
mysql> SELECT VERSION();
+------------+
| VERSION() |
+------------+
| 5.1.73-log |
+------------+
1 row in set (0.00 sec)
mysql>
我mysqldump
使用选项创建--all-databases
,以创建位于该服务器上的所有数据库的数据库备份。
我需要从这个整体中恢复SINGLEmysqldump
数据库并使用不同的(与原始的)数据库名称恢复它。
我通常使用这样的东西:mysql --one-database --database=db1
但这是假设我正在使用相同的名称进行恢复。
有人可以帮我吗?
提前致谢!
经过大量的谷歌搜索和混乱:-) 由于这篇文章,我最终成功地完成了它。这真的很简单也很合乎逻辑——我只是打倒了几个盲目的盟友。查看 user1201232 的答案,而不是接受的答案 - 我稍作修改(试验!)。
正如您所做的那样,您将获得整个服务器的转储。
备份这个原始转储(稍后查看原因)。
然后,您对该文件执行 sed。我有一个名为 gnarly 的模式,我在转储文件中将其重命名为 xyzg。这是进行备份的一个很好的理由,否则,如果您的架构名称是一些常用词,它可能会弄乱您可能希望执行的其他恢复。
然后在服务器上创建一个名为 xyzg 的模式
然后恢复备份“愚弄”mysql,认为它正在恢复一个已经创建的备份。
连接并检查您的表。
几个选择表明我的数据确实存在。瞧!
忘记提及 MySQL Workbench 有一种方法可以做到这一点——通过数据导入/恢复,有一个“新建”按钮,您可以使用它来选择不同的模式名称。我的设置是自定义的,我无法让它工作,但如果你有默认设置,它应该可以工作(我相信)。
当然,总是有手动编辑转储文件的好方法。我做了一些进一步的阅读,发现这并不像看起来那么困难。
使用上面的示例,将架构粗糙地更改为 xyzg。
按照上面的方法获取所有模式的转储 (serverdump.sql)。
从 shell 提示
只发生两次。使用 vi(或您选择的编辑器)将 gnarly 更改为您选择的字符串,即 xyzg。
[编辑]
又是更好的方法 - 无需编辑任何内容。
做就是了
无需使用 vi - 或担心更改文件中的任何其他内容。
按照上述创建模式 xyzg 并执行其他步骤。
如果 sed 过度杀伤,可能会有用。从这里开始。