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!
Ⅱ 好用的mysql備份工具
我以前備份都使用mysqlmp 導成文本文件便於存放 但是速度很慢的 最快的備份方法當然是直接把數據目錄一份了 但是一般來說 都要關閉 MySQL的服務才能做 不然在你的時候剛好還有人讀寫表那麻煩就大了 這次朋友介紹我使用mysqlhot 就相當於上面 不過他可以熱備份 他備份非常快 我測試一個 G的mysql他備份的時間在 分鍾內完成
下面是它的介紹
mysqlhot是一個Perl腳本搭粗孝 最知稿初由Tim Bunce編寫並提供 它使用LOCK TABLES FLUSH TABLES和cp或scp來快速備份資料庫 它是備份資料庫或單個表的最快的途徑 但它只能運行在資料庫目錄所在的機器上 mysqlhot只用於備份MyISAM 它運行在Unix和NetWare中
使用方法見下面的腳本 加入crotab中吧
#!/bin/sh # Name:mysqlbackup sh # PS:MySQL DataBase Backup Use mysqlhot script # Last Modify: # 定義變數 請根據具體情況修改 # 定義腳本所在目錄 scriptsDir=`pwd`
# 資料庫的數據目錄 dataDir=/var/lib/mysql
# 數據備份目錄 tmpBackupDir=/tmp/mysqlblackup backupDir=/backup/mysql
# 用來備份資料庫的用戶名和密碼 mysqlUser=root mysqlPWD= you password
# 如果臨時備份目錄存在 清空它 如果不存在則創建它 if [[ e $tmpBackupDir ]]; then rm rf $tmpBackupDir/* else mkdir $tmpBackupDir fi
# 如果備份目錄不存在則創建它 if [[ ! e $backupDir ]];then mkdir $backupDir fi
# 得到資料庫備份列表 在此可以過濾不想備份的資料庫 for databases in `find $dataDir type d | 凳敬 sed e s//var/lib/mysql/// | sed e s/test// `; do if [[ $databases == ]]; then continue else
# 備份資料庫 /usr/bin/mysqlhot user=$mysqlUser password=$mysqlPWD q $databases $tmpBackupDir dateTime=`date +%Y %m %d %H:%M:%S ` echo $dateTime Database:$databases backup success! >>MySQLBackup log fi done
# 壓縮備份文件 date=`date I` cd $tmpBackupDir tar czf $backupDir/mysql $date tar gz /
#End完成
加入到crontab中設置每周 運行 * * /backup/blackup sh
注意:恢復資料庫到備份時的狀態
mysqlhot 備份出來的是整個資料庫目錄 使用時可以直接拷貝到 mysqld 指定的 datadir (在這里是 /var/lib/mysql/)目錄下即可 同時要注意許可權的問題 如下例
shell> cp rf db_name /var/lib/mysql/
shell> chown R mysql:mysql /var/lib/mysql/ (將 db_name 目錄的屬主改成 mysqld 運行用戶)
本套備份策略只能恢復資料庫到最後一次備份時的狀態 要想在崩潰時丟失的數據盡量少應該更頻繁的進行備份 要想恢復數據到崩潰時的狀態請使用主從復制機制(replication)
小技巧:
不想寫密碼在shell中的話 可以在root的home目錄下建立一個f文件 以便讓mysqlhot從中讀取用戶名/密碼 [mysqlhot] user=root password=YourPassword 然後安全起見 chmod一下 chmod ~/f
附:mysqlhot常用參數
· allowold如果目標存在不放棄(加上一個_old後綴重新命名它) · checkpoint=db_name tbl_name在指定的db_name tbl_name插入檢查點條目 · debug啟用調試輸出 · dryrun n報告動作而不執行它們 · flushlog所有表鎖定後刷新日誌 · keepold完成後不刪除以前(重新命名的)的目標 · method=mand復制方法(cp或scp) · noindices備份中不包括全部索引文件 這樣使備份更小 更快 可以在以後用myisamc rq重新構建索引 · password=password p password當連接伺服器時使用的密碼 請注意該選項的密碼值是不可選的 不象其它MySQL程序 · port=port_num P port_num當連接本地伺服器時使用的TCP/IP埠號 · quiet q除了出現錯誤時保持沉默 · regexp=expr復制所有資料庫名匹配給出的正則表達式的資料庫 · socket=path S path用於連接的Unix套接字文件 · suffix=str所復制的資料庫名的後綴 · tmpdir=path臨時目錄(代替/tmp) · user=user_name u user_name當連接伺服器時使用的MySQL用戶名
lishixin/Article/program/MySQL/201311/29401
Ⅲ 如何使用crontab每天自動備份Mysql資料庫
1、建立自動備份腳本
為了使資料庫備份和恢復的符合我們的實際要求(備份保留七天,每天凌晨備份一次),用一段符合要求的Shell腳本來實現整個備份過程的自動化。
[root@mysqltest ~]# vim mysql-backup.sh
#!/bin/bash
##作者:Barlow##
##最後修訂:2013-6-25##
#腳本作用:備份Mysql資料庫
#
#設定備份保留天數K
K=7
#
TODAY=`date '+%Y%m%d'`
KDAY=`date -d "$TODAY - $K day" '+%Y%m%d'`
BACKDIR=/var/mysqlbak/$TODAY
KDAYDIR=/var/mysqlbak/$KDAY
mkdir -p $BACKDIR
#
# The Password of MySQL
ROOTPASS=******* ##將*替換為實際敏閉mysql資料庫的root密碼
#
# Get the Name of Database
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
#
# Backup with Database
for dbname in $DBLIST
do
mysqlhot $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhot
done
#
#刪除過期備份
if [ -d "$KDAYDIR" ];then
rm -rf $KDAYDIR
exit
fi
改變腳本許可權,root具有完全許可權,其他用戶沒有任何許可權:
[root@mysqltest ~]# chmod 700 mysql-backup.sh
運行一次腳本:
[root@mysqltest ~]# ./mysql-backup.sh
查看運行彎沒結果:
[root@mysqltest ~]# ll /var/mysqlbak/20130625/
mysql/ wordpress/
[root@mysqltest ~]# ll /var/mysqlbak/20130625/
總用量 8
drwxr-x---. 2 mysql mysql 4096 6月 25 14:26 mysql
drwxr-x---. 2 mysql mysql 4096 6月 25 14:26 wordpress
可以看到備份已經埋拿納成功完成。
2、創建自動任務每天運行
[root@mysqltest ~]# crontab -e
00 01 * * * /root/mysql-backup.sh
##每天凌晨1點運行一次
Ⅳ linux自動備份MySQL資料庫的實用方法
MySQL定期備份是一項重要的工作,但人工操作太繁瑣,也難避免有所疏漏,使用下面的方法即可讓系統定期備份數據。
◆1、創建備份文件夾
#cd /www
#makedir backup
◆2、編寫運行腳本
#vi autobackup
寫入以下內容:
filename=`date +%Y%m%d`
mysql_bin_dir/mysqlmp _opt dataname -u user -ppassword | gzip
/www/mysqlbackup/name$filename.gz
保存退枝褲出
說明:
(1)mysql_bin_dir:mysql的bin路徑;
(2)dataname:資料庫名;
(3)user:資料庫用戶名;
(4)password:陸搭歲用戶密碼;
(5)name:早睜自定義備份文件前綴標識。
如上例,將自動備份mysql資料庫,並以gzip壓縮方式存儲,文件名為name20080101.gz的形式。
◆3、為腳本添加執行許可權
#chmod +x autobackup
◆4、讓crontab來完成定期執行的任務
這一步中,Redhat的方法會不一樣,後面專門給出。
編輯crontab:
#vi /etc/crontab
在最後一行中加入:
01 5 * * * root /www/autobackup
每天5點運行腳本,也可以修改5為其他指定時間。
Redhat方法:
Redhat的crontab採用按時間調用4個目錄(/etc/cron.hourly:每小時;/etc/cron.daily:每天;/etc/cron.weekly:每周;/etc/cron.monthly:每月)中腳本出來運行的方式。
Redhat中只需要將剛才編輯的腳本復制到相應的目錄即可。
◆5、重啟crontab
#/etc/rc.d/init.d/crond restart
完成。
Ⅳ 怎樣在Windows系統下編寫批處理備份MYSQL資料庫的腳本呢
"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlmp.exe" -uroot -hlocalhost -p密碼 --all-databases>d:\%data%.sql 看你需要備份知空哪個資料庫穗孫 只需要修改all就可搭族瞎以了
Ⅵ windows server2008系統實現mysql自動備份資料庫腳本
備份命令本身沒有問題,估計是你的密碼不正確吧,你如果是判宏在dos窗口下運行的,請看看運行後,是則鉛否掘盯冊有錯誤的提示。
Ⅶ 請問mysql怎麼自動備份資料庫
資料庫的自動備份,可以減輕維護者的工作量也便於系統恢復,對於比較重要的資料庫,最好還是設置下自動備份。
工具/原料
navicat for mysql
mysql 5.5
方法/步驟
打開navicat客戶端,連上mysql後,雙擊左邊你想要備份的資料庫。點擊「計劃」,再點擊「新建批處理作業」。
Ⅷ SQL資料庫自動備份(mysql資料庫自動備份)
首先利用資料庫自帶的命令行工具將資料庫備份下來,例如對MySQL將資料庫備份到D:data.sql(具體查閱資料庫說明書)
mysqlmp<"D:data.sql"
然後將該文件以日期參量重名名。如果指定保留N天的數據可能有一定困難,不過既然要求7天,不妨以星期作為區分。
假設文件名具有格式「data_日期.sql」,則更名語句為(建議先創建後改名,對於很大的資料庫可能要備份很長時間並超過0點)
ren"data.sql""data_%date%.sql"
若系統時間格式為「2009-04-05星期日」,則產生文件「data_2009-04-05星期日.txt」。
獲取星期幾的語句:%date:~11,3%
其中11表示從第11個字元開始(從0開始計算),總共截取3個字元。由此可獲得字元串「星期日」。重名名前,刪除以data_開頭,包含「星期日」的文件
del"data_*%date:~11,3%*.sql"
這樣就把上星期的那個文件刪除了。
注意:如果系統日伍臘期格式與上面的不一致,數字需重新計算,特別是若日期中含有「/」、「:」等字元會導致創建文件失敗純悔,此時年月日星期均需手動提取,例如對「04/05/2009Sun」,應使用「%DATE:~6,4%%DATE:~0,2%%DATE:~3,2%%DATE:~11,3%」得到「20090405Sun」。查看日期格式可使用「echo%date%」。
另外,如果某項(時間格式、文件名、路徑等)包含空格則必須使用引號。
腳本源代碼
mysqlmp<"D:data.sql"
del"D:data_*%date:~11,3%*.sql"
ren"D:data.sql""data_%date%.sql"
編為一個bat文件,添加計劃任務,每天定時腔褲滑執行即可。
Ⅸ CentOS下備份MYSQL資料庫
一、編寫備份腳本
二、更改備份腳本許可權
chmod u+x /usr/local/tools/mysql_dy_backup.sh
三、設置定時執行腳本任務
crontab -e
30 22 * * * /usr/local/tools/mysql_dy_backup.sh
Ⅹ linux系統下mySQL資料庫 備份方法和腳本
方法一、適合所有格式的mysql資料庫,通過對資料庫導出導進寫個腳本定時執行:
1.導出整個資料庫 mysqlmp -u 用戶名 -p 資料庫名 > 導出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc > /存放路徑/wcnc.sql
2.導出一個表 mysqlmp -u 用戶名 -p 資料庫名 表名> 導出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc users> /存放路徑或培/wcnc_users.sql
3.導出一個資料庫結構 mysqlmp -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/存放路徑/wcnc_db.sql
定義:
-d 沒有數據
--add-drop-table 在每個create語句之前增加一個drop table
4.導悶謹入資料庫 常螞團基用source 命令 進入mysql資料庫控制台:
如mysql -u root -p mysql>use 資料庫
方法二、針對mysql數據表格式為MyISAM的
假如數據文件在/var/lib/mysql
那麼直接寫個腳本
cp -r /var/lib/mysql /備份到的文件夾路徑
隔機備份用rsync增量,或定時完整備份。