下午接到运营的通知,说某项服务无法运行了。该项服务所在的服务器,日常只用来备份数据库和一些小活动项目。不应该会因为负载挂掉。最近也没有动上面的代码。有点想不明白。
通过terminus能够连接到服务器,查了一下nginx和php-fpm都是正常运行。再去看错误日志,日志上提示的是权限不足Failed to read data files。以为是谁把www文件夹权限改了。进去一看发现权限都对。把代码下载到本地也能正常运行。排除了好久就怀疑是不是nginx配置问题,用vim打开配置文件的时候服务器就提示文件不能保存,这时候就想到是不是磁盘满了。用df -h看了一下,果然是满了:
300G的服务器都满了,最后排查了一下大文件,结果是mysql备份文件导致的,mysql一天的备份量是2.6G,几个月的时间就满了。
5 个赞
所以是只备份,不删除吗
备份脚本不够完善,应该删除30天之前的
脚本+计划任务
改改脚本自动删除
这种情况加硬盘就可以解决,不要给公司省钱
3 个赞
羡慕大佬,我连排查都不会,跑不起来了,就推到重来。
改改mysql日志清理的时间和大小
多看看文档多练习就好了,谁都不是一开始就全都明白的。
确实是,脚本写的是半年删除,结果3个月就满了。
服务器资源以及软件监控告警是要做的
我这也是,做好自动删除超时备份文件,但是数据还是在增加,迟早还是要满
我只会复制我太菜了
是的,数据增长太快了。
mysql备份脚本咋写呀
1T 硬盘走起
巧了,我昨天也是,找了半天,查日志才发现是硬盘满了
目前在用的mysql备份脚本,包含了数据备份、删除过期数据和同步到备份服务器
#!/bin/bash
baseDir="/home/bak/mysql/";
cd "$baseDir";
echo "开始备份数据库";
newDate=`date +%Y%m%d_%H%M%S`;
echo `mysqldump --default-character-set=utf8 car|gzip>bak_$newDate.sql.gz`;
echo "备份完成";
oldDate=`date --date='30 day ago' +%Y%m%d`;
echo "删除过期数据";
echo `rm -rf bak_$oldDate*`;
echo "删除oldtate成功";
echo "同步开始";
echo `scp bak_$newDate.sql.gz root@ip:/home/bak/mysql`;
echo "同步结束";
1 个赞
谢谢谢谢,感谢分享
是不是可以考虑下增量备份啥的