mysqldump使用gzip远程mysql数据库

我试图通过gzip压缩将数据从一台MySQL服务器传输到另一台服务器。 我到目前为止是:

mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | gzip -c | mysql -h [host] -u [user] -p[pwd] 

当然,这不起作用,因为压缩的数据正被导入到远程数据库。 如何在导入之前解压缩远程服务器上的数据?或者这不起作用,我需要使用SSH吗?

谢谢

通过使用参数--compress ,MySQL客户端可以将压缩数据发送到远程服务器。 所以,传输命令行可能会被修改为:

 mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | \ mysql --compress -h [host] -u [user] -p[pwd] 

请注意,数据将通过networking以未encryption方式发送。 如果它涉及到你,通过SSHpipe道转储是一个更好的select。

你可以 – 通过多个SSHpipe道。

例如:

 ssh user@host1 "mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | gzip -c" | ssh user@host2 "gzip -c -d | mysql -h [host] -u [user] -p[pwd]" 

打破这一点,你有两个SSH命令,pipe道对方:

  • 第一个运行mysqldump ,然后将结果传递给gzip ,然后将结果发送到STDOUT。
  • 第二个命令采用STDIN并将其解压缩,然后将其传递给mysql命令。

组合这两个命令时,可以直接使用SSH在两台主机之间传递数据。

实践中的例子如下:

 cwatson@zeus:~$ ssh tyr cwatson@tyr:~$ echo stuff123tyr > testfile.txt cwatson@tyr:~$ cat testfile.txt stuff123tyr cwatson@tyr:~$ logout ssh tyr "cat ~/testfile.txt | gzip -c" | ssh thor "gzip -c -d > ~/testfile.txt" cwatson@zeus:~$ ssh thor Last login: Fri Feb 26 17:28:01 2016 from host217-44-218-9.range217-44.btcentralplus.com cwatson@thor:~$ cat testfile.txt stuff123tyr 

是的,您将需要使用某种远程执行,以使远程端执行解压缩:

mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | gzip -c | ssh [host] "gunzip | mysql -h localhost -u [user] -p[pwd]"

但是请记住,默认情况下,ssh的压缩是透明的–g(un)zip步骤是不必要的。

mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | ssh [host] mysql -h localhost -u [user] -p[pwd] mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | ssh [host] mysql -h localhost -u [user] -p[pwd]应该足够了

Pre Requesite

  • 创build发件人数据库,如果它不存在
  • 创build接收者数据库,如果它不存在
  • 文件将被保存在主目录,如果path没有改变
  • 确保你使用正确的凭据
  • 为了让接收用户在命令行上input(ctrl + alt + t)—> whoami
  • 要获得接收器的ip地址,请在命令行上键入(ctrl + alt + t)—> ifconfig |grep "inet addr"|head -1

mysqldump -u{sender dbuser} -p{sender dbpassword} {sender database name} | gzip -cf | ssh {receiver user}@{receiver ip address} ' cat >/home/myfilename.gz | gzip -dc < myfilenamegz |mysql -u{receiver username} -p{receiver dbuser} {receiver dbname} '

  • 从命令中删除{ }并插入您的值