星河避难所

返回

定期备份数据库:基于 Shell 脚本的自动化方案Blur image

数据库备份这件事,说实话,我一直没怎么上心。平时服务器跑得好好的,谁会想着备份呢?直到某天真出问题了,才意识到自己平时有多“懒”。

我相信很多人跟我一样,觉得这东西看起来麻烦,等到数据库挂了、数据丢失了,才感叹自己怎么就没提前准备好呢?

有一次数据库问题搞得我手忙脚乱,最后还好有个朋友给了我个备份文件,才算是有惊无险。

经历了这次以后,我决定不能再拖了,必须把备份这事儿自动化起来。所以,我写了一个简单的 Shell 脚本,每天自动帮我把数据库备份好,还自动传到远程服务器上,再也不用担心数据丢失了。

今天就把这个脚本分享出来,或许能帮到和我一样平时“佛系”的朋友。脚本简单好用,拿来直接用就行,具体的实现逻辑也不复杂,如果你有其他需求,可以自行优化。

备份脚本内容#

关于同步到其他服务器#

如果需要同步到远程服务器的话,为了避免每次执行脚本时都手动输入密码,可以使用 SSH 密钥对(公钥和私钥)来实现免密登录

具体步骤如下:

在数据库所在机器上生成 SSH 密钥对#

首先,确保你在数据库机器上没有已有的 SSH 密钥对(如果有,跳过这一步)。在 A 机器上运行以下命令来生成一个新的 SSH 密钥对:

ssh-keygen -t rsa -b 2048
bash

按照提示操作,默认保存路径是 ~/.ssh/id_rsa​,可以选择直接按 Enter 使用默认路径。生成密钥后,你会得到两个文件:

  • id_rsa:私钥文件,保存在数据库所在机器上。
  • id_rsa.pub:公钥文件,用于复制到需要同步的机器。

将公钥复制到需要同步的机器#

你需要将 id_rsa.pub​ 的内容复制到需要同步的机器上,添加到目标用户的 ~/.ssh/authorized_keys​ 文件中。你可以使用以下命令来实现这一点:

ssh-copy-id -i ~/.ssh/id_rsa.pub 需要同步的机器目标用户@需要同步的机器的IP
bash

如果你的目标用户在需要同步的机器上是 remote_user​,IP 地址是 192.168.1.100​,那么命令会是:

ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@192.168.1.100
bash

执行后,你将被提示输入需要同步的机器的密码,输入一次后,公钥将被自动添加到需要同步的机器上的 ~/.ssh/authorized_keys​ 文件中。

验证免密登录#

此时,你应该能够从数据库所在机器免密登录到需要同步的机器,试试这个命令:

ssh remote_user@192.168.1.100
bash

如果成功登录且没有要求输入密码,则说明配置成功。

总结#

虽然数据库备份在日常中似乎并不重要,但等到真正出问题时,备份的价值就凸显出来了。

有了这个脚本后,我再也不用手动备份数据库,也不怕丢数据了。

希望这份脚本能帮到大家。

定期备份数据库:基于 Shell 脚本的自动化方案
http://www.hejunjie.life/blog/477811e7
作者 何俊杰
发布时间 2024年10月20日
版权信息 CC BY-NC-SA 4.0
评论似乎卡住了,尝试刷新?✨