閱讀842 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Linux服務器數據庫(MySQL、ORACLE)簡單的異地備份方案

Linux服務器MySQL數據庫簡單的異地備份方案

首先簡單說下:

1、執行腳本導出數據庫。

mysqldump -h127.0.0.1 -P3306 -uroot -ppassword dbname > /bak/db/backup.sql

2、使用scp將導出的數據庫文件傳輸到其他服務器上,一般進行異地備份,容災。

scp -P 195 /bak/db/backup.sql root@xxx.xxx.xxx.xxx:/bak

其中195為ssh端口號,如果是默認的22,可以省略 -P 22。

-----------------------------------------------------------------------------------------------------------------

現在需要編寫一個sh腳本,並設定到定時任務中

sh腳本內容如下:

#!/bin/sh

filename=`date '+%Y%m%d-%H%M%S'`
filename="${filename}bak.sql"

mysqldump -h127.0.0.1 -P3306 -uroot -ppassword dbname > /bak/db/${filename}

scp -P 195 /bak/db/${filename} root@xxx.xxx.xxx.xxx:/bak

echo "success"

sh文件不要忘記使用 chmod +x backup.sh 進行授予可執行權限。

假設我們將sh文件存放與opt目錄下,需要配置一下定時任務

編輯文件:vi /etc/crontab 設定每天淩晨4點半執行

30 04 * * * root /bin/sh /opt/db/backup-database.sh

可以使用命令:cat /var/log/cron  查看定時任務執行日誌

如上處理後,服務器就會自動進行數據庫備份並上傳到異地服務器上了,但是有個問題還需要解決,那就是讓scp命令不需要密碼才行。

具體配置方法參考我的另一篇博客:https://blog.csdn.net/catoop/article/details/8284803


下麵說一下oracle與mysql的不同之處

oracle備份一般情況需要使用 su - oracle 切換到oracle用戶下才能執行,下麵說一下直接在root用戶下如何進行操作。

特殊的地方就是,有的操作需要root用戶(比如無密碼scp操作,我這裏隻是舉例),有的操作需要oracle用戶(exp導出用戶)。

關鍵命令:su - oracle -c "/opt/expdatabase.sh"

意思是在root用戶下不需要切換到oracle用戶,而直接使用oracle用戶的角色執行 expdatabase.sh 文件。

我們需要在 root 下的 sh 文件中調用 expdatabase.sh 文件。

shell 腳本如下:

1、主 sh 腳本,root 執行

#!/bin/sh

filename=`date '+%Y%m%d-%H%M%S'`
filename="${filename}bak.dmp"

su - oracle -c "/u01/oradata/bak/expdatabase.sh ${filename}"

scp -P 195 /u01/oradata/bak/${filename} root@124.207.35.132:/bak/202.102.41.35

echo "Execution completed"

2、需要用oracle用戶的角色來執行的sh腳本 expdatabase.sh

#!/bin/sh

#進入oracle home
cd /u01/oracle
#加載oracle用戶環境變量
. ./.bash_profile

exp user/password@clmt file=/u01/oradata/bak/$1 full=y
 





最後更新:2017-04-02 00:06:55

  上一篇:go Android中Activity跳轉和切換動畫 完美方案
  下一篇:go Predicate<T> 委托