mysql備份資料庫腳本
mysql備份用自帶的備份工具mysqlmp
每天自動執行用cron工具,把mysql的備份命令放在.sh文件裡面
.sh文件放在/etc/cron.daily目錄,就會每天自動執行了。
B. mysql資料庫如何備份
MySQL資料庫備份與還原
備份和恢復數據
生成SQL腳本
在控制台使用mysqlmp命令可以用來生成指定資料庫的腳本文本,但要注意,腳本文本中只包含資料庫的內容,而不會存在創建資料庫的語句!所以在恢復數據時,還需要自已手動創建一個資料庫之後再去恢復數據。
mysqlmp –u用戶名 –p密碼 資料庫名>生成的腳本文件路徑
現在可以在C盤下找到mydb1.sql文件了!
注意,mysqlmp命令是在Windows控制台下執行,無需登錄mysql!!!
執行SQL腳本
執行SQL腳本需要登錄mysql,然後進入指定資料庫,才可以執行SQL腳本!!!
執行SQL腳本不只是用來恢復資料庫,也可以在平時編寫SQL腳本,然後使用執行SQL 腳本來操作資料庫!大家都知道,在黑屏下編寫SQL語句時,就算發現了錯誤,可能也不能修改了。所以我建議大家使用腳本文件來編寫SQL代碼,然後執行之!
SOURCE C:\mydb1.sql
注意,在執行腳本時需要先行核查當前資料庫中的表是否與腳本文件中的語句有沖突!例如在腳本文件中存在create table a的語句,而當前資料庫中已經存在了a表,那麼就會出錯!
還可以通過下面的方式來執行腳本文件:
mysql -uroot -p123 mydb1<c:\mydb1.sql
mysql –u用戶名 –p密碼 資料庫<要執行腳本文件路徑
這種方式無需登錄mysql!
C. 求一份自動備份mysql資料庫的腳本。
@rem---------------------------創建備份目錄-----------------------------------------
@echooff
setbackup_dir=D:/數據備份
setbackup_dir_run=D:/數據備份/run
setbackup_dir_land=D:/數據備份/land
setlog_file=%backup_dir%/backup_record.log
ifnotexist"%backup_dir_run%"md"%backup_dir_run%"
ifnotexist"%backup_dir_land%"md"%backup_dir_land%"
@rem---------------------------創建備份目錄結束-------------------------------------
@rem---------------------------取得當前時間-----------------------------------------
setyear=%date:~0,4%
::當前年
setmonth=%date:~5,2%
::當前月
setday=%date:~8,2%
::當前日
sethour=%time:~0,2%
::當前小時
setminute=%time:~3,2%
::當前分鍾
setmydate=%year%%month%%day%
setmytime=%hour%%minute%
@rem---------------------------取得當前時間結束-------------------------------------
@rem---------------------------設置標簽-------------------------------------
settag_long=echo-------------------------------------------------->>%log_file%
settag_short=echo...>>%log_file%
@rem---------------------------設置結束-------------------------------------
@rem---------------------------備份資料庫-------------------------------------------
%tag_long%
echo-------------正在執行MySQL資料庫備份[%date%%time%]-------------->>%log_file%
%tag_long%
%tag_short%
%tag_short%
setcmd_mysql=D:/WEBROOT/mysql50/bin/mysqlmp-R-uroot-p111
echo導出d_land_run...>>%backup_dir%/backup_record.log
setsqlfile_d_land_run="%backup_dir_land_run%/d_run%mydate%%mytime%.sql"
ifexist%sqlfile_d_land_run%del%sqlfile_d_land_run%
%cmd_mysql%d_land_run>%sqlfile_d_land_run%
echo導出d_land_run結束...>>%log_file%
%tag_short%
%tag_short%echo導出d_run...>>%backup_dir%/backup_record.log
setsqlfile_d_run="%backup_dir_run%/d_run%mydate%%mytime%.sql"
ifexist%sqlfile_d_run%del%sqlfile_d_run%
%cmd_mysql%d_run>%sqlfile_d_run%
echo導出d_run結束...>>%log_file%
%tag_short%
%tag_short%echo導出d_run_shop...>>%log_file%
setsqlfile_d_run_shop="%backup_dir_run%/d_run_shop%mydate%%mytime%.sql"
ifexist%sqlfile_d_run_shop%del%sqlfile_d_run_shop%
%cmd_mysql%d_run_shop>%sqlfile_d_run_shop%
echo導出d_run_shop結束...>>%log_file%%tag_short%
%tag_short%echo導出bugs...>>%log_file%
setsqlfile_bugs="%backup_dir_land%/bugs%mydate%%mytime%.sql"
ifexist%sqlfile_bugs%del%sqlfile_bugs%
%cmd_mysql%bugs>%sqlfile_bugs%
echo導出bugs結束...>>%log_file%%tag_short%
%tag_short%echo導出discuz...>>%log_file%
setsqlfile_discuz="%backup_dir_land%/discuz%mydate%%mytime%.sql"
ifexist%sqlfile_discuz%del%sqlfile_discuz%
%cmd_mysql%discuz>%sqlfile_discuz%
echo導出discuz結束...>>%log_file%
%tag_short%
%tag_short%
echo導出land...>>%log_file%
setsqlfile_land="%backup_dir_land%/land%mydate%%mytime%.sql"
ifexist%sqlfile_land%del%sqlfile_land%
%cmd_mysql%land>%sqlfile_land%
echo導出land結束...>>%log_file%
%tag_short%
%tag_short%
echo導出landwiki...>>%log_file%
setsqlfile_landwiki="%backup_dir_land%/landwiki%mydate%%mytime%.sql"
ifexist%sqlfile_landwiki%del%sqlfile_landwiki%
%cmd_mysql%landwiki>%sqlfile_landwiki%
echo導出landwiki結束...>>%log_file%
%tag_short%
%tag_short%
echo導出mysql...>>%log_file%
setsqlfile_mysql="%backup_dir_land%/mysql%mydate%%mytime%.sql"
ifexist%sqlfile_mysql%del%sqlfile_mysql%
%cmd_mysql%mysql>%sqlfile_mysql%
echo導出mysql結束...>>%log_file%
%tag_short%
%tag_short%
echo導出wikidb...>>%log_file%
setsqlfile_wikidb="%backup_dir_land%/wikidb%mydate%%mytime%.sql"
ifexist%sqlfile_wikidb%del%sqlfile_wikidb%
%cmd_mysql%wikidb>%sqlfile_wikidb%
echo導出wikidb結束...>>%log_file%
%tag_short%
%tag_short%
echo-------------備份完成![%date%%time%]-------------->>%log_file%
@rem---------------------------備份資料庫結束---------------------------------------
D. Mysql資料庫備份的幾種方法
1、復制date文件夾備份
============================
假想環境:
MySQL 安裝位置:C:\MySQL
論壇資料庫名稱為:bbs
資料庫備份目的地:C:\db_bak\
============================
新建db_bak.bat,寫入以下代碼
*******************************Code Start*****************************
net stop mysql
x c:\mysql\data\bbs\*.* c:\db_bak\bbs\%date:~0,10%\ /S /I
net start mysql
*******************************Code End *****************************
然後使用Windows的「計劃任務」定時執行該批處理腳本即可。(例如:每天凌晨3點執行back_db.bat)
解
釋:備份和恢復的操作都比較簡單,完整性比較高,控制備份周期比較靈活,例如,用%date:~0,10%。此方法適合有獨立主機但對mysql沒有管理
經驗的用戶。缺點是佔用空間比較多,備份期間mysql會短時間斷開(例如:針對30M左右的資料庫耗時5s左右),針對%date:~0,10%的用法
參考 。
2、mysqlmp備份成sql文件
==============
假想環境:
MySQL 安裝位置:C:\MySQL
論壇資料庫名稱為:bbs
MySQL root 密碼:123456
資料庫備份目的地:D:\db_backup\
腳本:
rem *******************************Code Start*****************************
@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
C:\MySQL\bin\mysqlmp --opt -u root --password=123456 bbs > D:\db_backup\bbs_%Ymd%.sql
@echo on
rem *******************************Code End*****************************
將以上代碼保存為backup_db.bat
然後使用Windows的「計劃任務」定時執行該腳本即可。(例如:每天凌晨5點執行back_db.bat)
說明:此方法可以不用關閉資料庫,並且可以按每一天的時間來名稱備份文件。
通過%date:~5,2%來組合得出當前日期,組合的效果為yyyymmdd,date命令得到的日期格式默認為yyyy-mm-dd(如果不是此格式可以通過pause命令來暫停命令行窗口看通過%date:~,20%得到的當前計算機日期格式),所以通過%date:~5,2%即可得到日期中的第五個字元開始的兩個字元,例如今天為2009-02-05,通過%date:~5,2%則可以得到02。(日期的字元串的下標是從0開始的)
3、利用WinRAR對MySQL資料庫進行定時備份。
對於MySQL的備份,最好的方法就是直接備份MySQL資料庫的Data目錄。下面提供了一個利用WinRAR來對Data目錄進行定時備份的方法。
首先當然要把WinRAR安裝到計算機上。
將下面的命令寫入到一個文本文件里
*******************************Code Start*****************************
net stop mysql
c:\progra~1\winrar\winrar a -ag -k -r -s d:\mysql.rar d:\mysql\data
net start mysql
*******************************Code End*****************************
保存,然後將文本文件的擴展名修改成CMD。進入控制面版,打開計劃任務,雙擊「添加計劃任務」。在計劃任務向導中找到剛才的CMD文件,接著為這個任務指定一個運行時間和運行時使用的賬號密碼就可以了。
這種方法缺點是佔用時間比較多,備份期間壓縮需要時間,mysql斷開比第一種方法更多的時間,但是對於文件命名很好。
E. linux自動備份mysql資料庫腳本
腳本最好寫出來。否則怎麼知道。
通過經驗來看。你是用mysqlhot還是mysqlmp來備份的?
如果沒有安裝相應的工具,比如mysqlhot就要手動安裝。。。
或者執行進驗證的信息不對。都可能造成你說的現象,
你要單獨運行一下腳本中導出mysql資料庫的部分。
F. linux系統下mySQL資料庫 備份方法和腳本
資料庫備份
1.創建個備份存儲目錄
mkdir
/root/backup/
2.以下內容寫到dbbackup.sh
#!/bin/bash
cd
/root/backup/
mysqlmp
-uroot
-pmima123
datatest
>/root/backup/datatest`date
+%Y-%m-%d`.sql
mysqlmp
-uroot
-pmima123
datatest1
>/root/backup/datatest1`date
+%Y-%m-%d`.sql
chmod
+x
dbbackup.sh
G. Linux 怎麼shell腳本定時備份mysql資料庫
每天定時備份mysql資料庫任務,刪除指定天數前的數據,保留指定天的數據;
需求:
1,每天4點備份mysql數據;
2,為節省空間,刪除超過3個月的所有備份數據;
3,刪除超過7天的備份數據,保留3個月里的 10號 20號 30號的備份數據;
#創建shell文件
vim backup_mysql.sh
mysqlmp -uroot -p123456 --all-databases > /data/dbdata/mysqlbak/`date +%Y%m%d`.sql
find /data/dbdata/mysqlbak/ -mtime +7 -name '*[1-9].sql' -exec rm -rf {} \;
find /data/dbdata/mysqlbak/ -mtime +92 -name '*.sql' -exec rm -rf {} \;
#創建定時任務
crontab –e
0 4 * * * /data/dbdata/backup_mysql.sh
H. Mysql 資料庫怎麼備份成指定名稱的資料庫腳本文件
那個,備份完了要用記事本將文件打開。將DB1的名稱改變成DB2,然後再恢復即可。建議使用NotePad++等軟體編輯。