每天数据备份跑定时任务这种方法可行吗

2015-12-14 23:18:30 +08:00
 quietin

被安排做一个备份的活,表很多,需要做每日备份,因为有要看某一天某个页面长什么样子的需求 orz

这个需求是这样,我是后来才知道的

一开始只是叫我跑定时任务把每天更新的数据保存到另一个数据库,我就照做了,但是发现了一个问题——外键约束。如果去除外键约束确实可以存进去,或者说按外键连接的表先存,但是这样明显很麻烦,后面数据存进去的外键也得改,因为连的主键变了,还得加一个日期字段,不然根本不知道存的是哪天。用的是 django, 如果要加字段不一定能用 django 的 orm ,再加上表非常多,用 MySQLdb 写简直要我老命

我自己网上查了一下,感觉用 lvm 热备份,再搭个容器看历史数据就好了

但 leader 闲麻烦还是怎么样,因为运维那边好像很麻烦的样子。

我说每天 mysqldump 后 gzip 一下,然后就没有然后了

3079 次点击
所在节点    MySQL
8 条回复
m4ker
2015-12-14 23:44:12 +08:00
为啥不利用主从进行备份?
wy315700
2015-12-14 23:46:27 +08:00
xtrabackup
msg7086
2015-12-15 00:02:37 +08:00
主从复制备份。任何时间都可以中断复制,备份从库,然后再继续复制,这样任何时候备份都能保证一致性。只要你想,每 10 分钟备份一次都行。
quietin
2015-12-15 10:14:42 +08:00
@m4ker 主从备份,那是 slave 的数据一直和 master 一样啊,现在的要求相当于给每天打快照那种, 不一样的
quietin
2015-12-15 10:15:43 +08:00
@msg7086 中断的时候主库挂了不会有风险么,感觉这个方案不如 lvm 热备份好啊
rubyonrail
2015-12-15 10:55:49 +08:00
定期 mysqldump 可以的, 然后把主库的 binlog 打开, 挂了之后先从 mysqldump 恢复, 然后从 binlog 中取得 mysqldump 后发生的操作, 重放日志恢复, 记得 mysqldump 的时候开 master data 的选项
quietin
2015-12-15 11:32:53 +08:00
@wy315700 好像是好东西
msg7086
2015-12-15 21:07:01 +08:00
@quietin 不会。
复制有 2 个线程,一个是复制日志,一个是把日志应用到数据库上。
你只需要中断后者就行了,前者还是继续跑的。
就算数据库崩溃了,也可以在备份完从库以后恢复复制,可以得到完整的数据。
(而且你这 LVM 就能抓到最后一瞬间的数据了吗?

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

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

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

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

© 2021 V2EX