shell编程-备份脚本

备份数据库

#!/bin/bash
set -x
# 使用方法:
# 使用 root 用户操作
# 1 使用本文件的内容创建文件 /usr/local/bin/back-sql.sh
# 2 修改文件 /usr/local/bin/back-sql.sh 的权限
#   chmod 755 /usr/local/bin/back-sql.sh
# 3 使用 root 用户执行命令 crontab -e
# 4 之后使用下面的内容填充(不包含 # ),含义是每天的 00 点 00 分执行备份数据库的脚本
# 00 00 * * * /usr/local/bin/back-sql.sh > /tmp/back-sql.log 2>&1
# 脚本作者: 闫顺军
# 邮箱: 
# 脚本作用:
# 对 MySQL 数据库的生产逻辑库进行全量备份,并对
#######################################

###### 定义变量 ######
export PATH=$PATH:/usr/local/bin

# mysql 用户
sql_user=shark

# mysql 密码
sql_pwd=password

# mysql 主机名或者ip
sql_host=x.x.x.x

# mysql 端口
sql_port=3306

# 数据备份目录
backup_dir=/apps/dbbackup/mysqldata

# 时间戳
dt=$(date +%Y%m%d%H%M)

# docker-compose.yml 文件绝对路径
compose_file=/apps/middle/mysql/docker-compose.yml

# 需要备份的逻辑库名称
dbs="spms_admin spms_alarm spms_asset spms_convenient spms_datatemp spms_datav spms_device spms_edge spms_meet spms_message spms_security spms_system spms_workorder"
###### 备份前删除 15 天和 15 天之前备份的文件 ######
find ${backup_dir} -mtime +15 -name 'all*.sql'|xargs rm -rf


###### 备份逻辑库 ######
docker-compose -f ${compose_file} exec mysql mysqldump -u${sql_user} -p${sql_pwd} -h ${sql_host} -P ${sql_port} --set-gtid-purged=OFF --triggers --routines --events --databases $dbs 2>/dev/null  > ${backup_dir}/all-${dt}.sql

备份知道目录的数据

#!/bin/bash
set -x
# 使用方法:
# 使用 root 用户操作
# 1 使用本文件的内容创建文件 /usr/local/bin/back-middle.sh
# 2 修改文件 /usr/local/bin/back-middle.sh 的权限
#   chmod 755 /usr/local/bin/back-middle.sh
# 3 使用 root 用户执行命令 crontab -e
# 4 之后使用下面的内容填充,含义是每月的 1 号和 15 号的 01 点 00 分执行备份 middle 目录的全部文件
# 00 01 1,15 * * /usr/local/bin/back-middle.sh >/tmp/back-middle.log 2>&1
# 脚本作者: 
# 邮箱: 
# 脚本作用:
# 对 MySQL Redis RabbitMQ 等中间件的 docker-compose 文件、配置文件和数据目录进行文件级别的全量备份,每月 1 号和15号分别执行一次。
#######################################

###### 定义变量 ######
export PATH=$PATH:/usr/local/bin

###### 程序开始 ######
# 备份程序的整个目录,包含 MySQL/Radis/RabbitMQ 的程序和数据
cd /apps
tar -cvzf /apps/dbbackup/middle-$(hostname)-$(date "+%Y%m%d").tar.gz  middle  --exclude=*log*
if [ $? -eq 0 ];then
    # 删除之前的备份
    find /apps/dbbackup  -mtime +16 -name 'middle*.tar.gz'|xargs rm -rf
fi

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,以下是一个自动备份数据库的shell程序: ```bash #!/bin/bash # 设置数据库信息 DB_USER="your_db_username" DB_PASS="your_db_password" DB_HOST="your_db_host" DB_NAME="your_db_name" # 设置备份文件名格式 BACKUP_FILENAME="${DB_NAME}_$(date +%Y-%m-%d_%H-%M-%S).sql.gz" # 执行备份命令 mysqldump -u ${DB_USER} -p${DB_PASS} -h ${DB_HOST} ${DB_NAME} | gzip > ${BACKUP_FILENAME} # 将备份文件上传到远程服务器(可选) # scp ${BACKUP_FILENAME} remote_user@remote_host:/path/to/backup/folder # 删除过期备份文件(可选) # find /path/to/backup/folder -mtime +7 -type f -delete ``` 上述代码中,我们首先设置了数据库的用户名、密码、主机名和数据库名。然后,我们使用 `mysqldump` 命令备份数据库,并将备份文件压缩成 `.gz` 格式。备份文件名的格式为 `${DB_NAME}_年-月-日_小时-分钟-秒.sql.gz`。你可以根据需要修改备份文件名的格式。 如果你想将备份文件上传到远程服务器,可以使用 `scp` 命令实现。如果你想删除过期备份文件,可以使用 `find` 命令实现。 你需要将上述代码保存成一个 `.sh` 文件,并使用 `chmod +x` 命令赋予执行权限。然后,你可以使用 `crontab` 命令设置定时任务,自动运行备份脚本。例如,你可以使用以下命令设置每天凌晨 3 点自动备份数据库: ``` 0 3 * * * /path/to/backup.sh ``` 上述命令中,`/path/to/backup.sh` 是你备份脚本的路径。你可以根据需要修改备份时间和备份脚本的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shark_西瓜甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值