备份数据库: 将Mysql的数据库数据备份后,拷贝到其它机器上。
1、备份和拷贝数据库的shell。
backup-mysql.sh
#!/bin/sh #打印日志 function log(){ curTime=$(date +"%Y-%m-%d %H:%M:%S.%N") echo $curTime $1 } PATH=/usr/local/bin:/bin:/usr/bin #备份数据存放的文件夹 backupdir='/home/xx/data/backup_db' time=$(date +%Y%m%d_%H:%M:%S) log '备份数据库开始...' backfile="$backupdir/数据库名称_$time.sql.gz" mysqldump --opt -u数据库用户 -p数据库密码 数据库名称 | gzip > "$backfile" log '备份数据库结束。' log '拷贝文件开始...' sshpass -p 目标服务器用户密码 scp "$backfile" root@目标服务器IP:/home/yy/data/backup_db/ log '拷贝文件结束.'
这里使用sshpass带上目标服务器的密码
2、使用Cron定时任务执行shell
每天23小时59分执行备份脚本。时间可以根据自己需求设置。
59 23 * * * /home/xx/data/backup_db/backup-mysql.sh >> /home/xx/data/backup_db/backup-mysql.txt
执行过程中遇到的问题:
1、mysqldump命令没找到
用ln命令链接到/usr/bin下面
ln -fs /usr/local/mysql/bin/mysqldump /usr/bin
2、sshpass的安装
参考:sshpass的安装使用
我这里使用yum安装不上,
wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
tar -zxvf sshpass-1.06.tar.gz
cd sshpass-1.06
./configure
make
make install