将mysql模式(表,数据,所有内容)从一台服务器移动到另一台服务器的最简单方法是什么?
是否有一个简单的方法将所有这一切从一个运行mysql的服务器移动到另一个已经运行mysql的服务器?
小智 14
如果您使用的是SSH密钥:
$ mysqldump --all-databases -u[user] -p[pwd] | ssh [host/IP] mysql -u[user] -p[pwd]
Run Code Online (Sandbox Code Playgroud)
如果您不使用SSH密钥:
$ mysqldump --all-databases -u[user] -p[pwd] | ssh user@[host/IP] mysql -u[user] -p[pwd]
Run Code Online (Sandbox Code Playgroud)
警告:您需要在此之后清除历史记录,以避免任何人找到您的密码.
$ history -c
Run Code Online (Sandbox Code Playgroud)
let*_*ngo 10
使用mysqldump或如果您使用PHPMyAdmin 转储数据库,然后导出结构和数据.
因为mysqldump您将需要控制台并使用以下命令:
mysqldump -u <user> -p -h <host> <dbname> > /path/to/dump.sql
然后在另一台服务器上:
mysql -u <user> -p <dbname> < /path/to/dump.sql
如果要从相同的体系结构迁移到相同的体系结构(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
Run Code Online (Sandbox Code Playgroud)
之后,您可能需要运行mysql_upgrade [-p your_root_password]以确保数据库是最新的。
我会说它在过去(最近)(从旧服务器移动到新服务器,都运行FreeBSD 8.x)对我有用,但是YMMV取决于您过去的版本。