每天定时备份MYSQL 下的cici数据库
1 备份命令内容
mysqldump -u root -proot -F --default-character-set=latin1 cici> /var/lib/mysql/doc/cici_2012_11_08.sql
2 执行脚本
!bin/bash
DB_USER=root
DB_PASSWORD=root
DB_NAME=cici
DATE=`date +%Y-%m-%d_-%H:%M:%S`
SQL_FILE="/var/lib/mysql/doc/cici-$DATE.sql"
LOG_FILE="/var/lib/mysql/log/cici_backup.log"
RUN_CMD="mysqldump -u$DB_USER -p$DB_PASSWORD -F --default-character-set=latin1 $DB_NAME";
$RUN_CMD >$SQL_FILE
3 添加到定时任务中
例如周一到周五的 0点0分 定时执行备份任务。并且将备份日志写入文件。
#crontab -e
0 0 * * 1-5 sh /var/lib/mysql/doc/backupcici.sh >> /var/lib/mysql/log/backupcici_`date +\%Y-\%m-\%d_-\%H:\%M:\%S`.sql
问题总结 执行shell脚本遇到的问题
问题1 date命令不能执行
shell脚本内容如下
!bin/bash DATE="date +%Y-%m-%d_-%H:%M:%S" echo 'cici DB back up' $DATE
执行shell脚本 不能输出具体时间
[root@localhost doc]# . backupcici.sh cici DB back up date +%Y-%m-%d_-%H:%M:%S
解决
命令替换是要用后引号(`)而不是单引号把命令括起来。 改为
DATE=`date +%Y-%m-%d_-%H:%M:%S` echo 'cici DB back up' $DATE
问题2 在shell 脚本中运行备份语句出现如下问题 mysqldump: Couldn't find table: ">"
shell 脚本片段
RUN_CMD="mysqldump -u$DB_USER -p$DB_PASSWORD -F --default-character-set=latin1 cici > /var/lib/mysql/doc/cici-$DATE.sql"; echo $RUN_CMD `$RUN_CMD` ;
解决 -- 将命令改为如下内容 去掉后引号
RUN_CMD="mysqldump -u$DB_USER -p$DB_PASSWORD -F --default-character-set=latin1 $DB_NAME"; $RUN_CMD >$SQL_FILE
==========================mysqldump命令详细说明==========================
http://www.sungyism.com/blog/post/138/
==================================================================
===========================shell 脚本参考料===================================
http://os.chinaunix.net/a2006/1214/969/000000969140.shtml
=========================================================================