windows的任務計劃定時執行該檔案。
檔案內容如下:
| 代碼如下 |
複製代碼 |
cd F:/MySQLBackup f: mysqldump -h ip -uusername -ppassword dbname>F:/MySQLBackup/PersonBackupMonday.sql |
username:資料庫使用者
password:資料庫密碼
dbname:資料庫名稱
恢複資料:可以把資料拷貝到資料庫的伺服器中
| 代碼如下 |
複製代碼 |
C:/Documents and Settings/Administrator>mysql -u username –p |
密碼:password
| 代碼如下 |
複製代碼 |
mysql> use dbname; mysql> source F:/MySQLBackup/PersonBackupMonday.sql |
linux的中實現異地資料備份
在ubuntu測試通過。完成任務是本地備份。可用於伺服器端。
| 代碼如下 |
複製代碼 |
#! /bin/bash echo "backupmysql V1.0" ###date stamp### datestamp=$(date +%Y-%m-%d) ###path ### startdir=/home/user/mysqlbackup ###bakfile prefix### fileprefix=sql echo "sqldump is starting.." ###bakup command#### mysqldump -uuser -ppassword -l databasename > $startdir/$fileprefix$datestamp.sql echo "########################################################################" echo "sqldump is done" ###tar file ### cd $startdir echo "the current directory is :" pwd tar zcvf $startdir/$fileprefix$datestamp.tgz $fileprefix$datestamp.sql ###del the sql file### rm -rf $startdir/$fileprefix$datestamp.sql echo "#######################################################################" echo "...... Done" |
如果遠程將備份取到異地,如下我寫的一個用戶端用例(測試環境redhat-as-5)。用sftp協議。
| 代碼如下 |
複製代碼 |
#! /bin/bash sftp root@www.domain.com << EOF cd /home/user/mysqlbackup lcd /home/mysqlbackup/ -get fileprefix$(date +%Y-%m-%d).tgz quit EOF |
注fileprefix$(date +%Y-%m-%d).tgz 與伺服器端備份的相對應,
路徑為、home/user/mysqlbackup
get命令前加一個"-"以防止其執行錯誤時sftp執行過程被終止.
註:假設資料庫伺服器名字為database,備份資料的伺服器的名字backup,我們需要在backup伺服器端運行指令碼來取得database伺服器端的備份檔案。
兩台伺服器採用sftp傳輸檔案
但是現實shell中sftp登入需要互動密碼,
為了在遠端伺服器採用非互動的sftp,我們可以選擇用密鑰的方法進行驗證登入許可權。從而代替密碼驗證方式。
首先需要我們在backup產生密鑰,並將其公開金鑰上傳到database伺服器。
因為shell指令碼中使用sftp時必須用到金鑰組(公開金鑰和私密金鑰),
可以使用如下命令
$ssh-keygen -d
然後分發公開金鑰
為了使用密鑰,必須將公開金鑰分發到欲登入的遠程backup伺服器上,
1.copy公開金鑰到欲登入的遠程伺服器的遠端使用者的家目錄下,例如:
cp id_dsa.pub到database:/home/user/.ssh/
若目錄/home/user/.ssh/不存在,需要我們手工建立。
公開金鑰檔案更名為authorized_keys
修改公開金鑰檔案的存取權限
chmod 644 authorized_keys