伺服器下MySQL資料庫的定時備份與恢復

2021-09-12 02:57:11 字數 2029 閱讀 8061

在生產環境中資料庫可能會遭遇各種各樣的不測從而導致資料丟失,所以, 為了在資料丟失之後能夠恢復資料, 我們就需要定期的備份資料。

把mysql資料庫存放目錄/var/lib/mysql下面的test資料庫備份到/media/hsu/da18ebfa09c1b27d/test_db_backup裡面(這裡資料庫備份是放到了另外乙個硬碟下面),並且儲存為mysqldata_bak_year_month_day.tar.gz的壓縮檔案格式(2012_04_11是指備份執行時當天的日期),最後只保留最近14天的備份。

mysql中資料備份使用的命令是mysqldump命令, 該命令將資料庫中的資料備份成乙個文字檔案。表的結構和表中的資料將儲存在生成的文字檔案中。mysqldump命令的工作原理很簡單。它先查出需要備份的表的結構,再在文字檔案中生成乙個create語句。然後,將表中的所有記錄轉換成一條insert語句。然後通過這些語句,就能夠建立表並插入資料。

先根據個人需求建立儲存資料庫備份檔案的目錄:mkdir /media/hsu/da18ebfa09c1b27d/shaogang_db_backup

#!/bin/sh

dump=/usr/bin/mysqldump #mysqldump備份程式執行路徑

out_dir=/media/hsu/da18ebfa09c1b27d/shaogang_db_backup #備份檔案存放路徑

linux_user=root #系統使用者名稱

db_name=test #要備份的資料庫名字

db_user=root #資料庫賬號 注意:非root使用者要用備份引數 --skip-lock-tables,否則可能會報錯

db_pass=123456 #資料庫密碼

days=14 #days=14代表刪除14天前的備份,即只保留最近14天的備份

cd $out_dir #進入備份存放目錄

date=`date +%y_%m_%d` #獲取當前系統時間

out_sql="$date.sql" #備份資料庫的檔名

tar_sql="mysqldata_bak_$date.tar.gz" #最終儲存的資料庫備份檔案名

$dump -u$db_user -p$db_pass $db_name --default-character-set=utf8 --opt -q -r --skip-lock-tables> $out_sql #備份

tar -czf $tar_sql ./$out_sql #壓縮為.tar.gz格式

rm $out_sql #刪除.sql格式的備份檔案

chown $linux_user:$linux_user $out_dir/$tar_sql #更改備份資料庫檔案的所有者

find $out_dir -name "mysqldata_bak*" -type f -mtime +$days -exec rm {} \; #刪除14天前的備份檔案(注意:{} \;中間有空格)

儲存,退出!

3. 修改檔案屬性,使其可執行:chmod +x /opt/mysql_databak.sh

4. 修改/etc/crontab

sudo cp /etc/crontab #先備份以防不測

gedit /etc/crontab #編輯檔案,在下面新增

45 22 * * * root /opt/mysql_databak.sh #表示每天22點45分執行備份

5 . 重新啟動crond使設定生效

service cron stop #停止

service cron start #啟動

/etc/init.d/cron restart #重啟

6 . 資料恢復

每天你在/media/hsu/da18ebfa09c1b27d/shaogang_db_backup 目錄下面可以看到類似mysqldata_bak_2012_04_11.tar.gz 這樣的壓縮檔案,如果需要恢復檔案的時候,只需要把這個檔案解壓:tar -zxvf mysqldata_bak_2012_04_11.tar.gz,然後匯入到資料庫中即可。

伺服器定時自動備份MySQL資料庫

本文記錄了伺服器資料庫備份 壓縮 加密 傳送記錄郵件的一套流程。需求 伺服器的資料庫自動在增長,但是難保某個時候發生意外導致資料庫崩潰。所以需要做定時備份。使用要點 利用mysql中提供的mysqldump功能匯出資料庫,利用gzip進行壓縮,利用gpg進行對稱加密,最後使用php指令碼傳送記錄郵件...

定時備份遠端伺服器的mysql資料庫資料

遠端備份指令碼如下 bin sh zcdate date y m d mkdir opt mysql data backup zcdate mysqldump h 192.96.118.2 uroot p 123456 databases lpcarnet opt mysql data backup...

定時指令碼備份伺服器Mysql資料庫表

我們平時的資料庫為了避免誤操作或者在迭代更新的時候都會對資料庫進行備份,那麼這邊使用linux伺服器自帶的crontab定時指令碼 linux shell指令碼對我們部落格的資料庫進行備份。分享兩個 乙個是crontab教程 乙個是根據表示式推算執行時間。crontab 命令教程 crontab 執...