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

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 文件,略嫌麻烦。

各位大大,还有其他好的方法吗?
5632 次点击
所在节点    Python
60 条回复
lslqtz
2016-05-30 16:30:52 +08:00
通过脚本导出数据库,然后另一台机子也搞一个:我一般是计划任务运行一个脚本,然后导出后 post 到另一台机子。
clino
2016-05-30 16:35:13 +08:00
dump 以后 rsync?
alex321
2016-05-30 16:35:58 +08:00
crontab 中 mysqldump 到 vps 的 dropbox 同步目录,搞定。
或者 crontab 中增加一个 scp 到 A 。。。
zyqf
2016-05-30 16:36:03 +08:00
@lslqtz 机子有点多,一个个部署实在麻烦。
zyqf
2016-05-30 16:37:35 +08:00
@alex321
@clino

额,我的意思是:只要在 vps(A)上运行 python 就可以拉回来。其他 vps 不作另外处理。
zyqf
2016-05-30 16:38:45 +08:00
补充下,大约 50 个 vps 。
lslqtz
2016-05-30 16:39:46 +08:00
@zyqf 从 A 上用脚本连远程数据库,存进文件夹,打包文件夹, post 到远程。
hujianxin
2016-05-30 16:40:07 +08:00
fabric 可以试试。
clino
2016-05-30 16:40:57 +08:00
你所谓的拉回来是拉到 vps A 上还是你本地的 PC 上?
loading
2016-05-30 16:41:00 +08:00
主从数据库,就是比较慢。

别搞错
zyqf
2016-05-30 16:41:24 +08:00
@clino 拉到 vps A
zyqf
2016-05-30 16:41:47 +08:00
@lslqtz 好,晚上试试
xfwduke
2016-05-30 16:45:17 +08:00
mysqldump 肯定可以远程备份的
开个有权限的账号就行了
alex321
2016-05-30 16:46:06 +08:00
@zyqf 那就 A 上 crontab 50 个远程 mysqldump 到 A ,然后打包到 dropbox 目录,要拉取文件的机器上装个 dropbox ;或者在要拉取备份文件的机器上开个计划任务,定期 scp A 的 mysql 备份打包文件。。
话说这东西,我 dropbox 就在跑,备份着 4 台机器的数据的数据库和一台机器的 web 文件;另有一个七牛的 bucket 也在跑数据库备份和 web 文件。。。。
cxbig
2016-05-30 16:46:51 +08:00
- 在 A 上用 ssh tunnel ,远程执行 dump 命令,打包传输一次性解决,或分开先打包成文件,再用 scp 拖回 A 机器。
- 如果这些 vps 都是内网,可以将 A 机的某个文件夹 mount 到各 vps ,在 vps 上做 cronjob 定时 dump ,随后 A 机直接操作文件。
xqin
2016-05-30 16:50:13 +08:00
@zyqf 你听谁说的 mysqldump 只能备份到数据库所在的服务器?
mysqldump 这个程序在哪台机器上运行, 数据就是备份到哪台机器上的.

按你描述的内容,你直接在 vps(A) 上执行

mysqldump -C --all-databases -h VPS1_IP -u root -p > VPS1.sql

mysqldump -C --all-databases -h VPS2_IP -u root -p > VPS2.sql

就可以把 VPS1/VPS2 上的数据库备份到你当前的 vps(A) 上了.
xqin
2016-05-30 16:52:21 +08:00
上面那些回复的人, 我都怀疑他们是否有认真看清楼主的描述, 以及是否用过 mysqldump ?
zyqf
2016-05-30 16:57:50 +08:00
@xqin mysqldump 好像只能备份到该数据库所在的 vps 上,不开 ftp 的情况下可有方法拉回来?

用了好像,因为百度了下,没有找到相关信息,也许关键词不对。我不太肯定
zyqf
2016-05-30 16:58:20 +08:00
@xqin 实在谢谢,这个命令对现有的代码来讲是最简单的
xqin
2016-05-30 16:58:33 +08:00
@zyqf 另外目前的命令是 要手工输入密码的, 但是也可以通过 参数 来指定密码.
格式为:

mysqldump.exe --all-databases -h 8.8.8.8 -C -u root --password=这里写 mysql 账号的密码 > backup.sql

这样在备份的时候就不用手工输入密码了.

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

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

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

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

© 2021 V2EX