您现在的位置是: 网站首页 >Shell >Shell常用脚本 Shell
使用Shell脚本自动备份项目中的MySQL数据库
admin2019年3月13日 14:39 【Linux | Shell 】 1450人已围观
Shell常用脚本简介 汇总常用的Shell常用脚本
**自动备份项目中的MySQL数据库** 指定备份路径,自动搜索所有数据库,可以添加到Linux定时任务中 ```bash #!/bin/bash # 备份MySQL数据库的脚本 # 2019年3月13日 backup_folder="mysqlbackup"$(date +%Y-%m-%d) backup_path="/root/django-web/StarMeow/project_bak/${backup_folder}" # 文件保存路径 # 判断文件夹是否存在,如果不存在则创建 if test -d $backup_path then echo "文件夹 $backup_folder 存在" else echo "文件夹 $backup_folder 不存在,创建中" mkdir $backup_path fi mysql_user="root" mysql_pswd="test" function check_exist(){ if [ ! -e $1 ] # 如果sql文件不存在,进行备份 then echo "$(date +"%Y-%m-%d %H:%M:%S") 正在备份 $1 数据库" >> $backup_path/backup_log.log else echo "$(date +"%Y-%m-%d %H:%M:%S") 删除 $1 数据库备份后重新备份" >> $backup_path/backup_log.log rm $1 fi } function backup_mysql(){ echo "备份 $1 数据库中..." # 备份数据库 database_dump="${backup_path}/database_$1.sql" # 命令执行备份 if test -z $2 # 第二个参数为空也就是不用压缩 then check_exist $database_dump mysqldump -u$mysql_user -p$mysql_pswd $1 > $database_dump elif test $2 = "gzip" then check_exist $database_dump.gz # 压缩数据库备份 mysqldump -u$mysql_user -p$mysql_pswd $1 | gzip > $database_dump.gz else echo "命令、参数错误" fi if [ $? == 0 ] then echo -e "$(date +"%Y-%m-%d %H:%M:%S") 数据库 $1 备份成功$2\n" >> $backup_path/backup_log.log else echo -e "$(date +"%Y-%m-%d %H:%M:%S") 数据库 $1 备份出错$2\n" >> $backup_path/backup_log.log fi } # 判断,mysql是否安装 mysql_version=$(mysql -V) if [ $? == 127 ]; then echo mysql命令没找到,可能没安装 else echo "当前mysql版本:$mysql_version" >> $backup_path/backup_log.log echo "$(date +"%Y-%m-%d %H:%M:%S") 自动备份mysql数据库到 $backup_path 目录" >> $backup_path/backup_log.log # 备份指定名字数据库 # backup_mysql "djangostarmeow" # backup_mysql "flaskmovie" # 压缩备份指定名字数据库 # backup_mysql "djangostarmeow" "gzip" # 压缩备份所有数据库 backup_mysql "--all-databases" "gzip" # 获取mysql所有数据库 all_databases=$(mysql -u$mysql_user -p$mysql_pswd -e "show databases;") # 得到的结果为:Database djangostarmeow flaskmovie information_schema mysql performance_schema # 按照空格分隔字符串,放在数组内 arr=(${all_databases}) for name in ${arr[*]} do # 虚幻备份 if test $name != "Database" then backup_mysql $name fi done fi ```
很赞哦! (0)
相关文章
文章交流
- emoji