mysql 数据库备份shell脚本
今天大样做了个简单的数据库备份脚本
#!/bin/bash # Database info bakupmysql TANK 2009/11/04 DB_USER="user" #用户名 DB_PASS="password" #密码 DATE=`date '+%Y%m%d-%H%M'` #要备份的日期 BIN_DIR="/usr/bin" BCK_DIR="/usr/local/database/database_bak/$DATE" #备份路径 LogFile="/usr/local/database/data_backup.log" #日志路劲 if [ ! -d $BCK_DIR ]; then mkdir -p "$BCK_DIR" fi echo "=================================== $DATE backup"===============================>>$LogFile cd $BCK_DIR
#需要备份的库
DB_NAMES=("db1" "db2")
for dbName in ${DB_NAMES[@]}; do echo "begin backup $dbName...">>$LogFile #备份 ${BIN_DIR}/mysqldump --opt -h 192.168.1.104 -u${DB_USER} -p${DB_PASS} $dbName > $BCK_DIR/$dbName.sql if [[ $?==0 ]]; then echo "backup success!">>$LogFile else echo "backup Fail! Fail Fail Fail Fail ">>$LogFile fi echo "">>$LogFile done
当时遇到一个问题:mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using
password: YES) when trying to connect
解决方法:
grant all privileges on *.* to root@'localhost' identified by 'password';
我这里用的是ip地址,如果是本地可以用localhost。
为脚本添加可执行权限: chmod +x /usr/sbin/DataBackup
如果需要定时执行备份命令的,只需将下面这段代码放到crontab 文件(sudo vim /etc/crontab)中去就可以了:
01 1 * * * root /usr/sbin/MysqlDataBackup #它代表着将于每天1点执行DataBackup脚本