CentOS MySQL自動備份

2021-10-17 04:01:50 字數 3247 閱讀 7532

說明:生產環境中,需要對資料庫定時進行備份,通常對從庫配置備份。

備份的方式有:

$ mkdir /home/mysql-bak -p

$ vim /home/mysql-bak/backup.sh

減配版

#!/bin/bash

# 使用者需要配置的部分

mybackupdir="/home/mysql-bak"

myuser="test"

mypass="test"

myhost="localhost"

myport="3306"

mydbname="test"

mycharset="utf8"

mylogin="mysql -h$myhost -p$myport -u$myuser -p$mypass"

#mydump="mysqldump -h$myhost -p$myport -u$myuser -p$mypass -b"

mydump="mysqldump -h$myhost -p$myport -u$myuser -p$mypass --default-character-set=$mycharset -b"

database="$($mylogin -e "show databases;"|egrep -vi "data|_schema|mysql")"

# 備份指定庫

mydir=$mybackupdir/$mydbname

[ ! -d $mydir ] && mkdir -p $mydir

$mydump $mydbname|gzip >$mydir/$_$(date +%f).sql.gz

# 備份全庫全表

#for dbname in $database

# do

# mydir=$mybackupdir/$dbname

# [ ! -d $mydir ] && mkdir -p $mydir

# $mydump $dbname|gzip >$mydir/$_$(date +%f).sql.gz

#done

高階版

#!/bin/bash

# 以下配置資訊請自己修改

mysql_user="user" #mysql備份使用者

mysql_password="password" #mysql備份使用者的密碼

mysql_host="localhost"

mysql_port="3306"

mysql_charset="utf8" #mysql編碼

backup_db_arr=("test") #要備份的資料庫名稱,多個用空格分開隔開 如("db1" "db2" "db3")

backup_location=/home/mysql-bak #備份資料存放位置,末尾請不要帶"/",此項可以保持預設,程式會自動建立資料夾

expire_backup_delete="on" #是否開啟過期備份刪除 on為開啟 off為關閉

expire_days=3 #過期時間天數 預設為三天,此項只有在expire_backup_delete開啟時有效

# 本行開始以下不需要修改

backup_time=`date +%y%m%d%h%m` #定義備份詳細時間

backup_ymd=`date +%y-%m-%d` #定義備份目錄中的年月日時間

backup_3ago=`date -d '3 days ago' +%y-%m-%d` #3天之前的日期

backup_dir=$backup_location/$backup_ymd #備份檔案夾全路徑

welcome_msg="welcome to use mysql backup tools!" #歡迎語

# 判斷mysql是否啟動,mysql沒有啟動則備份退出

mysql_ps=`ps -ef |grep mysql |wc -l`

mysql_listen=`netstat -an |grep listen |grep $mysql_port|wc -l`

if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then

echo "error:mysql is not running! backup stop!"

exit

else

echo $welcome_msg

fi# 連線到mysql資料庫,無法連線則備份退出

mysql -h$mysql_host -p$mysql_port -u$mysql_user -p$mysql_password <$backup_dir/$dbname-$backup_time.sql.gz`

flag=`echo $?`

if [ $flag == "0" ];then

echo "database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz"

else

echo "database $dbname backup fail!"

fidone

else

echo "error:no database to backup! backup stop"

exit

fi# 如果開啟了刪除過期備份,則進行刪除操作

if [ "$expire_backup_delete" == "on" -a "$backup_location" != "" ];then

#`find $backup_location/ -type d -o -type f -ctime +$expire_days -exec rm -rf {} \;`

`find $backup_location/ -type d -mtime +$expire_days | xargs rm -rf`

echo "expired backup data delete complete!"

fiecho "all database backup success! thank you!"

exit

fi

$ chmod 777 /home/mysql-bak/backup.sh

檢視當前使用者是否已經設定了定時執行任務

$ crontab -l

開始編寫定時執行任務

$ crontab -e

將指令碼的定時任務設定為每天凌晨5點執行(有可執行許可權)

0 5 * * * /bin/bash /home/mysql-bak/backup.sh

Centos Mysql定時自動備份

mysql專用目錄 mkdir mysql mysql備份目錄 mkdir mysql backup mysql備份指令碼 mkdir mysql backup scripts mysql備份檔案 mkdir mysql backup files mysql備份日誌 mkdir mysql back...

CentOS MySQL自動備份shell指令碼

在資料庫的日常維護工作中,除了保證業務的正常執行以外,就是要對資料庫進行備份,以免造成資料庫的丟失,從而給企業帶來重大經濟損失。通常備份可以按照備份時資料庫狀態分為熱備和冷備,按照備份資料庫檔案的大小分為增量備份 差異備份和全量備份。這裡,我們講解一種全量備份的方法,來實現定時備份資料到mysql指...

centos mysql資料庫自動備份

方案一 vi usr sbin bakmysql 內容如下 1 db user root 2 db passwd root 3 db name db test 4 the directory for story your backup file.you shall change this dir 5...