MySql定时备份数据库

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

原文地址:https://www.cnblogs.com/linlf03/p/13093183.html