1. 程式人生 > >linux下備份mysql資料庫,並ftp到遠端linux伺服器上

linux下備份mysql資料庫,並ftp到遠端linux伺服器上

一、檢查FTP服務是否安裝
1.架設mysql資料庫裝在172.22.1.77上,如何安裝mysql略,簡稱為77。
2.作為備份機IP為172.22.1.150上,簡稱為150;
3.為150按照ftp命令,首先XSHELL遠端連線到150上,確認ftp服務是否安裝。
service vsftpd status
這裡寫圖片描述
顯示vsftpd已停,說明服務停止,輸入:service vsftpd start可啟動服務。
如果顯示:-bash vsftpd :command not find,說明服務未安裝。
二、安裝FTP服務
1.安裝使用yum,如果linux上沒有安裝yum工具,前先安裝yum,此處不贅述。
2.輸入命令:yum install vsftpd ,如圖所示安裝。在is this ok [y/N] 後輸入y
3.安裝完畢後先建立一個ftp專用賬號,該使用者的登陸資料夾將作為以後遠端備份的sql檔案位置。
在此我們建立一個 /opt/user 這個資料夾作為上傳路徑。以及一個user使用者,密碼也為user
輸入命令:useradd –d /opt/user user
檢視確認一下目錄所有者許可權,user是否可以寫入:
在/opt目錄下輸入命令:ls –l
user目錄所有者為user,許可權為rwx
修改使用者名稱密碼
輸入:passwd user
三、測試FTP服務
1.開啟cmd命令,輸入ftp命令,
open 172.22.1.150
輸入賬號密碼user,成功登陸。表明ftp服務可用。
這裡寫圖片描述


四、編寫sh指令碼
在77上/home下新建mysql_data作為備份檔案存放路徑,並在該目錄下新建bak.sh,拷貝以下內容至該檔案中。
修改完成後,儲存並推出。修改檔案可執行許可權,
chmod +x bak.sh
測試該指令碼是否執行正常:
sh bak.sh
這裡請忽略語法和格式錯誤,該錯誤不影響備份。
這裡寫圖片描述
到150目錄/opt/user和77目錄/home/mysql_data下可以看到2015_12_31_15_14.sql的檔案,遠端備份成功。
這裡寫圖片描述
五、設定定時任務
shell到77上,輸入crontab -l檢視使用者的定時任務,
輸入crontab -e 編輯某個使用者的cron服務
輸入:
30 01 * * * /home/mysql_data/bak.sh
設定在凌晨1:30分執行bak指令碼;
最後輸入:/etc/init.d/crond restart
重啟crond,讓其生效。
六、還原mysql備份
xshell到150上,輸入:mysql -uroot -p123456登陸到mysql;
這裡寫圖片描述

輸入命令”show databases;”,回車,看看有些什麼資料庫;切換到要還原的資料庫,輸入”use funing_wms;”,回車;匯入資料,
輸入”source /opt/user/fn_wms_bak_2015_12_31_16_05.sql;”,回車,開始匯入,再次出現”mysql>”並且沒有提示錯誤即還原成功。

附sh指令碼:

#!/bin/sh
DUMP=/usr/bin/mysqldump    #mysqldump備份檔案執行路徑
OUT_DIR=/home/mysql_data   #備份存放路徑
LINUX_USER=root            #系統使用者名稱
DB_NAME=funing_wms               #要備份的資料庫名字
DB_USER=root #資料庫賬號 注意:非root使用者要用備份引數 --skip-lock-tables,否則可能會報錯 DB_PASS=123456 #資料庫密碼 DAYS=7 #DAYS=7代表刪除7天前的備份,即只保留最近7天的備份 cd $OUT_DIR #進入備份存放目錄 DATE=`date +%Y_%m_%d_%H_%M` #獲取當前系統時間 OUT_SQL="$DATE.sql" #備份資料庫的檔名 TAR_SQL="fn_wms_bak_$DATE.tar.gz" #最終儲存的資料庫備份檔名 $DUMP -u$DB_USER -p$DB_PASS $DB_NAME --default-character-set=utf8 --opt -Q -R --skip-lock-tables> $OUT_SQL #備份 chown $LINUX_USER:$LINUX_USER $OUT_DIR/$OUT_SQL #更改備份資料庫檔案的所有者 find $OUT_DIR -name "fn_wms_bak_*" -type f -mtime +$DAYS -exec rm {} \; #刪除7天前的備份檔案 ftp -n<<! open 172.22.1.150 type binary user user user prompt put $OUT_SQL fn_wms_bak_$OUT_SQL close bye !