對於任何乙個專案資料庫備份都很重要,雖然平時不容易出問題,但是一出問題如果沒有事先準備的話,基本就蒙逼了
這次主要說說一種比較基本簡單的備份策略,適合一些小專案,大了的專案也不用我們操心db了
這裡使用的是mysql自帶的mysqldump工具,自帶的就是好!
備份和恢復的思路其實很簡單,就是把需要備份的資料匯出來,在出問題的時候在導回去。
操作很簡單,直接貼**:
db.backups.sh
#!/bin/bash
db_name="demo demo1"
db_user=root
db_pass=123456
bakdir=/var/backups/mysql
logdir=/var/log/mysql/backups
date=`date +"%y%m%d"`
for db in $db_name
do tables=`mysql -u$db_user -p$db_pass -e "show tables from $db" | sed '1d'`
sqldir=$bakdir/$date/$db
mkdir -p $sqldir
for table in $tables
domysqldump -u$db_user -p$db_pass -f --master-data=2 --single-transaction --events $db $table > $sqldir/$table.sql
done
cd $bakdir
tar zcvf $date.tar.gz $date > /dev/null
rm -rf $date > /dev/null
if [ ! -d $logdir/$data ];then
mkdir -p $logdir/$data
fiecho $date `date +"%h:%m:%s"` - database : $db , backups success! >> $logdir/$date.log
done
上面就是將配置的幾個db按照日期(每日)匯出到指定檔案。
上面mysqldump沒有新增-h預設連線本機mysql,也可以配上-h在其他機器上執行sh檔案,將備份與mysql服務分開。
db.recover.sh
#!/bin/bash
db_user=root
db_pass=123456
bakdir=/var/backups/mysql
logdir=/var/log/mysql/recover
function recover() '`
fi#backup table to /tmp before recover
mysqldump -u$db_user -p$db_pass $db $tables > /tmp/$db.sql
for table in $tables
doif [ ! -f $bakdir/$date/$db/$table.sql ];then
echo $table.sql is not found in $bakdir/$date/$db.
return 0
fimysql -u$db_user -p$db_pass $db < $bakdir/$date/$db/$table.sql
echo db : $db, table : $table recover success. >> $logdir/`date +"%y%m%d"`.log
done
rm -rf $bakdir/$date > /dev/null
}arg1=$1
date=$2
db=`echo $1 | awk -f '.' ''`
table=`echo $1 | awk -f '.' ''`
if [ -z $db ];then
echo need you input db name.
exit 0
fiif [ -z $table ];then
table=all
firecover $db $table $date
恢復db的邏輯就是這樣了,定義了一些規則:
./db.recover.sh db.table date,
db必填
table可以選填,留空表示恢復所有表, ps:應該不會有人把表名取為all吧?
date 是要選用哪天備份的資料來做恢復,留空則預設取當天備份的資料,格式yearmonthday
例子:./db.recover.sh demo.user 20160910 ,則表示取20160910那天備份的資料來恢復demo庫的user表。
mysql 備份與恢復 MySQL 備份與恢復
1 檢視資料庫的資料儲存在哪個目錄下 shiyanlou mysql uroot e show variables like datadir variable name value datadir var lib mysql 2 備份資料的方法 select into outfile 檔名 或者 s...
mysql 備份與恢復 Mysql 備份與恢復
資料檔案一致性處理 在完全備份的情況下,檔案不是時間點一致的,因為進行快照的時間點不一樣。如果嘗 試在未prepare資料的情況下還原資料庫,雖然操作上支援恢復,但是在啟動的時候仍會 進行資料recovery。執行帶 prepare 選項的 mariabackup 命令會使資料檔案進行統一,達到資料...
mysql備份恢復 mysql之備份與恢復
工作中,我們經常會遇到資料庫的備份與恢復場景 目錄1 mysql的備份與恢復 2 mysql的匯入與匯出 1 mysql的備份與恢復 mysql的備份命令是mysqldump,mysql之備份 mysqldump u user h host port p db table.file u 後面接資料庫...