问一下大家的数据库备份方法

184 天前
victimsss  victimsss
先说现状,目前有不同区域的服务器,深圳韩国德国等,涉及到的数据库都是 mysql 和 postgre ,数据库有 容器和二进制运行的(感觉无所谓)。
目前想在后台(容器)加一个数据库备份(主动/定时, 开关)的功能,一开始想的是使用 Cron (定时) + 子进程 xx_dump (自带脚本)+ oss ( watch 相关目录,创建则上传到 oss 上)。
现在有一个问题是,后台服务是容器,且后台所处的服务器上的数据库也是容器,现在如何执行 xx_dump 呢,或者有其他方法吗?
2375 次点击
所在节点   数据库  数据库
25 条回复
tool2dx
tool2dx
184 天前
我们用的是 mysql ,每天凌晨三点,网络异地备份当天的差异化数据。
buyerhou
buyerhou
184 天前
使用 otter 开源的阿里云 mysql 数据库备份服务,可以实时备份。
rekulas
rekulas
184 天前
dump 跟你容器没啥关系吧,只要数据库正常提供服务就可以备份,支持远程主机,不过考虑速度和网络稳定性,最好在内网备份
GoRoad
GoRoad
184 天前
容器也可以 dump 啊,这无所谓的,无非多一条从容器内拷贝出来的命令
victimsss
victimsss
184 天前
@rekulas 因为我要在后台程序(容器)里面执行 dump ,执行不了, 而且 dump 工具本身也在另一个容器里面,大概是这样。如果继续之前的思路,我要的是在后台程序里面执行 docker exec 进入带有 dump 的容器,再在里面创建 .pgpass ,然后再去备份自己和其他服务器上的数据库。
Rollie
Rollie
184 天前
心情好的时候,导出一下 SQL 文件然后再备份一下服务端。存储到数据盘里~嘿嘿。
guanzhangzhang
guanzhangzhang
184 天前
看它是走 tcp 还是 data-dir 还是 sock 文件去操作的
IvanLi127
IvanLi127
184 天前
子进程里写个脚本,脚本里直接 ssh 连宿主机,然后再根据条件去备份?如果能 ssh ,我感觉这种方法比较独立且灵活
kingchy
kingchy
184 天前
我使用的 pg ,最后通过 tailscale 内网,将服务器上的数据 replicate 一份到家里完事。正好家里那份用来做数据分析,不影响服务器性能,完美😊
yeqizhang
yeqizhang
184 天前
@GoRoad 挂载个目录,也不用拷贝
zx900930
zx900930
184 天前
k8s
mysql 集群
percona-xtrabackup 每天定时备份到 minio 的桶里
要还原直接 xtrabackup --prepare 很方便。

一个好的 operator 帮你解决大部分运维的问题。
photon006
photon006
184 天前
我司数据库也是 docker 跑,但备份不跟它打交道,宿主机 pve 添加网络磁盘,直接备份 vm 整机,通过 smb 传到局域网 nas ,就跟腾讯云、阿里云备份数据卷一样,但成本低很多。
shiny
shiny
184 天前
https://github.com/wal-g/wal-g 用的这个,能同步到 S3 ,postgres 能接近实时备份
同时云服务器再开个自动快照策略,保留 7 -30 天的备份
laminux29
laminux29
184 天前
1.让开发或熟悉业务的 DBA ,先写个把数据库的数据,全部导出的脚本。把该脚本放入 crontab 定期执行,执行后把结果写日志。运维工具,实时监控日志,如果日志中发现 Error 、fail 、timeout 等字符,就告警。这种备份方式,只是用来兜底的,出故障后,运维千万不要直接用这种方式得到的备份,进行恢复。如果只剩下这种备份了,交给开发去恢复。

2.把数据库做成多节点(多副本节点),形成一个 HA 集群,单个节点故障后,Client 自动访问别的节点,类似于 Oracle RAC 的工作模式。这种模式,单节点故障后,不需要开发介入,运维可以直接进行替换故障节点,类似于 raid 磁盘故障时的操作。银行级别的数据库,也是需要使用这种结构的。
MRlaopeng
MRlaopeng
184 天前
@tool2dx 请问大佬,怎么备份差异数据呢
e2k
e2k
184 天前
@tool2dx #1 请问大佬,怎么备份差异数据呢
tool2dx
tool2dx
184 天前
@MRlaopeng
@e2k

就是 mysql 增量备份,网上搜一下一大堆。

我情况比较特殊,数据库里每条记录都有最后修改日期,查询一下当天所有被修改过的记录,通过普通 sql 查询来备份的。
cslive
cslive
184 天前
不是很简单吗,容器里安装 client,然受执行 pg_dump -h ip 这种命令就可以将不同容器里的数据库数据备份出来,如果你的网不好那就慢了
vueli
184 天前
我比较菜,宝塔每天定时把数据库和站点页面打包备份,并且也备份到七牛
GoRoad
184 天前
@yeqizhang 那也行 哈哈哈 挂载出来

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

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

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

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

© 2021 V2EX