如何优雅简单的备份远程数据库到本机?

2016-05-30 16:09:28 +08:00
 zyqf
多个 vps 的数据库授权一个 vps(A)访问,打算在 vps(A)运行 python ,把其余的 vps 数据库都备份到 vps ( A )

* 首先, mysqldump 好像只能备份到该数据库所在的 vps 上,不开 ftp 的情况下可有方法拉回来?

* 在python中使用 sql 语句取数据,如表字段( DESC user ),表数据( SELECT * FROM user ),然后再处理这些数据成备份格式的 sql 文件,略嫌麻烦。

各位大大,还有其他好的方法吗?
5634 次点击
所在节点    Python
60 条回复
zyqf
2016-05-30 17:00:57 +08:00
@xqin 十分感激,我晚上回去用电脑实验下,楼上的方法我也会参考的,谢谢各位的建议😊😊
des
2016-05-30 17:42:16 +08:00
数据库版本一致的情况下,直接复制二进制文件最快
zyqf
2016-05-30 17:53:55 +08:00
@des 然而版本在 5.3-5.6 间波动😂😂
qooweds
2016-05-30 18:03:04 +08:00
远程修改 crontab,加一条命令就行了,50 台机器就是一个循环的事.
fabric 应该也可以吧
goodryb
2016-05-30 18:03:50 +08:00
@xqin 这么激动干啥,这么简单的问题处理起来方法多了,前面的人也没说不能远程 dump 吧
照你这么说,你知道楼主的 VPS 是一家服务商的吗?就算是一家服务商,内网互通吗? 假如内网不互通,要是 VPS 的 mysql 没有公网访问,你这个方法能用吗?

开放条件下,什么可能都有,为啥这么急躁呢。
我倒是觉得 15 楼
@cxbig 的第二个方法最简单
wingtatlee
2016-05-30 18:31:02 +08:00
又開始吵架的節奏...😄
cxbig
2016-05-30 18:32:25 +08:00
@xqin
- 远程使用 mysqldump 势必要在 server 端开启访问端口和设置账户密码和 IP ,这是很危险的。
- 另外 3306 端口是不加密的,把明文密码放在这种远程命令里更是危险。
请不要误导他人
xqin
2016-05-30 19:05:37 +08:00
@goodryb 你说 @cxbig 的方法好, 说明你还没明白楼主目前的处境,
楼主是可以登陆 vsp(A), 且 vps(A) 是可以访问 他所要备份数据库的那些机器的.
所以不存在开什么 ssh tunnel, 楼主直接 ssh 登陆 vps(A) 然后执行 mysqldump 就可以把其他的那 50 台机器的数据库备份至 vps(A).

@cxbig 你根本就没明白楼主的环境, 他要备份的那几十台机器的 3306 只有 vps(A)可以访问得到.
另外 3306 加不加密, 我不知道, 我也没研究过.

密码只是做为参数传递给 mysqldump 这个命令, 至于 mysqldump 在向 mysql 服务器交互的时候 是不是加密的是由 mysql 远程访问协议所决定的.

另外你的 3306 端口不加密的依据是哪来的? 是谁在误导人?
xqin
2016-05-30 19:12:20 +08:00
@goodryb 你第一段中描述的那些内容已经说明你没有认真看楼主的问题.
我再帮他重复一遍.
```
多个 vps 的数据库授权一个 vps(A)访问,打算在 vps(A)运行 python ,把其余的 vps 数据库都备份到 vps ( A )

* 首先, mysqldump 好像只能备份到该数据库所在的 vps 上,不开 ftp 的情况下可有方法拉回来?
```
goodryb
2016-05-30 19:18:14 +08:00
@xqin 你这么抠细节,那你看看楼主的补充里面
“只要在 vps(A)上运行 python 就可以拉回来至 vps A ,其他 vps 不作另外处理。”,
那我能不能说 “你没有认真看楼主的问题.” ?

毫无意义,这里只是讨论方法,用不用楼主自己选,不要动不动就放地图炮
xqin
2016-05-30 19:21:24 +08:00
@goodryb 难道我回复的方法, 需要在其他的 vps 上做处理吗?
goodryb
2016-05-30 19:23:54 +08:00
@xqin

“只要在 vps(A)上——运行 python ——就可以拉回来至 vps A ,其他 vps 不作另外处理。”,

你根本就没明白楼主的环境,楼主就是要用 python
xqin
2016-05-30 19:27:17 +08:00
@goodryb 哈哈哈哈, 笑死我了.
都有不需要 python 的方法了, 不是更省事了? 强拉 python 来为自己做辩护有意思吗?
xqin
2016-05-30 19:29:22 +08:00
@goodryb 另外 楼主 考虑用 python 的原因, 就是因为他用百度搜索 mysqldump 的用法之后,
以为 mysqldump 把备份后的数据保存至 mysql 的服务器上(即其他的 vps 上),
才考虑用 python 来写代码解决.

现在已经告诉楼主 他百度出来的结果是错的, 所以就根本不存在继续写 python 代码来备份数据这一说了.
goodryb
2016-05-30 19:35:50 +08:00
@xqin 你是楼主开的马甲? 楼主的情况你都知道?挖个坑你就真的跳进去了?

楼主哪里告诉你
“考虑用 python 的原因, 就是因为他用百度搜索 mysqldump 的用法之后,
以为 mysqldump 把备份后的数据保存至 mysql 的服务器上(即其他的 vps 上),
才考虑用 python 来写代码解决.”

这个问题,楼主不明白,楼上的 V 友都不懂?

“上面那些回复的人, 我都怀疑他们是否有认真看清楼主的描述, 以及是否用过 mysqldump ?”
还要专门一个回复来个反问句? 你想干嘛,是不是楼上的 V 友给你道歉认错?
xqin
2016-05-30 19:39:10 +08:00
@goodryb 不需要道歉.

我专门回复的那句话, 就是在问这些人, 是否真的理解楼主的问题, 是否真的有用过 mysqldump ?

楼主说 mysqldump 备份的数据是在远程的 mysql 服务器, 那就真的是在 远程的 mysql 服务器上?

真正用过 mysqldump 的人, 会不知道 这个数据是备份在哪的?
falcon05
2016-05-30 19:45:20 +08:00
@goodryb 潜台词:我不是针对谁,而是说在座的各位都是 XX ,哈哈哈哈
xqin
2016-05-30 19:46:18 +08:00
@cxbig MySQL 协议分析
http://hutaow.com/blog/2013/11/06/mysql-protocol-analysis/

请拿出证据证明你所描述的说法:
"- 另外 3306 端口是不加密的,把明文密码放在这种远程命令里更是危险。 "
goodryb
2016-05-30 19:46:27 +08:00
@xqin 你说的这个方法, 13 楼不是早就回复了?你认真看过楼上的回复么?


另外:
技术上的问题,就从技术上来讨论,就算是楼上众 V 友没用过 mysqldump ,也是再为楼主想办法,闻道有先后,不知道也没什么,你知道,告诉他正确的方法就是,能帮助别人也是一种快乐。

但是不要在回答问题的时候使用这种反问句来质问别人,不想上升到个人素质修养层面。

如果你请教别人一个问题,别人回答了之后,还要加上一个反问句“这都不知道?”,你心里舒服吗?
goodryb
2016-05-30 19:47:11 +08:00
@falcon05 你算是 Get 到 G 点了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/282252

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX