Mysql資料庫備份指令碼

2022-06-30 09:48:09 字數 2678 閱讀 3065

資料庫備份指令碼

按照時間來建立目錄備份資料,需要配合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...