【问题标题】:Move MySQL database to a new server将 MySQL 数据库移动到新服务器
【发布时间】:2011-06-08 18:14:56
【问题描述】:

将 mysql 模式(表、数据、所有内容)从一台服务器移动到另一台服务器的最简单方法是什么?

有没有一种简单的方法将所有这些从一台运行 mysql 的服务器转移到另一台已经运行 mysql 的服务器?

【问题讨论】:

  • 这些是内置命令吗?我对此很陌生。
  • 如果您在使用的服务器上有任何类型的控制面板,如 CPanel、Plesk 等,那么您很可能可以访问具有导出和导入功能的 phpMyAdmin。
  • @Kevin Nelson 谢谢,我们只有 shell 访问权限

标签: mysql


【解决方案1】:

如果您使用 SSH 密钥:

$ mysqldump --all-databases -u[user] -p[pwd] | ssh [host/IP] mysql -u[user] -p[pwd]

如果您不使用 SSH 密钥:

$ mysqldump --all-databases -u[user] -p[pwd] | ssh user@[host/IP] mysql -u[user] -p[pwd]

警告:您需要在此之后清除您的历史记录,以避免任何人找到您的密码。

$ history -c

【讨论】:

  • 这对我来说就像一个魅力,将所有数据库快速复制到我的新系统中!!
  • 添加“user@”与使用 ssh 密钥有何关联?只是好奇。
【解决方案2】:

使用mysqldump 转储数据库,或者如果您使用的是 PHPMyAdmin,则导出结构和数据。

对于mysqldump,您将需要控制台并使用以下命令:

mysqldump -u <user> -p -h <host> <dbname> > /path/to/dump.sql

然后在另一台服务器上:

mysql -u <user> -p <dbname> < /path/to/dump.sql

【讨论】:

  • 已经为你添加了上面的语法——我现在要仔细检查一下
  • 这个网站应该会帮助你一步一步做 :) devshed.com/c/a/MySQL/…
  • 这只是一半的答案。导入部分在哪里?
  • 我用这个方法移动了数据库并且事件消失了。将此注释留在这里,以免为时已晚。
【解决方案3】:

如果您要从同一架构迁移到同一架构(x86->x86、x86_64 -> x86_64),您只需将 MySQL 数据目录从一台服务器同步到另一台服务器。显然,您不应该在旧的 MySQL 守护进程运行时运行它。

如果您的数据库是基于 InnoDB 的,那么您需要确保在复制文件之前已清除 InnoDB 日志文件并将其内容合并到磁盘。您可以通过将innodb_fast_shutdown 设置为0 来做到这一点(默认为1,这将将日志刷新到磁盘),这将导致日志文件在下一次刷新服务器关闭。您可以通过以 root 身份登录 MySQL 并在 MySQL shell 中执行以下操作:

SET GLOBAL innodb_fast_shutdown=0

或者通过在 my.cnf 中设置选项并重新启动服务器以提取更改,然后关闭以刷新日志。

执行以下操作:

#On old server (notice the ending slash and lack thereof, it's very important)
rsync -vrplogDtH /var/mysql root@other.server:/var/mysql/
#Get your my.cnf
scp /etc/my.cnf root@other.server:/etc/my.cnf

之后,您可能需要运行 mysql_upgrade [-p your_root_password] 以确保数据库是最新的。

我会说它在(最近的)过去对我有用(从旧服务器移动到新服务器,都运行 FreeBSD 8.x),但 YMMV 取决于您过去有多少版本。

【讨论】:

  • 我这样做,有很多不同的小事情可能会出错,特别是如果有 InnoDB 表。我建议使用Percona's xtrabackup 来完成这样的任务。
  • 遗憾的是架构不同,但我相信其他人会欣赏这个建议。
  • @Wrikken 你知道关于 *what 的任何文档使用这种方法可能会出错吗?我相信你(有很多小事情可能出错),但我想知道是否有明确的清单说明为什么不这样做。
  • 遗憾的是,我不知道一个明确的列表,但是 innodb-logs 尚未发挥作用是一个大问题,例如,afaik percona 的解决方案只是脚本,所以你可以钻研看看什么样的他们期待和预防的问题。
  • @Wrikken 如果主要关注的是 InnoDB 日志没有被播放,那么您可以在关机时将它们刷新到磁盘。我更新了答案以包括您如何做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
相关资源
最近更新 更多