1. 备份脚本
#!/bin/bash
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#用户名
username=root
#密码
password=1234
#将要备份的数据库
database_name=test
#备份保存路径
backup_dir=/usr/local/dba/backup_dir/$database_name/db_data
#备份日志
backup_log=/usr/local/dba/backup_dir/$database_name/log
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#创建备份日志文件夹
if [ ! -d $backup_log ];
then
mkdir -p $backup_log;
fi
function log_info ()
{
echo “$dd execute $0 $@” >> $backup_log/$database_name-log.txt
}
mysqldump -u $username -p$password $database_name > $backup_dir/mysql-backup-$database_name-$dd.sql
# 备份成功之后,删除本次以外的备份数据
cd $backup_dir
#删除所有文件,排除本次生成的文件
rm `ls *.sql|egrep -v mysql-backup-$database_name-$dd.sql`
#写创建备份日志
log_info "$@ info"
脚本2:
ource /etc/profile
#数据库全备份
db_user='root'
db_password='*****'
bak_dir=/usr/local/backupAll_db
time=`date +%F`
mkdir -p $bak_dir
mysqldump -u$db_user -p$db_password --all-databases > $bak_dir/${time}.sql
#删除21天之前的备份文件
find $bak_dir -mtime +3 -name "*.sql" -exec rm -rf {} \;
增量备份:
#!/bin/bash
# Mysql 增量备份脚本
#数据库账号
USER="root"
#数据库密码
PASSWD='*****'
#Mysql数据文件夹路径
MY_BIN_DIR=/var/lib/mysql
#备份消息日志文件夹
MY_LOG_DIR=/usr/local/backup_db/log
#数据备份文件夹
MY_BAK_DIR=/usr/local/backup_db/
#mysqladmin位置
MY_CMD=mysqladmin
#时间格式为2017-06-22-12:13:14
DATE=`date +%Y-%m-%d-%H:%M:%S`
#判断Mysql 日志文件夹是否存在,不存在创建一个
test -d ${MY_LOG_DIR} || mkdir ${MY_LOG_DIR}
#判断Mysql 备份文件夹是否存在,不存在创建一个
test -d ${MY_BAK_DIR} || mkdir ${MY_BAK_DIR}
##这个是用于产生新的mysql-bin.00000*文件
$MY_CMD -u$USER -p$PASSWD flush-logs
if [[ $? = 0 ]];then
#查询Mysql数据文件夹路径中有没有mysql-bin.数字的文件
MY_BINLOG=`find $MY_BIN_DIR -type f -cmin -1 -name "binlog.[0-9]*"`
echo -e "\033[36m 数据库增量备份成功 $DATE \033[0m"
echo -e "\033[35m 增量备份二进制文件为: $MY_BINLOG \033[0m"
echo -e "$DATE 数据库增量备份成功 二进制文件是:$MY_BINLOG " >> $MY_LOG_DIR/logs
else
echo -e "\033[31m 数据增量备份失败 $DATE \033[0m"
echo "$DATE 数据库增量备份失败 请尽快做出相应的处理" >> $MY_LOG_DIR/errerlogs
fi
# 增量备份生成的二进制文件只能从$BINARY复制到$TARGET_DIR目录下,不能mv 也不能删除原文件,不然下次增量备份生成的二进制文件就从mysql-bin.000001开始了。
COPY=`find $MY_BIN_DIR -type f -name "binlog.[0-9]*"`
yes | cp -rf $COPY $MY_BAK_DIR 1>/dev/null 2>&1 && echo -e "\033[31m 此次增量备份的二进制文件为$MY_BINLOG \033[0m"
2. 定时任务
crontab -e
* 1 * * * bash 脚本路径 每天1点备份
Crontab 表达式规则:
注:Linux中没有second,最小是miniute。
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
例:30 21 * * *
表示每晚21:30分执行
评论 (0)