【问题标题】:mysqldump over SSHSSH 上的 mysqldump
【发布时间】:2020-07-01 15:25:21
【问题描述】:

我需要使用 SSH 直接在远程服务器上执行 mysqldump。 主要原因是我在服务器上没有足够的空间来正常执行此操作,然后使用 SSH 将其复制过来。

不知何故,我需要将 mysqldump 命令的输出通过管道传输到 SSH。

理想情况下,这将是一个单行命令。

谢谢

【问题讨论】:

  • 磁盘空间现在很便宜。在您的服务器中添加更多硬盘。
  • 不是一行,但short python script 可能是它的基础(需要组装)。
  • @RonvanderHeijden 我可以使用 SSH 但无法将 mysqldump 的输出本地保存在服务器上

标签: mysql ssh mariadb


【解决方案1】:

你可以试试:

ssh -t user@server \
    "mysqldump \
        -B database \
        --add-drop-table \
        --ignore-table database.logs" > ~/mydatabase.sql

请注意,在此示例中,您无需登录 mysql。而且您不需要 sudo 权限。

我还添加了--add-drop-table--ignore-table 选项,因为它们很常见。

你可以把> ~/mydatabase.sql改成| gzip -9 > ~/mydatabase.sql.gz来压缩文件。

【讨论】:

  • 你能否提供其他变体:我已登录到 mysql 服务器,我希望 mysqldump 输出
  • 我认为只有当您的 user@server 对目标数据库具有隐式 mysql 访问权限时,您“才需要登录到您的 mysql”。
  • @Bogdan,如果您需要指定凭据,请使用mysqldump -u user -ppassword ...(注意 -p 和密码不是空格分隔)
  • 不要使用-ppassword!因为现在,您的密码在您的 bash 历史记录中。
  • 好点,最好为远程服务器上的用户设置密码较少的访问权限。
【解决方案2】:

您希望不在运行 mysql 的服务器上存储转储文件远程系统。 如果通过 ssh 执行 MysqlDump 命令,转储文件最终会保留在连接到 ssh 的服务器上。 可以考虑通过ssh隧道连接mysql执行mysqldump命令。

我不确定是否有任何工具支持 linux 上的 ssh 隧道,但 Putty 可以在 Windows 上进行 ssh 隧道。

https://www.linode.com/docs/databases/mysql/create-an-ssh-tunnel-for-mysql-remote-access/

【讨论】:

  • “最终留下”是什么意思?如果mysqldump 的输出没有转储到远程服务器上的任何文件中,则该服务器上没有文件可以保留
猜你喜欢
  • 1970-01-01
  • 2012-08-15
  • 2023-03-03
  • 2017-02-22
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
相关资源
最近更新 更多