說明:生產環境中,需要對資料庫定時進行備份,通常對從庫配置備份。
備份的方式有:
$ 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...