linux定時備份mysql(可用)

2021-09-24 13:59:57 字數 4531 閱讀 8002

得到mysql路徑

ps -ef|grep mysql

usr/bin/mysql 是指:mysql的執行路徑

var/lib/mysql 是指:mysql資料庫檔案的存放路徑

usr/lib/mysql 是指:mysql的安裝路徑

//建立備份目錄:

cd /home //mkdir backup //cd backup

//建立備份 shell 指令碼

vi bkdatabasename.sh

//輸入 / 貼上以下內容:

#!/bin/bash

/usr/bin/mysqldump -uroot -proot crm > /home/backup/databasename_$(date +%y%m%d_%h%m%s).sql

#!/bin/bash

/usr/bin/mysqldump -uroot -proot crm | gzip > /home/backup/databasename_$(date +%y%m%d_%h%m%s).sql.gz

//指令碼執行許可權

chmod u+x bkdatabasename.sh

//指令碼是否可用

./bkdatabasename.sh

安裝crontab

yum -y install vixie-cron

//新增計畫任務

crontab -e

//輸入以下內容並儲存

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

#mysql備份使用者

mysql_user="root"

#mysql備份使用者的密碼

mysql_password="root"

mysql_host="localhost"

mysql_port="3306"

#mysql編碼

mysql_charset="utf8"

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

backup_db_arr=("db1" "db2")

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

backup_location=/opt/mysql

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

expire_backup_delete="on"

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

expire_days=3

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

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="歡迎使用mysql備份工具" #歡迎語

# 判斷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_msgfi

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

mysql -h$mysql_host -p$mysql_port -u$mysql_user -p$mysql_password

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!"fi

done

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 "所有資料庫備份成功!謝謝你!!"

exitfi

2、修改shell指令碼屬性,賦予執行許可權

chmod 600 /opt/mysqlbackup.sh

chmod +x /opt/mysqlbackup.sh

3、定時執行指令碼

vi /etc/crontab

vi /var/spool/mail/root 可檢視指令碼執行日誌

mysql恢復

use 資料庫名字;

mysql> source d:/myprogram/database/db.sql; //windows

mysql>source /home/backup/databasename_20190619_165719.sql//linux注意全路徑

mysql -u uroot -p crm < backup.sql //此方法沒成功(我沒成功,不代表你們不成功)

使用者名稱 資料庫名 備份sql

分 時 日 月 星期(*號釋義)

01 * * * * /root/mysqlbackup.sh

vi /etc/crontab //在最後一行

crontab -e //這個也行

參考**:

5      *       *         *     *     ls             指定每小時的第5分鐘執行一次ls命令

30 5 * * * ls 指定每天的 5:30 執行ls命令

30 7 8 * * ls 指定每月8號的7:30分執行ls命令

30 5 8 6 * ls 指定每年的6月8日5:30執行ls命令

30 6 * * 0 ls 指定每星期日的6:30執行ls命令[注:0表示星期天,1表示星期1, 以此類推,

也可以用英文來表示,sun表示星期天,mon表示星期一等。]

30 3 10,20 * * ls 每月10號及20號的3:30執行ls命令[注:「,」用來連線多個不連續的時段]

25 8-11 * * * ls 每天8-11點的第25分鐘執行ls命令[注:「-」用來連線連續的時段]

*/15 * * * * ls 每15分鐘執行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執行ls命令 ]

30 6 */10 * * ls 每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls 命令。 ]

每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行檔案

50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts引數表示,執行後面目錄中的所有可執行檔案。 ]

Linux 定時備份MYsql

vim sbin backup usr local mysql bin mysqldump uroot p1 l mysql home databak mysql date y m d sql 注 l 鎖定表 date與 之前要空格,與 y m d不能有空格 crontab e 03 sbin ba...

linux定時備份mysql資料

本文記錄一下通過mysqldump進行mysql的定時備份。一 編寫shell指令碼進行資料備份 mysqldump uroot p qet database dir 引數 t是指僅備份資料具體的命令引數參考官方 為防止備份檔案覆蓋,使用系統時間命名,以下是獲取系統時間的shell指令碼 ctime...

linux實現mysql定時備份

1.建立備份資料存放目錄 mkdir p bak db bakup 2.編寫資料庫備份指令碼 vim mysqlbakup.sh 指令碼內容 bin bash echo mysql backup start.設定mysql備份目錄 folder bak db bakup cd folder day ...