Linux 使用crontab完成mysql定时三中心备份

通过expect实现 

vi install.sh
#!/bin/bash
typeset DIR="$( cd "$( dirname "$0"  )" && pwd  )"

#标识
INDEX='DEMO'
#数据库用户名
DB_USER='root'
#数据库密码
DB_PASSWD='123456'

#服务器备份目录(提前创建)
DATA_PATH='/home/mysql/backup'

#是否开启远程备份 open:1  
SCP_BACK='1'
SCP_IP='10.1.1.10'
SCP_USER='root'
SCP_PWD='123456'

#是否开启异地备份 open:1  
REMOTE_BACK='1'
REMOTE_IP='10.1.1.10'
REMOTE_USER='root'
REMOTE_PWD='123456'
#目标服务器备份目录(提前创建)
SCP_PATH='/home/back/'

sed -i s/index_str/$INDEX/g ${DIR}/mysqldump.sh
sed -i s/db_user_str/$DB_USER/g ${DIR}/mysqldump.sh
sed -i s/db_pwd_str/$DB_PASSWD/g ${DIR}/mysqldump.sh
sed -i s#db_data_path_str#$DATA_PATH#g ${DIR}/mysqldump.sh


sed -i s/scp_back_str/$SCP_BACK/g ${DIR}/mysqldump.sh
sed -i s/scp_ip_str/$SCP_IP/g ${DIR}/mysqldump.sh
sed -i s/scp_user_str/$SCP_USER/g ${DIR}/mysqldump.sh
sed -i s#scp_pwd_str#$SCP_PWD#g ${DIR}/mysqldump.sh

sed -i s/remote_back_str/$REMOTE_BACK/g ${DIR}/mysqldump.sh
sed -i s/remote_ip_str/$REMOTE_IP/g ${DIR}/mysqldump.sh
sed -i s/remote_user_str/$REMOTE_USER/g ${DIR}/mysqldump.sh
sed -i s#remote_pwd_str#$REMOTE_PWD#g ${DIR}/mysqldump.sh
sed -i s#remote_path_str#$SCP_PATH#g ${DIR}/mysqldump.sh

echo "mysql配置完成"

sed -i s#dir_str#${DIR}#g ${DIR}/mysqlcron.cron
echo "cron配置完成"
crontab mysqlcron.cron
crontab -l

 

vi mysqldump.sh
#!/bin/bash

#标识
INDEX='index_str'
#数据库用户名
DB_USER='db_user_str'
#数据库密码
DB_PASSWD='db_pwd_str'
#备份时间
CURRENT_BACKUP_TIME=`date +%Y%m%d%H%M%S`
#数据备份路径
DATA_PATH='db_data_path_str'
#开启异地备份
SCP_BACK='scp_back_str'
SCP_PATH='/home/back/'
typeset DIR="$( cd "$( dirname "$0"  )" && pwd  )"

#正式备份数据库
echo "------------------------------------------------------------------" >> ${DIR}/back.log
echo "----------------------------START---------------------------------" >> ${DIR}/back.log
echo "------------------------$CURRENT_BACKUP_TIME----------------------------" >> ${DIR}/back.log

echo "开始本地备份" >> ${DIR}/back.log
source=`mysqldump  -u$DB_USER -p$DB_PASSWD -A > $DATA_PATH/$INDEX-$CURRENT_BACKUP_TIME.sql` >> ${DIR}/back.log;
#备份成功以下操作
if [ "$?" == 0 ];then
  echo "本地备份完成" >> ${DIR}/back.log
  cd $DATA_PATH
  echo "开始压缩备份" >> ${DIR}/back.log
  #为节约硬盘空间,将数据库压缩
  tar zcf $INDEX-$CURRENT_BACKUP_TIME.tar.gz $INDEX-$CURRENT_BACKUP_TIME.sql > /dev/null
  #删除原始文件,只留压缩后文件
  echo "开始清理备份" >> ${DIR}/back.log
  rm -f $DATA_PATH/$INDEX-$CURRENT_BACKUP_TIME.sql
  #删除三十天之前的备份
  find $DATA_PATH -name "${INDEX}-*.tar.gz" -type f -mtime +30 -exec rm -rf {} \; 
  #开始远程备份
  echo "开始同城备份$CURRENT_BACKUP_TIME" >> ${DIR}/back.log
  if [ "X${SCP_BACK}" == "X1" ];then
  /usr/bin/expect <<EOF >> ${DIR}/back.log
	set timeout -1
	spawn scp $DATA_PATH/$INDEX-$CURRENT_BACKUP_TIME.tar.gz scp_user_str@scp_ip_str:$SCP_PATH
	expect {
		"*yes/no"
		{
			send "yes\n";
			exp_continue
		}
		"*password:"
		{
			send "scp_pwd_str\n"
		}
	}
	expect eof
EOF
  fi
  echo "开始异地备份$CURRENT_BACKUP_TIME" >> ${DIR}/back.log
  if [ "X${REMOTE_BACK}" == "X1" ];then
  /usr/bin/expect <<EOF >> ${DIR}/back.log
	set timeout -1
	spawn scp $DATA_PATH/$INDEX-$CURRENT_BACKUP_TIME.tar.gz remote_user_str@remote_ip_str:$SCP_PATH
	expect {
		"*yes/no"
		{
			send "yes\n";
			exp_continue
		}
		"*password:"
		{
			send "remote_pwd_str\n"
		}
	}
	expect eof
EOF
  fi
fi
echo "-----------------------------END----------------------------------" >> ${DIR}/back.log
echo "------------------------------------------------------------------" >> ${DIR}/back.log
vi mysqlcron.cron
0 5 * * * /bin/sh dir_str/mysqldump.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值