posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          隨筆分類

          隨筆檔案(1)

          收藏夾(18)

          搜索

          •  

          最新評論

          如何才能實現MySQL的自動備份

          Posted on 2007-05-11 16:54 semovy 閱讀(401) 評論(0)  編輯  收藏 所屬分類: My SQL數據庫方面
          MySQL自動備份是非常關鍵的,特別是對于DBA來說。這里主要用代碼來說明這個問題,希望對各位有所幫助。可以將這個腳本放進crontab,每天凌晨執行一次,自動備份。

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

          代碼:

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

          #Setting
          #設置數據庫名,數據庫登錄名,密碼,備份路徑,日志路徑,數據文件位置,以及備份方式
          #默認情況下備份方式是tar,還可以是mysqldump,mysqldotcopy
          #默認情況下,用root(空)登錄mysql數據庫,備份至/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
          主站蜘蛛池模板: 都兰县| 呼图壁县| 定日县| 丹寨县| 新源县| 林芝县| 江西省| 千阳县| 东乌| 海安县| 稻城县| 屏山县| 习水县| 沽源县| 栾城县| 克什克腾旗| 商河县| 荣昌县| 莆田市| 河源市| 西平县| 永泰县| 朝阳市| 仲巴县| 南城县| 页游| 赤城县| 兴山县| 白银市| 腾冲县| 闸北区| 宾阳县| 南开区| 平乐县| 哈巴河县| 集安市| 绥芬河市| 阳新县| 淮阳县| 鱼台县| 泗阳县|