MySQL定時(shí)備份到本地實(shí)現(xiàn)方式
最近項(xiàng)目需要定時(shí)備份數(shù)據(jù)庫到本地,避免數(shù)據(jù)丟失。
備份腳本
采用mysqldump進(jìn)行備份,備份腳本mysql-backup.sh內(nèi)容如下
#!/bin/bash
#設(shè)置備份文件時(shí)間格式
time=`date +%Y%m%d`
#設(shè)置刪除7天前的備份文件
days=7
# 存?zhèn)浞菖R時(shí)文件目錄
dir="/data/backup/data/mysql/"
#存放備份文件目錄
backup="/data/backup/tar/mysql/"
mkdir -p $dir
mkdir -p $backup
# 定義備份的數(shù)據(jù)庫名稱
database1="test1"
database2="test2"
database3="nacos"
database4="seata"
database5="canal_manager"
#用戶名和密碼
username=backup
password=********
# 使用mysqldump 導(dǎo)出sql文件并打包成gz壓縮包
mysqldump -u$username -p$password $database1 | gzip > $dir$database1$time.sql.gz
mysqldump -u$username -p$password $database2 | gzip > $dir$database2$time.sql.gz
mysqldump -u$username -p$password $database3 | gzip > $dir$database3$time.sql.gz
mysqldump -u$username -p$password $database4 | gzip > $dir$database4$time.sql.gz
mysqldump -u$username -p$password $database5 | gzip > $dir$database5$time.sql.gz
# 打成一個包
tar -czvf mysqlback_$time.tar.gz $dir*.sql.gz
# 移動壓縮后的文件
mv mysqlback_$time.tar.gz $backup
#刪除原打包文件
rm -rf $dir*.sql.gz
#刪除歷史備份數(shù)據(jù)
find $backup -name "*.tar.gz" -mtime +$days -type f -exec rm -rf {} \;
刪除歷史備份數(shù)據(jù)命令說明如下:
find $backup -name "*.tar.gz" -mtime +$days -type f -exec rm -rf {} \;用于查找并刪除指定目錄下符合特定條件的文件,具體解析如下:
??find $backup??:從變量$backup指定的目錄開始遞歸查找文件($backup需提前定義為有效路徑,如/data/backup)。??-name "*.tar.gz"??:匹配文件名以.tar.gz結(jié)尾的文件(區(qū)分大小寫)。??-mtime +$days??:篩選修改時(shí)間在$days天前的文件($days需替換為具體天數(shù),如7表示7天前)。??-type f??:僅查找普通文件,排除目錄等其他類型。??-exec rm -rf {} \;??:對找到的每個文件執(zhí)行rm -rf命令(強(qiáng)制刪除文件及目錄,若為文件則僅刪除文件);{}是占位符,代表匹配到的文件路徑;\;表示命令結(jié)束。
定時(shí)任務(wù)
# crontab -e 0 1 * * * /data/backup/mysql-backup.sh 使用Linux定時(shí)任務(wù)(Cron)命令,用于每天凌晨1點(diǎn)執(zhí)行MySQL數(shù)據(jù)庫備份腳本,各字段含義如下: ??0??:分鐘(0-59),表示整點(diǎn)執(zhí)行。 ??1??:小時(shí)(0-23),表示凌晨1點(diǎn)。 ??*??:日期(1-31),表示每天。 ??*??:月份(1-12),表示每月。 ??*??:星期幾(0-7,0和7均代表星期日),表示每周的每一天。 ??/data/backup/mysql-backup.sh??:要執(zhí)行的腳本路徑,需確保腳本有可執(zhí)行權(quán)限(chmod +x)
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL里實(shí)現(xiàn)類似SPLIT的分割字符串的函數(shù)
SQL對字符串的處理能力比較弱,比如我要循環(huán)遍歷象1,2,3,4,5這樣的字符串,如果用數(shù)組的話,遍歷很簡單,但是T-SQL不支持?jǐn)?shù)組,所以處理下來比較麻煩2012-09-09
mysql中binlog_format模式與配置詳細(xì)分析
這篇文章主要介紹了mysql中binlog_format模式與配置的相關(guān)內(nèi)容,詳細(xì)介紹了binlog的三種格式與SBR、 RBR 兩種模式各自的優(yōu)缺點(diǎn),需要的朋友可以參考。2017-10-10
Mysql中使用count加條件統(tǒng)計(jì)的實(shí)現(xiàn)示例
本文主要介紹了Mysql中使用count加條件統(tǒng)計(jì)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
SQL group by去重復(fù)且按照其他字段排序的操作
這篇文章主要介紹了SQL group by去重復(fù)且按照其他字段排序的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
淺談sql語句中GROUP BY 和 HAVING的使用方法
GROUP BY語句和HAVING語句,經(jīng)過研究和練習(xí),終于明白如何使用了,在此記錄一下同時(shí)添加了一個自己舉的小例子,通過寫這篇文章來加深下自己學(xué)習(xí)的效果,還能和大家分享下,同時(shí)也方便以后查閱,一舉多得,下面由小編來和大家一起學(xué)習(xí)2019-05-05
order?by?+?limit分頁時(shí)數(shù)據(jù)重復(fù)問題及解決方法
這篇文章主要介紹了order?by?+?limit分頁時(shí)數(shù)據(jù)重復(fù),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
基于mysql+mycat搭建穩(wěn)定高可用集群負(fù)載均衡主備復(fù)制讀寫分離操作
這篇文章主要介紹了基于mysql+mycat搭建穩(wěn)定高可用集群負(fù)載均衡主備復(fù)制讀寫分離操作,需要的朋友可以參考下2018-09-09

