如何移动mysql数据库最简单,最快捷的方式?

use*_*143 6 php mysql mysqldump

嗨,我必须将mysql数据库移动到另一台服务器,

它接近5 GB

我可以在两台服务器上拥有root权限吗?

Ahm*_*eim 22

通常运行mysqldump来创建数据库副本和备份,如下所示:

$ mysqldump -u user -p db-name > db-name.out
Run Code Online (Sandbox Code Playgroud)

使用sftp/ssh将db-name.out文件复制到远程MySQL服务器:

$ scp db-name.out user@remote.box.com:/backup
Run Code Online (Sandbox Code Playgroud)

在远程服务器上恢复数据库(通过ssh登录):

$ mysql -u user -p db-name < db-name.out
Run Code Online (Sandbox Code Playgroud)

要么

$ mysql -u user -p 'password' db-name < db-name.out
Run Code Online (Sandbox Code Playgroud)

如何将MySQL数据库从一台计算机/服务器复制到另一台?

简而言之,您可以使用ssh或mysql客户端将数据库从一台计算机/服务器复制到另一台计算机/服

您可以使用mysqldump和mysql命令在一次传递中运行以上所有3个命令(不安全的方法,仅在您使用VPN或信任您的网络时使用):

$ mysqldump db-name | mysql -h remote.box.com db-name
Run Code Online (Sandbox Code Playgroud)

如果您没有直接访问远程mysql服务器(安全方法),请使用ssh:

$ mysqldump db-name | ssh user@remote.box.com mysql db-name
Run Code Online (Sandbox Code Playgroud)

要么

$ mysqldump -u username -p'password' db-name | ssh user@remote.box.com mysql -u username -p'password db-name
Run Code Online (Sandbox Code Playgroud)

您可以使用相同的语法将名为foo的表复制到名为bar的远程数据库(和远程mysql服务器remote.box.com):

$ mysqldump db-name foo | ssh user@remote.box.com mysql bar
Run Code Online (Sandbox Code Playgroud)

要么

$ mysqldump -u user -p'password' db-name foo | ssh user@remote.box.com mysql -u user -p'password' db-name foo
Run Code Online (Sandbox Code Playgroud)

在UNIX/Linux下,几乎所有命令都可以使用管道运行.

更多来自参考

问候,

  • 确保在转储中使用扩展插入选项(我认为默认情况下它可能处于启用状态,但不是正数),否则恢复速度将受到严重影响. (3认同)
  • *取自此处:http://www.cyberciti.biz/tips/howto-copy-mysql-database-remote-server.html (3认同)

Umb*_*lla 14

如果你有根,你可能会发现它更快地避免 mysqldump.您可以在目标服务器上创建数据库,并直接复制数据库文件.假设user有权访问目标服务器的mysql目录:

[root@server-A]# /etc/init.d/mysqld stop
[root@server-A]# cd /var/lib/mysql/[databasename]
[root@server-A]# scp * user@otherhost:/var/lib/mysql/[databasename]
[root@server-A]# /etc/init.d/mysqld start
Run Code Online (Sandbox Code Playgroud)

这里重要的是:在复制DB文件之前在两台服务器上停止mysqld,确保在目标服务器上启动mysqld之前,目标上的文件所有权和权限是正确的.

[root@server-B]# chown mysql:mysql /var/lib/mysql/[databasename]/*
[root@server-B]# chmod 660 /var/lib/mysql/[databasename]/*
[root@server-B]# /etc/init.d/mysqld start
Run Code Online (Sandbox Code Playgroud)

随着时间的推移,压缩的使用将取决于等待压缩/解压缩(等等gzip)的时间是否大于传输未压缩数据所浪费的时间; 也就是你的连接速度.