使用shell腳本進行數據庫的定時備份
1.首先確定需要備份的數據庫
1>進入數據庫 輸入指令 mysql -uroot -p密碼
2>查看mysql中有哪些數據庫
輸入指令 show databases;
3>我們這次選擇dysmysql數據庫進行備份
4>查看數據庫中的數據
首先使用數據庫 use dysmysql;
然后查詢這個數據庫下的所有表 show tables;
5>准備操作結束
2.編寫shell腳本
1>在usr/sbin目錄下創建mysql_db_backup.sh 文件,使用vim編輯器打開
2>寫入代碼
#!/bin/bash # 1.備份目錄 BACKUP=/data/backup/db # 當前時間 DATETIME=$(date +%Y-%m-%d_%H%M%S) echo $DATETIME # 數據庫的地址 HOST=localhost # 數據庫的用戶名 DB_USER=root #數據庫的密碼 DB_PW=root #備份的數據庫名 DATABASE=dysmysql #創建備份目錄 如果不存在就創建 [ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}" # 備份數據庫 mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz # 將文件處理成 tar.gz cd ${BACKUP} tar -zcvf $DATETIME.tar.gz ${DATETIME} # 刪除對應的備份目錄 rm -rf ${BACKUP}/${DATETIME} # 刪除十天前的備份文件 find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "備份數據庫${DATABASE} 成功"
3>按esc鍵打出英文冒號,輸入wq保存並退出
4>按esc鍵然后輸入英文冒號繼續輸入wq,保存並退出。
5>執行該腳本 sh mysql_db_backup.sh
6>編寫定時指令
輸入指令crontab -e
編寫代碼
30 2 * * * /usr/sbin/mysql_db_backup.sh
此條代碼意思為每天兩點半執行該腳本 進行備份
7>查看指令 crontab -l
3.查看備份內容是否正確
1>切換到壓縮包目錄下
2>解壓壓縮包 gunzip 2021-08-21_221458.sql.gz
3>發現數據已經正常備份
USE `dysmysql`; -- -- Table structure for table `myorder` -- DROP TABLE IF EXISTS `myorder`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `myorder` ( `id` int DEFAULT NULL, `name` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `myorder` -- LOCK TABLES `myorder` WRITE; /*!40000 ALTER TABLE `myorder` DISABLE KEYS */; INSERT INTO `myorder` VALUES (100,'dog'); /*!40000 ALTER TABLE `myorder` ENABLE KEYS */; UNLOCK TABLES;