https://www.cnblogs.com/taomylife/p/8022104.html
https://www.cnblogs.com/huxiaoguang/p/10847401.html
https://blog.csdn.net/sinat_33201781/article/details/94443092
-
創建備份目錄
mkdir -p /data/dbback/mysql
-
創建備份shell腳本
vim /data/dbback/bkDatabaseName.sh
輸入或粘貼以下內容
需要先在/etc/my.cnf中添加以下內容
打開etc/my.cnf,在[mysqldump]下增加:
user=root
password=cw123456#!/bin/bash # 需要備份的數據庫列表 db_list="mysql sys test" # 數據庫備份目錄 backup_dir="/data/dbback/back_dir" # 當前日期 date=`date +%Y%m%d` # 當前日期前7天日期 olddate=`date +%Y%m%d -d "-7 days"` # 日誌備份目錄 backlog_dir="/data/dbback/back_log" echo $olddate # 創建當天的備份數據和日誌文件目錄 mkdir -p $backlog_dir/$date mkdir -p $backup_dir/$date # 刪除七天前備份數據和日誌文件 rm -rf $backlog_dir/$olddate rm -rf $backup_dir/$olddate for db_name in $db_list do echo "$db_name back begin at `date +%H:%M:%S`" >> $backlog_dir/$date/back.log mysqldump $db_name --skip-lock-tables | gzip > $backup_dir/$date/$db_name"_"$date.sql.gz echo "$db_name back end at `date +%H:%M:%S`" >> $backlog_dir/$date/back.log done echo "all back over!" >> $backlog_dir/$date/back.log
-
添加可執行權限
chmod +x bkDatabaseName.sh
執行腳本 ./bkDatabaseName.sh
報錯Warning: Using a password on the command line interface can be insecure.參考官網http://dev.mysql.com/doc/refman/5.1/en/password-security-user.html做修改。
http://www.jiadingqiang.com/3438.html
直接把上面的腳本中的用戶名和密碼去掉,修改爲“mysqldump backup_dir/time.sql",但是要在配置文件中加上用戶名和密碼。可以在my.cnf內指定。
打開etc/my.cnf,在[client]下增加:
user=root
password=root
但是這樣就所有塊的操作都能共享了,生產環境上爲了安全還是儘量分開(所以也可以在[mysqldump]下增加)。 -
創建定時任務
systemctl start crond systemctl status crond systemctl enable crond
檢測或安裝 crontab,通過命令判斷crontab有沒有,沒有的話先安裝。
-
安裝cron
yum -y install vixie-cron
yum -y install crontabs說明:
vixie-cron 軟件包是 cron 的主程序;
crontabs 軟件包是用來安裝、卸裝、或列舉用來驅動 cron 守護進程的表格的程序。 -
添加計劃任務
執行命令:
crontab -e
這時就像使用vi編輯器一樣,可以對計劃任務進行編輯。
輸入以下內容並保存: (每天凌晨一點備份數據庫)
00 01 * * * /data/dbback/bkDatabaseName.sh
附 Crontab 格式
crontab [選項]
選項:
-e: 編輯crontab定時任務
-l: 查詢crontab任務
-r: 刪除當前用戶所有的crontab任務
分 時 日 月 周 執行命令 第 1 列分鐘 1~59,每分鐘用 * 或者*/1表示,整點分鐘數爲00或0 第 2 列小時 1~23(0 表示 0 點) 第 3 列日 1~31 第 4 列月 1~12 第 5 列星期 0~6(0 表示星期天) 第 6 列要運行的命令
項目 含義 範圍 第一個“*” 一小時當中的第幾分鐘 0-59 第二個“*” 一天當中的第幾小時 0-23 第三個“*” 一個月當中的第幾天 1-31 第四個“*” 一年當中的第幾月 1-12 第五個“*” 一週當中的星期幾 0-7(0和7都代表星期日) 時間 含義 45 22 * * * 命令 在22點45分執行命令 0 17 * * 1 命令 每週1 的17點0分執行命令 0 5 1,15 * * 命令 每月1號和15號的凌晨5點0分執行命令 40 4 * * 1-5 命令 每週一到週五的凌晨4點40分執行命令 */10 4 * * * 命令 每天的凌晨4點,每隔10分鐘執行一次命令 0 0 1,15 * 1 命令 每月1號和15號,每週1的0點0分都會執行命令。注意:星期幾和幾號最好不要同時出現,因爲他們定義的都是天。非常容易讓管理員混亂。 特殊符號 含義 * 代表任何時間。比如第一個“*”就代表一小時中每分鐘都執行一次的意思。 , 代表不連續的時間。比如“0 8,12,16 * * * 命令”,就代表在每天的8點0分,12點0分,16點0分都執行一次命令 - 代表連續的時間範圍。比如“0 5 * * 1-6命令”,代表在週一到週六的凌晨5點0分執行命令 */n 代表每隔多久執行一次。比如“*/10 * * * * 命令”,代表每隔10分鐘就執行一遍命令