1. 程式人生 > >linux定時備份mysql資料到windows

linux定時備份mysql資料到windows

1.在linux伺服器上安裝ftp服務端軟體
 
Shell程式碼  
wget http://mirror.centos.org/centos-6/6.3/os/x86_64/Packages/vsftpd-2.2.2-11.el6.x86_64.rpm  
rpm -ivh vsftpd-2.2.2-11.el6.x86_64.rpm  
2.安裝成功後修改/etc/vsftpd/vsftpd.conf,這裡主要設定拒絕匿名登入和鎖定使用者到自家目錄
 
Xml程式碼  
#拒絕匿名登入  
anonymous_enable=NO  
#鎖定使用者到自家目錄  
chroot_local_user=YES  
ps:更多ftp設定參考http://zserver.blog.51cto.com/370152/157203/  
3.service vsftpd restart 重啟ftp服務.
 
4.設定iptables,這裡ftp採用的是Port模式,只需要開啟監聽埠21和資料埠20
 
Xml程式碼  
編輯/etc/sysconfig/iptables,新增如下規則  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT  
5.重啟重新整理防火牆規則,service iptables restart
 
6.在linux系統為ftp新增一個使用者,並將使用者家目錄設定為ftp預設目錄 通過-d引數設定,最後設定密碼。
 
Shell程式碼 
useradd  ftp1 -d /var/ftp/pub -s /sbin/nologin  
passwd ftp1  
    到這一步,linux段的ftp服務就算安裝完成了。
 
7.編寫shell指令碼/home/scripts/dumpdata.sh備份mysql資料到ftp目錄/var/ftp/pub

Shell程式碼 
mysqldump --no-defaults --default-character-set=utf8 --single-transaction -uroot -p123456 dbname> /var/ftp/pub/dbname`date +%y%m%d`.sql  
 cd /var/ftp/pub  
 tar -jcf richart`date +%y%m%d`.tar.bz2 ./richart`date +%y%m%d`.sql  
 if [ $? -eq 0 ]  
 then  
        rm -rf /var/ftp/pub/richart`date +%y%m%d`.sql#打包壓縮成功後,刪除原檔案,節約空間  
 fi  
find /var/ftp/pub/ -mtime +90 -name *.tar.bz2 -exec rm -f {} \;#刪除90天前的備份檔案  
ps:編寫完了記得給指令碼加執行許可權  

8.將指令碼加入到crond計劃,crontab -e,加入下面程式碼
Shell程式碼 
02 3 * * * /home/scripts/dumpdata.sh  
    到這裡伺服器段的工作就算完成了,接下來就是要在windows(xp)端獲取資料
 
9.編寫批處理檔案wget.bat,通過ftp獲取資料,並刪除90天前的備份檔案
Bat程式碼  
G:  
cd G:/sqldata  
set fileName=dbname%date:~2,2%%date:~5,2%%date:~8,2%.tar.bz2  
(echo open 192.168.1.100  
echo ftp1  
echo ftp1pass  
echo prompt  
echo binary  
echo get %fileName%  
echo bye) > ftp_getData.src  
ftp -s:ftp_getData.src  
forfiles /p "G:\sqldata"  /m *.tar.bz2 /d -90 /c "cmd /c del @path"  
echo %date%sql資料備份成功!時間:%time% >> ftp.log  
ps:有的xp系統中最初可能沒有forfiles這個命令,通過網上下載後放在C:\WINDOWS\system32裡面  

10.最後一步,將wget.bat批處理命令加入到windows計劃任務
Dos程式碼  
執行,cmd,開啟dos視窗  
net stop schedule  
net start schedule  
at 03:46 /every:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday G:\sqldata\wget.bat  
at 命令檢視計劃任務列表  
ps:有的windows系統task scheduler服務是禁止的,通過控制面板-->管理工具-->服務,找到該服務,啟用就可以了。