linux服务器 *** 作系统,怎么实现定时备份数据库?

linux服务器 *** 作系统,怎么实现定时备份数据库?,第1张

linux系统下使用脚本定时备份数据库,代码如下:

#!/bin/bash  

#Setting  

#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式  

#默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第

#18行,则默认以tag的方式备份

#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz  

DBName=mysql

DBUser=root

DBPasswd=123456

BackupPath=/home/wang/www/backup/mysql/mysqlbackup

LogFile=/home/wang/www/backup/mysql/db.log

DBPath=/var/lib/mysql/

#BackupMethod=mysqldump

#BackupMethod=mysqlhotcopy

#BackupMethod=tar

#Setting End

NewFile="$BackupPath"db$(date +%y%m%d).tgz  

DumpFile="$BackupPath"db$(date +%y%m%d)  

OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz  

echo "-------------------------------------------" >> $LogFile  

echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile  

echo "--------------------------" >> $LogFile  

#Delete Old File

if [ -f $OldFile ]  

then  

   rm -f $OldFile >> $LogFile 2>&1  

   echo "[$OldFile]Delete Old File Success!" >> $LogFile  

else  

   echo "[$OldFile]No Old Backup File!" >> $LogFile  

fi  

if [ -f $NewFile ]  

then  

   echo "[$NewFile]The Backup File is exists,Can’t Backup!" >> $LogFile  

else  

   case $BackupMethod in  

   mysqldump*)

      if [ -z $DBPasswd ]

      then  

         mysqldump -u $DBUser --opt $DBName > $DumpFile  

      else  

         mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile  

      fi  

      tar czvf $NewFile $DumpFile >> $LogFile 2>&1  

      echo "[$NewFile]Backup Success!" >> $LogFile  

      rm -rf $DumpFile  

        

   mysqlhotcopy*)  

      rm -rf $DumpFile  

      mkdir $DumpFile  

      if [ -z $DBPasswd ]  

      then  

         mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1  

      else  

         mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1  

      fi  

      tar czvf $NewFile $DumpFile >> $LogFile 2>&1  

      echo "[$NewFile]Backup Success!" >> $LogFile  

      rm -rf $DumpFile  

        

   *)  

      /etc/init.d/mysqld stop >/dev/null 2>&1  

      tar czvf $NewFile $DBPath >> $LogFile 2>&1  

      /etc/init.d/mysqld start >/dev/null 2>&1  

      echo "[$NewFile]Backup Success!" >> $LogFile  

        

   esac

fi

echo "-------------------------------------------"

echo

#lftp -f lftp.sh 如果有FTP可同时上传ftp中。

再利用crontab命令生成/var/spool/cron/root 文件:

#crontab –e  

//打开一个编辑窗口,第一行会有内容格式的提示,在此输入命令

//m h  dom mon dow   command 

//具体意义表示:分钟 小时 日期 月份 星期  命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command)

//如: 10 02 * * * /home/backup/autobackupmysql.sh  (表示零晨二点十分执行备份脚本)

一、使用tar命令进行备份:

tar命令本来的作用是能够把很多文件放到一个小文件中进行归档,但是同时又能够对文件进行压缩。所以,一般情况下都采用tar进行文件整理和压缩。

/* 把/root整个目录进行压缩备份 */

# tar cvzf /tmp/root_backup_1215.tar.gz /root

那么就能够把 /tmp/root_backup_1215.tar.gz进行存储,比如保存到磁带机上等。

说明: 压缩的tar档案通常的扩展名是 tar.gz、tgz、或者tar.bz2。前两个扩展名一般是使用gzip命令进行压缩的tar档案,后一个扩展名是

基于bzip2的压缩,因为压缩算法的原因,后一个压缩更强。

同时,也很容易把已经打包压缩的文件进行恢复:

/* 从备份文件中进行还原 */

# tar tkvzf root_backup_1215.tar.gz

二、使用cpio备份存档:

cpio (copy in/out) 命令可以建立存档,跟tar不同之处在于,能够处理标准的输入输出。顾名思义,就是复制,输入,输出的意思。

如果要备份root的文件,使用下列命令:

# find /root | cpio -o >/tmp/root_backup_1215.cpio

cpio能够使用通配符将一组文件设置成标准输入。比如,下面见所有的.tif文件建立档案:

# find *.tif | cpio -o >/tmp/back.cpio

记住,find命令很灵活,下列命令把系统中所有的.tif文件进行归档:

# find / -name '*.tif' | cpio -o >/tmp/back_tif.cpio

同时,也很容易从cpio档案中恢复文件。下列命令恢复back_tif.cpio中的文件:

# cpio -i <back_tif.cpio

和tar命令一样,cpio命令恢复从目录保存的文件时,取决于是相对路经还是绝对路经。

cpio命令还有一个优点是可以直接将文件发送给外部源。

例如,下列命令恢复/root主目录中的文件,并把文件发送到SCSI磁带机:

# find /root | cpio -o ->/dev/st0

# cpio -i </dev/st0


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8337225.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存