2017-02-13 46 views
1

上周我们正在做一个大型的网站迁移,倾销1200个MySQL数据库并恢复它们。但是在这个过程中,我们恢复了“mysql”数据库,然后我们失去了已经在新服务器上创建的所有特权和用户。从另一台服务器恢复的“mysql”数据库。有没有办法“再生它”?

有没有办法重新生成MySQL数据库?我不介意丢失用户和权限,但我不想将旧用户带到这台新服务器。

在此先感谢您的帮助。

+0

你几乎不能提供更少的细节,但我怀疑你安装了MySQL,然后前往datadir目录并用旧安装中的文件替换它(包括'mysql'文件夹)。我对吗?做适当的备份为时已晚?不能保证上帝生成的文件转储不会被破坏。 –

+0

如果你有一个真正的mysql转储,最安全的方式可能是重新安装mysql服务器并导入它。如果您移动/复制您的旧数据库文件夹,请不要覆盖mysql文件夹,因为如果您更改了mysql版本,它会暂停安装。 – Tim

+0

我认为你的问题是无关紧要的,因为它是关于数据库管理而不是编程。 –

回答

0

对不起,听说你破坏了你的数据!大多数有经验的DBA在进行类似你所做的那样的导入之前做了备份,因为我们都犯了你至少描述过一次的错误。

如果你重写了MySQL服务器,因为你覆盖了mysql数据库,那么不行,你运气不好。您已覆盖数据,重新启动后,它现在是该服务器使用的官方用户组,密码和特权组。

在这种情况下,您唯一的机会就是如果您在覆盖之前对旧数据进行了另一次备份。

如果您只覆盖了数据,但尚未发出FLUSH PRIVILEGES,并且还没有重新启动MySQL服务器,则旧的授权仍在内存中。您可以使用类似pt-show-grants的工具来恢复它们。

请注意,如果您使用MySQL 5.7,这暂时损坏了pt-show-grants,因此您至少需要在修补程序中使用Percona Toolkit 2.2.220版本(详情请参阅https://bugs.launchpad.net/percona-toolkit/+bug/1435370)。

+0

谢谢比尔。这是一个干净的还原,我的意思是,新服务器在还原转储文件时没有用户数据库。我会尝试安装一个新的MySQL服务器,然后再次恢复所有数据库(当然,除了mysql之外) – jspasiuk

相关问题