資料庫備份指令碼
按照時間來建立目錄備份資料,需要配合crontab
00 1 * * * root /etc/mysqldumpjumpser.sh
每天早上凌晨1點備份資料
#!/bin/bash
user=jumpserver
pass=jumpserver
dbdir=/databak/data_backup
#day=`date +%y%m%d`
#年月month=`date +%y%m`
#日期時間
dt=`date '+%y%m%d%h%m'`
#主機ip
dbip=`cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep ipaddr | awk -f '"' ''`
#建立備份目錄
mkdir -p $dbdir/$dbip/$month
備份資料庫
for dbname in jumpserver
do mysqldump -u$user -p$pass -r --single-transaction $dbname 2>>$dbdir/$dbip/$month/error-$dt.log |gzip > $dbdir/$dbip/$month/$dbname-$dbip-$dt.sql.gz
# 生成md5sum檔案
md5sum $dbdir/$dbip/$month/$dbname-$dbip-$dt.sql.gz > $dbdir/$dbip/$month/$dbname-$dbip-$dt.sql.gz.md5
done
# check and delete old datafile.
#刪除超過30天的檔案,並刪除目錄
del_backup_dir=/databak/data_backup/$dbip
cd $del_backup_dir
if [ $? = 0 ]; then
find ./ -type f -mtime +30 -exec rm -rf {} \; >/dev/null 2>&1
find -depth -type d -empty -exec rmdir {} \;
fi#壓縮備份
#mysqldump -uroot -proot --databases abc 2>/dev/null |gzip >/abc.sql.gz
#還原#gunzip -c abc.sql.gz |mysql -uroot -proot abc
每月備份的資料會放到乙個目錄,十分亂,不容易看,這邊改進一下
沒有多大的改變,就是加了day=`date -d '-1 days' +%d` :顯示上一天的日期,我們crontab是凌晨1點備份,也就是備份上一天的資料。
#!/bin/bash
user=jumpserver
pass=jumpserver
dbdir=/databak/data_backup
day=`date -d '-1 days' +%d`
month=`date +%y%m`
dt=`date '+%y%m%d%h%m'`
dbip=`cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep ip | awk -f '"' ''`
mkdir -p $dbdir/$dbip/$month/$day
for dbname in jumpserver
do mysqldump -u$user -p$pass -r --single-transaction $dbname 2>>$dbdir/$dbip/$month/$day/error-$dt.log |gzip > $dbdir/$dbip/$month/$day/$dbname-$dbip-$dt.sql.gz
# 生成md5sum檔案
md5sum $dbdir/$dbip/$month/$day/$dbname-$dbip-$dt.sql.gz > $dbdir/$dbip/$month/$day/$dbname-$dbip-$dt.sql.gz.md5
done
# check and delete old datafile.
del_backup_dir=/databak/data_backup/$dbip
cd $del_backup_dir
if [ $? = 0 ]; then
find ./ -type f -mtime +30 -exec rm -rf {} \; >/dev/null 2>&1
find -depth -type d -empty -exec rmdir {} \;
fi#壓縮備份
#mysqldump -uroot -proot --databases abc 2>/dev/null |gzip >/abc.sql.gz
#還原#gunzip -c abc.sql.gz |mysql -uroot -proot abc
以日期目錄分類,可以更方便的清楚 MySQL資料庫備份指令碼
1.指令碼內容 單獨的指令碼 bin sh if 4 then echo usage 0 db host db user db pwd db name exit fiprefix date y m d h m s filepath root dbbackup date y m 4 prefix if...
mysql資料庫備份指令碼
第一步 編寫資料庫備份指令碼database mysql shell.sh bin bash date date y m d h m every minute database springboot admin database name db username root database user...
備份MySQL資料庫指令碼
備份mysql資料庫中 mysql 庫 規定每週日24點備份 root mysql vim root mysqldump.sh bin bash backup database mysql owner weijia date 2019 04 13 mysql user root 登入使用者 mysq...