我需要一个脚本,自动备份的MySql数据库。我知道有很多职位和脚本有关于这个主题已经,但这里是我的不同之处。
1.该脚本需要在托管MySql数据库的计算机上运行(这是一台Linux计算机)。
1.备份必须保存到数据库所在的服务器上。
1.需要每30分钟进行一次备份。
1.当备份超过一周时,将删除该备份,除非它是该周创建的第一个备份。例如,在这些备份中,backup_1_12_2010_0-00_Mon.db、backup_1_12_2010_0-30_Mon.db备份_1_12_2010_1-00_Mon.db...备份_7_12_2010_23-30_Sun.db等仅保留备份_1_12_2010_0-00_Mon.db。
有人有类似的想法吗?或者从哪里开始?
7条答案
按热度按时间jw5wzhpr1#
产品名称 *:
尝试使用以下内容创建文件something.sh:
为文件给予足够的权限
或
然后创建一个cron
把它设置成
请记住,数字或“*”字符具有以下结构:
您也可以使用较新版本的linux发行版中提供的helper文件夹,在那里您可以找到
/etc/cron.daily
、/etc/cron.hourly
、/etc/cron.weekly
等。在这种情况下,您可以在所选文件夹中创建一个指向脚本的符号链接,操作系统将负责以承诺的重复性(来自@Nick的一个强大评论)运行它。q5lcpyga2#
创建如下所示的shell脚本:
替换用户名、密码和备份目录(my_dir)。将其保存在目录(shell_dir)中,名称为filename.sh
使用crontab -e将其安排为每天运行,如下所示:
这将在每天早上8:30运行,并备份数据库。它还删除了超过10天的备份。如果你不想这样做,只需删除脚本的最后一行。
ajsxfq5m3#
做着和很多人差不多的事。
1.该脚本需要在托管MySql数据库的计算机上运行(这是一台Linux计算机)。
=〉在这台机器"A"上创建一个本地bash或perl脚本(或其他)"myscript"
1.备份必须保存到数据库所在的服务器上。
=〉在脚本"mycript"中,你可以只使用mysqldump.从本地备份中,你可以创建一个tarball,通过scp发送到你的远程机器.最后你可以把你的备份脚本放到crontab(crontab-e).
一些提示和功能,让你开始,因为我不会发布我的整个脚本,它不完全做的伎俩,但不远:
然后要删除"date"之前的文件,您可以查看man find并关注mtime和newer选项。
编辑:如前所述,除了temproray文件外,没有人对做本地备份特别感兴趣,以便能够轻松地发送tarball并在发送时删除它。
igetnqfo4#
您可以使用设置为每30分钟运行一次的单行cronjob来完成大部分操作:
这将每30分钟创建一次数据库转储,并且每周都将开始覆盖前一周的转储。
然后再运行一个cronjob,每周运行一次,将最近的转储文件复制到保存快照的单独位置。
vfhzx4xs5#
在简要阅读了这个问题和好的答案之后,我想再补充几点,其中一些已经提到了。
1.创建备份
1.压缩备份文件
1.加密压缩备份
1.将备份发送到云(DropBox、OneDrive、GoogleDrive、AmazonS3等)
1.获取有关结果的通知
1.设置计划以定期运行备份过程
1.删除旧的备份文件
要复合一个脚本以涵盖所有备份步骤,您需要付出一定的努力和知识。
我想分享一个link to an article(我是作者之一),它描述了最常用的备份MySQL数据库的方法,并提供了一些细节:
1.巴什脚本
1.自动备份
1.第三方工具
希望能有所帮助!
v1l68za46#
我更喜欢Debian自带的AutoMySQLBackup,它非常简单,可以创建每日备份,并且可以配置。此外,它还可以存储每周备份和每月备份。
我已经运行了一段时间,它的超级容易配置和使用!
t8e9dugd7#
您可以考虑使用这个开源工具matiri,https://github.com/AAFC-MBB/matiri,它是一个并发的mysql备份脚本,元数据在Sqlite3中。特性(比您要求的更多...):
充分披露:matiri的原始作者。