备份数据库: 将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