程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> MySQL,Oracle數據庫自動備份

MySQL,Oracle數據庫自動備份

編輯:Oracle數據庫基礎

1,關於Oracle,由於我需要備份的Oracle數據庫較小,所以采用exp方式,腳本如下

#環境變量

exportORACLE_BASE=/home/Oracle

exportORACLE_HOME=$Oracle_BASE/product/10.2.0/db

exportORA_CRS_HOME=$Oracle_BASE/product/10.2.0/crs

exportPATH=$PATH:$Oracle_HOME/bin:$ORA_CRS_HOME/bin

exportOracle_SID=test1

exportLD_LIBRARY_PATH=$Oracle_HOME/lib32

exportLD_LIBRARY_PATH_64=$Oracle_HOME/lib

exportCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$Oracle_HOME/rdbms/jlib

 #進行備份

exp test/test@test1 file=/data/bakup/test_15day.dmp direct=y

#由於exp未主動覆蓋備份文件,這裡就采用mv重命名

mv-f test_15day.dmp test.dmp

#將備份進行壓縮存檔

gzip-c/data/bakup/test.dmp >/data/bakup/test_`date +%y%m%d%H%M`.gz

若是Oracle備份,在遠端主機,可以用scp拖回本地,這裡采用expect工具自動登錄

#!/usr/bin/expect -f#定義密碼

set passWord Oracle

#下載過程

spawn scp [email protected]:/data/backup/test.dmp /data/Oracle_backup_test/

set timeout 200

expect

set timeout 200

send "$passWord\r"

set timeout 200

send "exit\r"

expect eof

2,關於MySQL,這裡采用MySQLdump工具進行導出,命令較為簡單

#命令中包含地址,用戶名密碼,數據庫名稱,其中數據庫名稱可以為多個

mysqldump -h 10.0.0.9 -ubackup-p123456test>/data/MySQL_backup/test.sql

#這裡通過拷貝進行歸檔

cp/data/mysql_backup/test.sql /data/MySQL_backup/backup-`date +%y%m%d%H%M`.sql

3,備份的壓縮歸檔,通過壓縮可以減少存儲空間的占用

#壓縮命令,這裡加上參數p,是為了保留原始文件信息,便於恢復

tar-zcvpf/data/NAME.tgz file1 file2

#file1,file2可以為多個,中間用空格隔開,可以是目錄,可以是文件

4,將備份上傳到FTP服務器

#這是一個將數據庫備份壓縮歸檔並上傳FTP服務器的sh腳本

 #!/bin/sh
#定義日期,最小到天,並對數據庫進行壓縮打包
DATE=`date +%Y%m%d`
tar -zcvpf /data/FTP/db_$DATE.tgz /data/MySQL/test.sql /data/other/ /data/Oracle/ 
#定義FTP服務器地址,用戶,密碼信息
host="10.0.0.21"
id="admin"
pwd="666666"
 
#定義本地文件路徑
basedir="/data/FTP"
 
#上傳過程
FTP -n "$host" <<EOC
user $id $pwd
binary
prompt
lcd $basedir
cd backup
mput db_$DATE.tgz
bye
‍EOC

5,添加為系統任務自動執行
采用crontab方法‍

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#表示每晚的21:30重啟。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#表示每月1、10、22日的4 : 45重啟。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
#表示每周六、周日的1 : 10重啟。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
#表示在每天18 : 00至23 : 00之間每隔30分鐘重啟。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
#表示每星期六的11 : 00 pm重啟。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
#每一小時重啟

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
#晚上11點到早上7點之間,每隔一小時重啟

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
#每月的4號與每周一到周三的11點重啟

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#一月一號的4點重啟

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved