由于系統基本開發完成,為了保證數據安全,需要將數據庫自動備份,以下是實現自動備份的步驟:
一、在本地自動備份數據庫
1. 使用mysql自帶的服務mysqldump實現自動備份,首先使用vim命令編輯以下命令并且保存
#!/bin/bash
DB_USER='***'
DB_PASSWORD='*******'
DB_NAME='******'
BACKUP_DIR='/backup'
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}-$(date +%Y%m%d-%H%M%S).sql"
mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE
find $BACKUP_DIR -type f -mtime +30 -name '*.sql' -exec rm -f {} \;
其中,DB_USER是mysql的用戶名,DB_PASSWORD 是數據庫密碼,DB_NAME數據庫名稱,BACKUP_DIR是備份的目錄, BACKUP_FILE是備份的文件名,此處使用了數據名稱+當前的日期和時間來命名,最后一個命令是刪除30天以前的備份文件
注意:如果使用VIM編輯命令,在命令模式下輸入:wq回車即可退出保存,vim默認為普通命令模式,按ESC鍵可以切換模式,也可以在本地編輯好文件然后使用xftp等工具上傳到指定目錄
2. 使用下面的命令將備份的腳本文件設置為可執行
chmod +x /backup/backup_mysql.sh
3. 使用crontab設置腳本自動運行時間,類似windows中的自動任務,如果沒有安裝crontab需要先安裝才可以使用,我是使用
- yum install crontabs命令安裝的,不同的操作系統有所區別可以查詢一下,安裝完成后使用命令 crontab -e 編輯 自動任務執行命令,我的命令如下:
0 0,6,13,22 * * * /backup/backup_mysql.sh
表示每天0、6、13、22點0分執行備份命令,規則與CronExpression有點類似,命令格式如下:
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”。
中杠(-):可以用整數之間的中杠表示一個整數范圍,例如“2-6”表示“2,3,4,5,6”。
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。
執行腳本保存后,等待時間到了即會自動執行備份任務。
二、在其它服務器上自動備份數據庫,方法與在本地備份其實是差不多的,只是增加一個將備份文件復制到其它服務器的操作,我這里使用了openssh進行文件復制,openssh,主要用于遠程登錄服務器,類似于windows的Telnet服務,但是openssh,相對Telnet來說,OPENSSH更為安全
浙公網安備 33010602011771號