1. 程式人生 > >mysqldump VS mysqlhotcopy及指令碼例項

mysqldump VS mysqlhotcopy及指令碼例項

 1.mysqlhotcopy

- 優點
  - 速度快
- 缺點
  - 只支援MyISAM引擎
  - 需要安裝perl語言及配置支援環境,因為hotcopy由perl寫成
  - 選項引數較少,功能不夠強大,比如不提供--where選項,無法選取某部分資料備份
  - 只能執行在資料庫目錄所在的機器上

  

2.mysqldump

- 優點
  - 支援MyISAM和innodb引擎
  - 只要裝了mysql就可以用,無需別的操作,不存在平臺相容問題
  - 引數較多,功能強大,可以備份整個資料庫,也可以備份單個表,還可以備份單個表的部分資料
  - 可生成多種檔案,還可以用於從一個MySQL伺服器向另一個伺服器複製資料
- 缺點
  - 速度沒有那麼快


3.綜述

如果你只是想臨時複製一張表,或者一個數據庫,且資料庫引擎都是MyISAM,使用速度較快的mysqlhotcopy比較方便;但是如果你需求比較特別,想備份一張表的部分資料,需要使用mysqldump

4.樣例指令碼

    #!/bin/sh
    # sh script for mysqldump
    
    # 資料庫資訊
    mysqlRoot=test
    mysqlPWD=secret
    mysqlHost=xxx.xxx.x.xxx
    database=site_xxx
    
    # 備份目錄
    backupDir=./mysqlbackup
    
    # 如果備份目錄不存在,則建立
    if [ ! -e $backupDir ]; then
    echo "新建備份目錄./mysqlbackup"
    mkdir $backupDir
    fi
    
    # 輸入需要備份的時間段
    read -p "備份起始日期" startdate
    read -p "備份結束日期" enddate
    
    # 查詢當月記錄資料夾,有刪除,沒有建立
    dir=`date --date=$startdate +%Y%m`
    backupPath=$backupDir/$dir
    if [ -e $backupPath ]; then
    rm -rf $backupPath
    echo "刪除記錄目錄"
    fi
    
    mkdir -p $backupPath
    echo "新建./mysqlbackup/"$dir
    
    # 執行mysqldump命令
    for table in click custom close goodslog order pageview visit scroll visit_goal daily_click
    do
    mysqldump -u$mysqlRoot -h$mysqlHost -p$mysqlPWD $database $table --where="date between '$startdate' and '$enddate'" > $backupPath/$table.csv
    echo $table "backup"
    done
    echo "backup over"