mysqldump VS mysqlhotcopy及指令碼例項
阿新 • • 發佈:2019-01-02
1.mysqlhotcopy
- 優點- 速度快
- 缺點
- 只支援MyISAM引擎
- 需要安裝perl語言及配置支援環境,因為hotcopy由perl寫成
- 選項引數較少,功能不夠強大,比如不提供--where選項,無法選取某部分資料備份
- 只能執行在資料庫目錄所在的機器上
2.mysqldump
- 優點- 支援MyISAM和innodb引擎
- 只要裝了mysql就可以用,無需別的操作,不存在平臺相容問題
- 引數較多,功能強大,可以備份整個資料庫,也可以備份單個表,還可以備份單個表的部分資料
- 可生成多種檔案,還可以用於從一個MySQL伺服器向另一個伺服器複製資料
- 缺點
- 速度沒有那麼快
3.綜述
如果你只是想臨時複製一張表,或者一個數據庫,且資料庫引擎都是MyISAM,使用速度較快的mysqlhotcopy比較方便;但是如果你需求比較特別,想備份一張表的部分資料,需要使用mysqldump4.樣例指令碼
#!/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"