网站首页 > 技术文章 正文
最近给朋友写了一个应用,用的是阿里云的服务器,但是没有买云备份,朋友又怕出问题。因为这个应用是作为朋友员工发工资的凭证。所以我想给朋友做一个数据库定时备份的功能。
当时思路有2个,一个是主从服务,另一个是计划任务备份。我想都没想,因为我有群晖,7x24小时不关机,所以直接选择了计划任务备份。那么选定了思路,下面就开始执行。
老朋友看我的文章,应该都了解,跟着我来做,总有一些先决条件。没错,这一次也是一样的。它的条件就是:群晖要获取root的权限!有了这一步,那么我们就可以继续了。
对应shell命令,小编不是特别懂,所以,咱们就去询问一下AI。下面是小编和的chatGPT3.5的对话。第一次让它写的shell
然后,因为小编的MySQL端口不是默认的,又只需要备份一个数据库,并非全部。所以通过多次对话,得到了最终的shell命令
#!/bin/sh
# 配置MySQL连接信息
MYSQL_HOST="your_host"
MYSQL_PORT="your_port"
MYSQL_USER="your_user"
MYSQL_PASS="your_password"
BACKUP_DIR="your_dir"
DATE=$(date +"%Y%m%d_%H%M%S")
DATABASE_TO_BACKUP="your_dbname"
# 循环备份每个数据库
for DB in $(mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASS -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"); do
# 如果当前循环的数据库不是需要备份的数据库,则跳过备份
if [ "$DB" != "$DATABASE_TO_BACKUP" ]; then
continue
fi
# 构建备份文件名
FILENAME="$DB"_"$DATE.sql"
# 备份数据库到指定文件
mysqldump -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASS $DB > $BACKUP_DIR/$FILENAME
# 打印备份结果
if [ $? -eq 0 ]; then
echo "备份成功: $FILENAME"
else
echo "备份失败: $FILENAME"
fi
done
只要将上面的各个配置信息修改成服务器上正确的内容就可以了。修改完成,把这个shell保存成sh文件。小编就把这个文件保存成smjj_sql_bak.sh。这里就需要注意了。保存成这个文件后,因为是windows下写的shell,换行格式需要转换为LF,所以打开文本编辑器。小编使用的是editplus。所以再文档-》文件格式-》更改文件格式
再选择Unix/Mac OS X,点击确定
这样的话,这个shell就可以使用了。
下面打开winscp和putty,使用root账号登录到群晖nas
把sh文件上传到nas。小编就通过nas自带的FTP拷贝到了files文件夹下面的smjj_sqlbak里面,然后之前设置的备份目录也是再这里哦。
接着,记得给sh权限。我这边直接给了777的权限。
下面就是测试了。
在putty进入smjj_sqlbak目录,然后运行smjj_sql_bak.sh
执行完成
这里要注意一点,就是ftp的那些目录都是在volume1这个目录下面的。使用过群晖的朋友应该多多少少有些了解。
能运行成功后,我们就可以在我们备份的目录下面,看到刚刚导出的sql文件。
那么,这个sh就执行成功了。
要让他定时执行的话,我们就登录群晖去新增一个定时任务吧。
登录群晖的网页,双击打开【控制面板】,找到【任务计划】点击新增【计划的任务】,【用户定义的脚本】
常规修改【任务名称】:smjjbak
计划修改频率,小编这边是【每天】首次运行时间00:01就是每天的凌晨12点零1分,执行这个sh
任务设置:修改【用户定义脚本】:bash /volume1/files/smjj_sqlbak/smjj_sql_bak.sh
保存。
测试一下这个任务
选中任务,点击运行。
到备份文件夹里面查看,是否有备份的文件,如果有,那么就设置成功了。
今天的教程就到这里,谢谢同学们关注,阅读,转发,评论和点赞。
猜你喜欢
- 2025-01-05 Linux运维获取内存、cpu、磁盘IO信息
- 2025-01-05 基础到实战一飞冲天(一)--linux基础(六)
- 2025-01-05 分享跨平台免费的SSH客户端 PortX
- 2025-01-05 前方高能预警!电脑病毒再度来袭!
- 2025-01-05 推荐-运维管理服务器常用的工具
- 2025-01-05 树莓派制造木制 LED 显示器,只需几百元,从此过瘾玩游戏
- 2025-01-05 揭秘!那些让程序员爱不释手的终端神器,你用过几个?
- 2025-01-05 Dever勒索病毒实例分析一则
- 2025-01-05 Python基础到实战一飞冲天(一)--linux基础(五)
- 2025-01-05 外网访问群晖DSM7.0使用Docker安装ZeroTier实现内网穿透
- 最近发表
-
- 如何在 Linux 上安装 Java_怎么在linux中安装jdk
- Linux中tar命令打包路径相关问题_linux怎么用tar打包一个目录
- 常用linux系统常用扫描命令汇总_常用linux系统常用扫描命令汇总表
- VM下linux虚拟机新建过程(有图)_linux虚拟机创建新用户命令
- 系统小技巧:迁移通过Wubi方式安装的Ubuntu系统
- 文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
- 如何利用ftrace精确跟踪特定进程调度信息
- prometheus网络监控之fping-exporter
- hyper linux的实操步骤,hyper-v批量管理工具的使用指南
- 2021年,运维工程师笔试真题(二)(附带答案)
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)