通过SSH复制MySQL数据库

时间:2012-01-15 11:56:40

标签: mysql database ssh copy

假设我有database1database2

database1 - 包含数据

database2 - 是空的。


我想通过SSH将所有数据从database1复制到database2 - 重复database1

我应该使用什么命令?


我试过了

mysqldump -u user -p database1 > database1.sql
Enter password: mysqldump: Got error: 1045: Access denied for user 'user'@'localhost' (using password: NO) when trying to connect

4 个答案:

答案 0 :(得分:5)

这会将数据库从S1复制到S2

mysqldump --opt <database> | gzip -c | ssh user@wherever 'cat > /tmp/yourfile.sql.gz'

解压缩文件

gunzip /tmp/yourfile.sql.gz

接下来你必须在S2上导入

mysql -h<host> -u<user> -p<password> < /tmp/yourfile.sql

享受

答案 1 :(得分:5)

只需一个命令即可通过SSH复制MySQL数据库:

mysqldump -u <local-user> -p <local-db> | gzip | ssh user@hostname \
  "gunzip | mysql -u <remote-user> -p<password> <remote-db>"

请注意,您必须先创建远程数据库。

更高级版本:

mysqldump -u <local-user> -p <local-db> | xz | pv -W | ssh user@hostname \
"tee remote-dump.sql.xz | unxz | mysql -u <remote-user> -p<password> <remote-db>"

高级版本:

  • 使用xz / unxz进行更好的压缩(虽然请注意压缩速度不会成为瓶颈 - 如果xz处于100%CPU,那么它可能已成为瓶颈,你可能会因gzip

  • 而变得更好
  • 使用pv

  • 显示进度指示器
  • 使用tee

  • 保存转储的副本

我还没有解决的一个问题是如何避免在远程命令中指定密码。能够在命令行上以交互方式输入此密码真的很棒 - 如果有人知道如何,请加入。

答案 2 :(得分:1)

使用以下2个命令:

mysqldump -u customers -p customers > customers.dump



mysql -u new_customers -p new_customers < customers.dump

(您可能会因为无法写入目录而被拒绝访问,因此您可能需要使用cd更改目录)

来源:http://support.tigertech.net/mysql-duplicate

答案 3 :(得分:0)

您需要做的第一件事是ssh 到您要从中复制或复制数据库到另一台服务器的服务器。

对我有用的命令是:

mysqldump -u <database-user> -p<database-password> <database-name> | xz | ssh <target-ssh-username>@<target-hostname> \ "tee remote-dump.sql.xz | unxz | mysql -u <target-database-user> -p<target-database-password> <target-database-name>"

注意:-您可以使用.cnf文件来存储数据库的用户名和密码。因为我的执行量很小,所以我没有使用它。
链接https://www.techiecorner.com/1619/how-to-setup-mysqldump-without-password-in-cronjob/

输入命令后。它会提示你

**The authenticity of host 'w01b3a99.kasserver.com (85.13.164.141)' can't be established.**

Are you sure you want to continue connecting (yes/no)?

输入是

然后它会提示你输入

*target-user@target-hostname* ssh password

输入密码target-user password

它将静默执行运行。一段时间后,您的命令执行将完成。

我没有使用 pv -W,因为我使用的是 Cloudways Serverpv 尚未安装。他们不允许 root 访问来安装任何软件包。