aF. Asked: 2015-01-13 06:04:24 +0800 CST2015-01-13 06:04:24 +0800 CST 2015-01-13 06:04:24 +0800 CST 如何制作远程mysqldump? 772 我知道如果我指定 --host 可以执行远程 mysqldump,但是是否也可以在远程服务器中创建文件? mysql backup 4 个回答 Voted tersmitten 2015-01-13T07:59:07+08:002015-01-13T07:59:07+08:00 在 ssh 上管道 gzipped mysql 转储怎么样? RolandoMySQLDBA 2015-01-13T09:37:07+08:002015-01-13T09:37:07+08:00 您最好直接获得对 ssh 的必要 root 访问权限并 scp 文件或转储。 如果您无法通过 ssh 访问具有 root 访问权限的服务器,但您只是对将文件转储到本地 DB 服务器中感兴趣,那么您的选择非常有限。事实上,我只能想到一种选择。 在本地 mysqldump 数据的唯一方法是不使用 mysqldump 本身,而是复制 mysqldump 可以做的事情。由于 mysqldump 能够创建 CSV 文件,但您没有操作系统访问权限,因此您需要自己动手。 登录到 mysql 并运行SELECT ... INTO OUTFILE. 这是MySQL 文档的示例SELECT ... INTO OUTFILE SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table; 这需要将secure_file_priv设置为特定文件夹。您还需要FILE 权限。 为了充分阐明上述查询,请记住,目标系统SELECT ... INTO OUTFILE是 DB 服务器,而不是客户端。它在 MySQL 文档中这样说: SELECT ... INTO OUTFILE 语句的主要目的是让您非常快速地将表转储到服务器机器上的文本文件中。如果要在服务器主机以外的其他主机上创建结果文件,通常不能使用 SELECT ... INTO OUTFILE,因为无法写入相对于服务器主机文件系统的文件路径。 Vérace 2015-01-15T06:20:05+08:002015-01-15T06:20:05+08:00 @aF 我认为@tersmitten 提到的解决方案是一个 Unix NAMED FIFO PIPE - 所以你实际上在你的系统上存储了最少的数据。在此处查看 mknod/mkfifo 命名管道。尝试谷歌搜索中的一些链接(intermachine IPC mkfifo 示例)。我隐约记得几年前为 Oracle 重做日志执行此操作。 有几个想法-也许您可以在服务器上的另一台机器上安装一个网络驱动器并将备份传输到该驱动器?或者云——它有多大?Dropbox 和其他服务提供这个 - 谷歌驱动器? [编辑](可惜我今天在笔记本电脑上 - 无法访问机器来检查我关于这个迷人问题的理论(给你+1)。 看看这里- 我跳出来的一些结果是这些(1、2、3和4)。 [EDIT2](我的大脑今天真的不工作了!:-)) 为什么不复制到远程机器然后备份副本?快速简单的复制是MySQL 赢得 F\LOSS 数据库大战的原因。备份(在安静时间)允许副本在这些安静时间落后于安静时间,然后赶上备份不会成为问题。您使用什么存储引擎 - MyISAM 或 InnoDB?什么版本的MySQL? Best Answer aF. 2015-01-15T07:37:55+08:002015-01-15T07:37:55+08:00 无法将 mysqldump 直接执行到远程位置(就像在其他 sgdb 中一样)。
在 ssh 上管道 gzipped mysql 转储怎么样?
您最好直接获得对 ssh 的必要 root 访问权限并 scp 文件或转储。
如果您无法通过 ssh 访问具有 root 访问权限的服务器,但您只是对将文件转储到本地 DB 服务器中感兴趣,那么您的选择非常有限。事实上,我只能想到一种选择。
在本地 mysqldump 数据的唯一方法是不使用 mysqldump 本身,而是复制 mysqldump 可以做的事情。由于 mysqldump 能够创建 CSV 文件,但您没有操作系统访问权限,因此您需要自己动手。
登录到 mysql 并运行
SELECT ... INTO OUTFILE
.这是MySQL 文档的示例
SELECT ... INTO OUTFILE
这需要将secure_file_priv设置为特定文件夹。您还需要FILE 权限。
为了充分阐明上述查询,请记住,目标系统
SELECT ... INTO OUTFILE
是 DB 服务器,而不是客户端。它在 MySQL 文档中这样说:@aF 我认为@tersmitten 提到的解决方案是一个 Unix NAMED FIFO PIPE - 所以你实际上在你的系统上存储了最少的数据。在此处查看 mknod/mkfifo 命名管道。尝试谷歌搜索中的一些链接(intermachine IPC mkfifo 示例)。我隐约记得几年前为 Oracle 重做日志执行此操作。
有几个想法-也许您可以在服务器上的另一台机器上安装一个网络驱动器并将备份传输到该驱动器?或者云——它有多大?Dropbox 和其他服务提供这个 - 谷歌驱动器?
[编辑](可惜我今天在笔记本电脑上 - 无法访问机器来检查我关于这个迷人问题的理论(给你+1)。
看看这里- 我跳出来的一些结果是这些(1、2、3和4)。
[EDIT2](我的大脑今天真的不工作了!:-))
为什么不复制到远程机器然后备份副本?快速简单的复制是MySQL 赢得 F\LOSS 数据库大战的原因。备份(在安静时间)允许副本在这些安静时间落后于安静时间,然后赶上备份不会成为问题。您使用什么存储引擎 - MyISAM 或 InnoDB?什么版本的MySQL?
无法将 mysqldump 直接执行到远程位置(就像在其他 sgdb 中一样)。