1.首先建立备份数据库的shell 脚本如下: ``` #/bin/bash before=$(date -d "10 days ago" "+%Y-%m-%d") today=$(date "+%Y-%m-%d") sign="/home/shyn/sqlbak/db_all_" before_filename="${sign}${before}.sql" today_filename="${sign}${today}.sql" if [ -e $before_filename ] then echo $before_filename rm -rf "${before_filename}" fi mysqlpwd="数据库密码" #mysqlpath="/usr/bin/" mysqlpath="/usr/local/mysql/bin/" ${mysqlpath}mysqldump -uroot -p${mysqlpwd} --databases $(${mysqlpath}mysql -uroot -p${mysqlpwd} -e "SHOW DATABASES WHERE \`Database\` NOT IN ('mysql', 'sys', 'performance_schema', 'information_schema');" -sN) > ${today_filename} ``` 2.创建定时任务 ``` 10 1 * * * /home/shyn/sqlbak/sqlbak.sh >> /home/shyn/sqlbak/sqlbak.log 2>&1 ``` >脚本解释 这是一个用于定时执行任务的Cron表达式,具体含义如下: 1. 10 1 * * *: 这部分指定了任务执行的时间。在这里,10 1 * * * 表示每天的凌晨1点10分执行任务。 2. /home/shyn/sqlbak/sqlbak.sh: 这部分指定了要执行的脚本或命令。在这里,/home/shyn/sqlbak/sqlbak.sh 是一个脚本文件的路径,表示要执行的任务是运行这个脚本。 3. /home/shyn/sqlbak/sqlbak.log: 这部分将脚本的输出重定向到一个日志文件。>> 表示将输出追加到文件末尾,/home/shyn/sqlbak/sqlbak.log 是输出日志文件的路径。 4. 2>&1: 这部分将标准错误输出重定向到标准输出,也就是将错误信息写入到与正常输出相同的日志文件中。 5. 综合起来,这个Cron表达式表示在每天凌晨1点10分执行 /home/shyn/sqlbak/sqlbak.sh 脚本,并将输出(包括标准输出和标准错误输出)追加到 /home/shyn/sqlbak/sqlbak.log 日志文件中。