日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

linux下如何實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)每天定時(shí)自動(dòng)備份

 孤獨(dú)學(xué)者666 2018-09-13

由于客戶要求,需要將數(shù)據(jù)庫(kù)進(jìn)行每天定時(shí)自動(dòng)備份,所以網(wǎng)上找了各種方式就行了測(cè)試,遇到很多坑,特此記錄下來(lái),步驟是東拼西湊的,雖然也是網(wǎng)上找的,但都是經(jīng)過(guò)親自測(cè)試,一定能用,針對(duì)部署時(shí)期遇到的問(wèn)題和解決方式都記錄了下來(lái)。

1、創(chuàng)建備份目錄:

為了方便,在/home保存?zhèn)浞菸募?/p>

  1. cd
  2. mkdir /home/dbback
cd /home/dbback

2、創(chuàng)建備份Shell腳本:

注意把以下命令中的DatabaseName換為實(shí)際的數(shù)據(jù)庫(kù)名稱; 
當(dāng)然,你也可以使用其實(shí)的命名規(guī)則!

vi bkDatabaseName.sh

輸入/粘貼以下內(nèi)容:

  1. #!/bin/bash
  2. mysqldump -uusername -ppassword DatabaseName > /home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql

對(duì)備份進(jìn)行壓縮:

  1. #!/bin/bash
  2. mysqldump -uusername -ppassword DatabaseName | gzip > /home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz

注意: 
把 username 替換為實(shí)際的用戶名; 
把 password 替換為實(shí)際的密碼; 
把 DatabaseName 替換為實(shí)際的數(shù)據(jù)庫(kù)名;

3、添加可執(zhí)行權(quán)限:

chmod u+x bkDatabaseName.sh

添加可執(zhí)行權(quán)限之后先執(zhí)行一下,看看腳本有沒(méi)有錯(cuò)誤,能不能正常使用;

./bkDatabaseName.sh
注:這里可能會(huì)報(bào)錯(cuò)
Warning: Using a password on the command line interface can be insecure.

導(dǎo)出MySQL數(shù)據(jù)庫(kù)的時(shí)候采用mysqldump命令,出現(xiàn)"Warning: Using a password on the command line interface can be insecure."的錯(cuò)誤提示,當(dāng)然數(shù)據(jù)庫(kù)肯定也沒(méi)有能備份下來(lái)。這個(gè)問(wèn)題應(yīng)該是在MySQL5.6+版本的時(shí)候就有出現(xiàn),可能是為了確保數(shù)據(jù)庫(kù)的安全性采用的保護(hù)機(jī)制。

解決方法、修改數(shù)據(jù)庫(kù)配置文件

1、我們需要修改數(shù)據(jù)庫(kù)配置文件,這個(gè)要看我們數(shù)據(jù)庫(kù)的配置的,有些是在/etc/my.cnf,有些是/etc/my.conf


我們需要在[client]部分添加腳本:

host=localhost
user=數(shù)據(jù)庫(kù)用戶
password='數(shù)據(jù)庫(kù)密碼'

這里參數(shù)要修改成我們自己的。

2、采用命令導(dǎo)出和導(dǎo)入數(shù)據(jù)庫(kù)

其實(shí)在這個(gè)時(shí)候,我們?nèi)绻捎?詳解使用mysqldump命令備份還原MySQL數(shù)據(jù)用法整理"介紹的方法也是可以使用的,雖然依舊有錯(cuò)誤提示,但是數(shù)據(jù)庫(kù)還是可以導(dǎo)出的。您肯定和老左一樣是追求細(xì)節(jié)的人,一點(diǎn)點(diǎn)問(wèn)題都不能有,但我們可以用下面的命令導(dǎo)出和導(dǎo)入,就沒(méi)有錯(cuò)誤提示。

#導(dǎo)出數(shù)據(jù)庫(kù)

mysqldump --defaults-extra-file=/etc/my.cnf database > database.sql

#導(dǎo)入數(shù)據(jù)庫(kù)

mysql --defaults-extra-file=/etc/my.cnf database < database.sql

這里我們可以看到上面的命令和以前常用的快速導(dǎo)入和導(dǎo)入命令有所不同了,需要加載我們配置的MYSQL配置文件,這個(gè)紅色部分要根據(jù)我們實(shí)際的路徑修改。用這樣的命令導(dǎo)出備份和導(dǎo)入是沒(méi)有錯(cuò)誤提示的。


4、添加計(jì)劃任務(wù)

檢測(cè)或安裝 crontab

確認(rèn)crontab是否安裝: 
執(zhí)行 crontab 命令如果報(bào) command not found,就表明沒(méi)有安裝

  1. # crontab
  2. -bash: crontab: command not found

如時(shí)沒(méi)有安裝 crontab,需要先安裝它,具體步驟請(qǐng)參考: 
CentOS下使用yum命令安裝計(jì)劃任務(wù)程序crontab 
使用rpm命令從CentOS系統(tǒng)盤安裝計(jì)劃任務(wù)程序crontab

添加計(jì)劃任務(wù)

執(zhí)行命令:

crontab -e

這時(shí)就像使用vi編輯器一樣,可以對(duì)計(jì)劃任務(wù)進(jìn)行編輯。 
輸入以下內(nèi)容并保存:

*/1 * * * * /home/backup/bkDatabaseName.sh

具體是什么意思呢? 

意思是每一分鐘執(zhí)行一次shell腳本“/home/backup/bkDatabaseName.sh”。

1、額外學(xué)習(xí),crontab用法 
  crontab命令用于安裝、刪除或者列出用于驅(qū)動(dòng)cron后臺(tái)進(jìn)程的表格。用戶把需要執(zhí)行的命令序列放到crontab文件中以獲得執(zhí)行。
    每個(gè)用戶都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接創(chuàng)建或者直接修改。該crontab文件是通過(guò)crontab命令創(chuàng)建的

   在crontab文件中如何輸入需要執(zhí)行的命令和時(shí)間。該文件中每行都包括六個(gè)域,其中前五個(gè)域是指定命令被執(zhí)行的時(shí)間,最后一個(gè)域是要被執(zhí)行的命令。
    每個(gè)域之間使用空格或者制表符分隔。格式如下: 
  minute hour day-of-month month-of-year day-of-week commands 
    合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) 
    除了數(shù)字還有幾個(gè)個(gè)特殊的符號(hào)就是"*"、"/"和"-"、",",*代表所有的取值范圍內(nèi)的數(shù)字,"/"代表每的意思,"/5"表示每5個(gè)單位,"-"代表從某個(gè)數(shù)字到某個(gè)數(shù)字,","分開(kāi)幾個(gè)離散的數(shù)字。

    -l 在標(biāo)準(zhǔn)輸出上顯示當(dāng)前的crontab。 
  -r 刪除當(dāng)前的crontab文件。 
  -e 使用VISUAL或者EDITOR環(huán)境變量所指的編輯器編輯當(dāng)前的crontab文件。當(dāng)結(jié)束編輯離開(kāi)時(shí),編輯后的文件將自動(dòng)安裝。 

 

2、例子: 
每天早上6點(diǎn) 
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意單純echo,從屏幕上看不到任何輸出,因?yàn)閏ron把任何輸出都email到root的信箱了。

每?jī)蓚€(gè)小時(shí) 
0 */2 * * * echo "Have a break now." >> /tmp/test.txt  

晚上11點(diǎn)到早上8點(diǎn)之間每?jī)蓚€(gè)小時(shí)和早上八點(diǎn) 
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

每個(gè)月的4號(hào)和每個(gè)禮拜的禮拜一到禮拜三的早上11點(diǎn) 
0 11 4 * 1-3 command line

1月1日早上4點(diǎn) 
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出現(xiàn)錯(cuò)誤,或者有數(shù)據(jù)輸出,數(shù)據(jù)作為郵件發(fā)給這個(gè)賬號(hào) HOME=/ 

每小時(shí)執(zhí)行/etc/cron.hourly內(nèi)的腳本
01 * * * * root run-parts /etc/cron.hourly
每天執(zhí)行/etc/cron.daily內(nèi)的腳本
02 4 * * * root run-parts /etc/cron.daily 

每星期執(zhí)行/etc/cron.weekly內(nèi)的腳本
22 4 * * 0 root run-parts /etc/cron.weekly 

每月去執(zhí)行/etc/cron.monthly內(nèi)的腳本 
42 4 1 * * root run-parts /etc/cron.monthly 

注意: "run-parts"這個(gè)參數(shù)了,如果去掉這個(gè)參數(shù)的話,后面就可以寫要運(yùn)行的某個(gè)腳本名,而不是文件夾名。   

每天的下午4點(diǎn)、5點(diǎn)、6點(diǎn)的5 min、15 min、25 min、35 min、45 min、55 min時(shí)執(zhí)行命令。 
5,15,25,35,45,55 16,17,18 * * * command

每周一,三,五的下午3:00系統(tǒng)進(jìn)入維護(hù)狀態(tài),重新啟動(dòng)系統(tǒng)。
00 15 * * 1,3,5 shutdown -r +5

每小時(shí)的10分,40分執(zhí)行用戶目錄下的innd/bbslin這個(gè)指令: 
10,40 * * * * innd/bbslink 

每小時(shí)的1分執(zhí)行用戶目錄下的bin/account這個(gè)指令: 
1 * * * * bin/account

每天早晨三點(diǎn)二十分執(zhí)行用戶目錄下如下所示的兩個(gè)指令(每個(gè)指令以;分隔): 
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)  

每年的一月和四月,4號(hào)到9號(hào)的3點(diǎn)12分和3點(diǎn)55分執(zhí)行/bin/rm -f expire.1st這個(gè)指令,并把結(jié)果添加在mm.txt這個(gè)文件之后(mm.txt文件位于用戶自己的目錄位置)。 
12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt 



5、測(cè)試任務(wù)是否執(zhí)行

很簡(jiǎn)單,我們就執(zhí)行幾次“l(fā)s”命令,看看一分鐘過(guò)后文件有沒(méi)有被創(chuàng)建就可以了!

如果任務(wù)執(zhí)行失敗了,可以通過(guò)以下命令查看任務(wù)日志:

# tail -f /var/log/cron

輸出類似如下


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多