我们可以通过复制文件来备份mysql数据库吗?

use*_*951 1 mysql backup installation

我试图在我的机器上重新安装 mysql,但它一直失败。每次失败时,它都会执行此锁定,并且该锁定和未来的努力将再次失败。

最后我决定做真正的全新安装

  • 删除所有内容
  • 重新安装

该过程在此处列出:http : //stuffthatspins.com/2011/01/08/ubuntu-10-x-completely-remove-and-clean-mysql-installation/

我不想丢失已经存在的数据。是的,它有备份,但我有点喜欢那里。

那么,我可以只 mv 内容 /etc/mysql 然后在我重新安装所有内容后将其复制回来吗?

我的程序员说这行不通

如果没有,我还应该知道什么?

我有点忘记 mysql 在哪里存储数据。我猜这是 ubuntu 的默认设置。

更新:我使用可用计算机在一些本地数据库上尝试过。Myisam 表被转移。但是 innodb 表没有。

另外http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file显示 innodb 不会通过复制文件那么容易地传输。我错过了什么吗?

另一个更新:答案是肯定的,我们可以。我们做到了:D


更新伙计们。

简短的回答是,我们可以。我的程序员刚刚做到了。关键是复制整个文件,实现innodb将数据库存储在一个大文件中。不知道为什么。

另一个答案更好,所以我选择了那个(我认为选择我自己的答案并不客观)。我只想分享它的工作原理。

Shl*_*ach 5

如果您能够关闭您的数据库服务器(我的理解是您确实能够)-从而禁用您的应用程序-那么这确实是最简单的。

关机后,您只需复制+粘贴您的数据目录即可。首先你的数据在哪里?只是发出:

SELECT @@datadir;
Run Code Online (Sandbox Code Playgroud)

从您的 MySQL 服务器中。

顺便说一句,虽然您必须将数据备份到安全的地方,但我不希望任何apt-getaptitude命令实际触及您的数据。

请注意,您链接到的页面有一些非常疯狂的想法,例如:

[!!DO NOT DO THIS!!] find / -iname ‘mysql*’ -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

鉴于上述查询,我​​鼓励您寻找其他地方。它将从您的根文件系统中删除任何和所有 mysql* 文件。包括您自己的应用程序的mysql-config.ini文件(当然,如果有的话),包括libdbd-perl-mysql-- 没有完全卸载...我的意思是,这真的是一个糟糕的建议。

备份my.cnf文件没有意义,删除文件然后再把它放回去。这同样适用于您的datadir.

只需卸载 MySQL 并重新安装就足够了——但这也有点有趣,因为两者都是通过apt-get——所以你基本上重新安装了相同的版本......至少让自己获得更新版本的 MySQL。