之前总需要手动备份hive元数据,感觉很麻烦,而且只备份一份考虑到数据也不安全,所以,想通过linux作业实现定时自动备份。由于使用hdfs所以就使用了备份到hdfs中。以下是备份脚本:#!/bin/bash
backupFileName=mysql-$1-`date "+%Y%m%d%H%M%S"`.sql;
date_day=`date "+%Y%m%d"`;
backupFile=/hdfs-backup/backup/mysql/$backupFileName;
log=`mysqldump -uroot -h 192.168.1.200 -p123456 $1 > $backupFile`;
remotePath=/backup/mysql/$date_day/;
hdfs dfs -test -e $remotePath
if [ $? -ne 0 ]; then
echo "Directory[$remotePath] not exists! will auto create it !";
mkdirLog=`/usr/local/hadoop-2.4.1/bin/hdfs dfs -mkdir $remotePath`;
fi
uploadLog=`/usr/local/hadoop-2.4.1/bin/hdfs dfs -put $backupFile $remotePath$backupFileName`;
echo $uploadLog;
echo $uploadLog > /hdfs-backup/uploadMysqlBackupFileLog.log;
编辑完成后执行:chmod +x /bin/backupMysql
最后编辑vi /etc/crontab
,添加:(hive为数据库名)* */1 * * * /bin/backupMysql hive
这样就完成了一个小时自动备份的功能。如果想要备份其他数据库,只需要在任务作业中添加。