得到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 ...