2011-06-08 61 views
10

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

是否有一种简单的方法将所有这些从一台运行mysql的服务器移动到另一台服务器上,这个服务器也已经运行了mysql?

+0

导出和导入? – 2011-06-08 18:17:09

+0

这些内置命令?我是全新的。 – FozzieBeer 2011-06-08 18:18:15

+0

如果您正在使用的服务器上有任何类型的控制面板,例如CPanel,Plesk等,那么您可能有权访问具有导出和导入功能的phpMyAdmin。 – 2011-06-08 18:21:44

回答

6

转储数据库使用mysqldump或如果您使用PHPMyAdmin然后导出结构和数据。

对于mysqldump,你将需要控制台并使用下面的命令:在其他的服务器

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

然后:

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

+0

谢谢,我会google mysqldump – FozzieBeer 2011-06-08 18:18:56

+0

已经为你添加了上面的语法 - 我现在要仔细检查一下,现在 – lethalMango 2011-06-08 18:20:55

+0

谢谢,我有shell访问。 – FozzieBeer 2011-06-08 18:21:13

4

如果你从相同的架构移动对于相同的体系结构(x86-> x86,x86_64 - > x86_64),您可以将MySQL数据块从一台服务器rsync同步到另一台服务器。显然,当你的旧MySQL守护进程运行时,你不应该运行这个。

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

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 [email protected]:/var/mysql/ 
#Get your my.cnf 
scp /etc/my.cnf [email protected]:/etc/my.cnf 

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

我会说在过去的(最近)(从一个旧服务器迁移到一个新服务器,都运行FreeBSD 8.x)中对我有用,但是YMMV取决于你以前的版本。

+0

我这样做,有很多不同的小事情可以出错,尤其是如果有InnoDB表。我建议使用[Percona的xtrabackup](http://www.percona.com/docs/wiki/percona-xtrabackup:start)来完成这样的任务。 – Wrikken 2011-06-08 18:29:49

+0

可悲的是,建筑是不同的,但我相信别人会赞赏这个建议。 – FozzieBeer 2011-06-08 18:30:53

+0

@Wrikken你知道关于**的任何文档吗?使用这种方法可能会出错?我相信你(有很多小事可能会出错),但我想知道是否有一个确定的清单,说明为什么不这样做。 – bhamby 2011-06-08 18:38:13

10

如果您使用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 [email protected][host/IP] mysql -u[user] -p[pwd] 

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

$ history -c 
+0

这对我来说就像一个魅力,将所有数据库真实地复制到我的新系统! – 2015-10-06 17:39:52

+0

如何添加“user @”与使用ssh密钥相关?只是好奇。 – Equidamoid 2016-11-28 20:39:59

相关问题