posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          MySQL自動備份是非常關(guān)鍵的,特別是對于DBA來說。這里主要用代碼來說明這個問題,希望對各位有所幫助。可以將這個腳本放進(jìn)crontab,每天凌晨執(zhí)行一次,自動備份。

          這個腳本每天最多只執(zhí)行一次,而且只保留最近五天的備份在服務(wù)器上。

          代碼:

          #!/bin/bash
          #This is a ShellScript For Auto DB Backup
          #Powered by ASPbiz
          #2004-09

          #Setting
          #設(shè)置數(shù)據(jù)庫名,數(shù)據(jù)庫登錄名,密碼,備份路徑,日志路徑,數(shù)據(jù)文件位置,以及備份方式
          #默認(rèn)情況下備份方式是tar,還可以是mysqldump,mysqldotcopy
          #默認(rèn)情況下,用root(空)登錄mysql數(shù)據(jù)庫,備份至/root/dbxxxxx.tgz
          DBName=mysql
          DBUser=root
          DBPasswd=
          BackupPath=/root/
          LogFile=/root/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¥DBName >> ¥LogFile 2>&1
          /etc/init.d/mysqld start >/dev/null 2>&1
          echo "[¥NewFile]Backup Success!" >> ¥LogFile
          ;;
          esac
          fi

          echo "-------------------------------------------" >> ¥LogFile
          主站蜘蛛池模板: 安顺市| 平和县| 莱西市| 大英县| 定西市| 广安市| 凤阳县| 江陵县| 普兰县| 安吉县| 乃东县| 中江县| 金秀| 丰城市| 子长县| 思茅市| 龙江县| 闻喜县| 招远市| 南江县| 万安县| 修水县| 启东市| 土默特左旗| 嘉禾县| 新余市| 托克逊县| 丰镇市| 文水县| 简阳市| 克山县| 谢通门县| 华阴市| 鱼台县| 维西| 惠安县| 吉木萨尔县| 甘南县| 临邑县| 泰顺县| 甘孜县|