mysql備份與恢復 mysqldump使用

2021-07-22 15:08:42 字數 2438 閱讀 2548

對於任何乙個專案資料庫備份都很重要,雖然平時不容易出問題,但是一出問題如果沒有事先準備的話,基本就蒙逼了

這次主要說說一種比較基本簡單的備份策略,適合一些小專案,大了的專案也不用我們操心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 後面接資料庫...