不使用 mysqldump 保存 MySQL 数据库

不使用 mysqldump 保存 MySQL 数据库

我需要备份一些数据库并将其迁移到新服务器。

我会使用 mysqldump ,但问题是我在启动 mysqld/mysql 时遇到了问题(这也是我迁移的原因之一)。我不断收到

# /etc/init.d/mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]

基本上,我在 media temple dv 服务器上,我使用 yum 来尝试升级东西,但这搞乱了一堆配置,因为 mediatemple 最初并没有使用 yum 来安装 mysql、php 等……

无论如何,值得庆幸的是,我的旧桌子似乎还在(我可以在 中看到它们/var/lib/mysql

我的问题是:我能否以某种方式将我的文件迁移/var/lib/mysql到新服务器?我想我可以将它们“复制并粘贴”到新服务器的/var/lib/mysql目录中...理论上可行吗?

或者我还有其他选择来移动桌子吗?

我在 CentOS 上。

答案1

如果您的每个表都使用 MyISAM 存储引擎,那么复制 /var/lib/mysql 就可以了。

如果即使一个表是 InnoDB,那么您必须确保复制以下内容:

  • /var/lib/mysql
  • ibdata、ib_logfile0、ib_logfile1(如果它们不在 /var/lib/mysql 中)
  • /etc/my.cnf(因为 InnoDB 设置)

请确保当您在另一台机器上恢复 /var/lib/mysql 时,在新服务器上使用相同的 MySQL 主要版本是最安全的。

如果您从 5.1 升级到 5.5,则复制 /var/lib/mysql 对于授权表来说是不可能的,因为 /var/lib/mysql/mysql/user.frm 具有不同的列布局数量版本。

  • MySQL 5.0 有 37 列
  • MySQL 5.1 有 39 列
  • MySQL 5.5 有 42 列

答案2

复制 /var/lib/mysql 的内容并不是一个完美的解决方案,但如果两个 MySQL 版本彼此二进制兼容,那么它就可以起作用。

这意味着实际上 MySQL 3 文件无法与 MySQL 5.5 服务器兼容。但通常当源是 MySQL 5.x 并且目标也是 5.x 时,它应该可以工作。

不过,我不知道当源是 32 位而目标是 64 位时是否会存在问题。

相关内容