
論壇
網站公告
社群伺服器正進行搬移作業中,部份已完成;目前仍缺硬體資源,請參考討論區站務公告及主機近況公告。若有不便之處敬請見諒。
正在瀏覽:
1 名遊客
#1
Crontab 備份www、mysql資料夾內容有問題
阿修
2008/11/18 9:23
請問一下~ 我想要排程備份apacher server的 mysql資料夾與WWW資料夾
但是使用crontab時發現~除了系統的的crontab(/etc/crontab)可以排程外。
在使用者環境下或是用SSH以root登入的crontaba -e所寫的都沒有執行
而且就算利用/etc/crontab來排程~排程備份出來的tar.gz是有問題的
我測試過腳本是沒有問題~~請問一下要如何解決呢?
排程語法:(在/etc/crontab 或是以管理員root或使用者身份進入crontab -e所寫的)
00 18 * * * root /usr/bin/backweb
腳本:/usr/bin/backweb (root.root 755)
ymd=`date +%Y%m%d `
tar cvzf /backup_daily/db/mysql_db_$ymd.tar.gz /var/lib/mysql
tar cvzf /backup_daily/web/web_web$ymd.tar.gz /var/www
tar cvzf /backup_daily/phpini/phpini$ymd.tar.gz /etc/php5/apache2
但是使用crontab時發現~除了系統的的crontab(/etc/crontab)可以排程外。
在使用者環境下或是用SSH以root登入的crontaba -e所寫的都沒有執行
而且就算利用/etc/crontab來排程~排程備份出來的tar.gz是有問題的
我測試過腳本是沒有問題~~請問一下要如何解決呢?
排程語法:(在/etc/crontab 或是以管理員root或使用者身份進入crontab -e所寫的)
00 18 * * * root /usr/bin/backweb
腳本:/usr/bin/backweb (root.root 755)
ymd=`date +%Y%m%d `
tar cvzf /backup_daily/db/mysql_db_$ymd.tar.gz /var/lib/mysql
tar cvzf /backup_daily/web/web_web$ymd.tar.gz /var/www
tar cvzf /backup_daily/phpini/phpini$ymd.tar.gz /etc/php5/apache2
#2
回覆: Crontab 無法使用
訪客
Ident: 75878 66430 9b1e1 2165b
2008/11/18 18:59
cron 是一個服務(service)名稱
/etc/crontab 為其主要設定檔
當更改設定檔後,需要重新載入或重新啟動,使其立刻生效
# /etc/init.d/cron rload
或
# /etc/init.d/cron restart
----------------------------------------
直接備份 mysql 資料庫(非用 sql 語法導出)
這是最簡單也最快速的備份法
但缺點是需要先關閉 mysql 服務,再備份
否則備份出來的資料庫,很有可能是錯誤的,需要修復
因為表格仍在開啟中就備份,存回去時可能被程式認為是錯誤的
另也有可能備份那瞬間,網頁正在操作資料庫
比如論壇有人正在發文寫入資料庫或其它的
將那瞬間的狀態備份下來,存回去時當然就有錯誤了
所以備份前必須先關閉 mysql 服務
然而關閉 mysql 服務,網站就會停擺...
頁面上會出現資料庫錯誤,很難看
提供我的作法給你參考:
---------------------------------
1.先建立一個備份專用的網頁目錄,比如 /var/www2。內容只有一個 index.html,畫面是:資料庫備份中,或網站維護中,請瀏覽者稍待1~2分鐘...之類的,常逛網路,這種畫面你應該見過。
2.另外要有 404.php 這個檔,404 網頁找不到功能,需於 http.conf 中開啟。內容很簡單,強制導向到 index.html,也就是網站維護中的頁面。
3.備份前
mv /var/www /var/www3 #將原先目錄更名
mv /var/www2 /var/www #維護中頁面頂上去
這個是瞬間的,不到 0.5 秒
不管瀏覽者正在看什麼頁面,當他按下連結,因為目錄已經改變了,找不到檔案,便會得到 404 訊息。而 404 剛前面已經設定為強制導向到 index.htm 也就是:網站維護中的頁面。
4.接著關閉 mysql 服務,建議先等個 3秒,然後開始備份
/etc/init.d/mysqld stop
slee 3
5.備份完成後,照原來順序,還原回去
先啟動 msyqld,等個3~5秒,因為啟動需要時間
將 www 更名回 ww2,將 www3 更名回 www
不管如何,備份 mysql 是一定要停止服務的,除非你用 sql 語法導出或其它備援機制。
以上作法仍會使網站停擺,但是對外面的訪客來說,他們會看到網站維護中的頁面,並得知過 3分鐘後再來就可以看了,而不是資料庫錯誤的頁面。常逛網路,你應該也看過資料庫錯誤的頁面,會覺得說這個網站很不夠專業,且也不曉得啥時才會恢復。這之間的差別就是在這裡。
建議自動備份時間為當地時間凌晨 4~6 點,根據流量統計,這時段訪客人數最少,影響最小。
/etc/crontab 為其主要設定檔
當更改設定檔後,需要重新載入或重新啟動,使其立刻生效
# /etc/init.d/cron rload
或
# /etc/init.d/cron restart
----------------------------------------
直接備份 mysql 資料庫(非用 sql 語法導出)
這是最簡單也最快速的備份法
但缺點是需要先關閉 mysql 服務,再備份
否則備份出來的資料庫,很有可能是錯誤的,需要修復
因為表格仍在開啟中就備份,存回去時可能被程式認為是錯誤的
另也有可能備份那瞬間,網頁正在操作資料庫
比如論壇有人正在發文寫入資料庫或其它的
將那瞬間的狀態備份下來,存回去時當然就有錯誤了
所以備份前必須先關閉 mysql 服務
然而關閉 mysql 服務,網站就會停擺...
頁面上會出現資料庫錯誤,很難看
提供我的作法給你參考:
---------------------------------
1.先建立一個備份專用的網頁目錄,比如 /var/www2。內容只有一個 index.html,畫面是:資料庫備份中,或網站維護中,請瀏覽者稍待1~2分鐘...之類的,常逛網路,這種畫面你應該見過。
2.另外要有 404.php 這個檔,404 網頁找不到功能,需於 http.conf 中開啟。內容很簡單,強制導向到 index.html,也就是網站維護中的頁面。
<?php
// Location 強迫導向,僅能使用「絕對路徑」
header ("Location: http://yourdomain/index.html") ;
exit ;
?>
3.備份前
mv /var/www /var/www3 #將原先目錄更名
mv /var/www2 /var/www #維護中頁面頂上去
這個是瞬間的,不到 0.5 秒
不管瀏覽者正在看什麼頁面,當他按下連結,因為目錄已經改變了,找不到檔案,便會得到 404 訊息。而 404 剛前面已經設定為強制導向到 index.htm 也就是:網站維護中的頁面。
4.接著關閉 mysql 服務,建議先等個 3秒,然後開始備份
/etc/init.d/mysqld stop
slee 3
5.備份完成後,照原來順序,還原回去
先啟動 msyqld,等個3~5秒,因為啟動需要時間
將 www 更名回 ww2,將 www3 更名回 www
不管如何,備份 mysql 是一定要停止服務的,除非你用 sql 語法導出或其它備援機制。
以上作法仍會使網站停擺,但是對外面的訪客來說,他們會看到網站維護中的頁面,並得知過 3分鐘後再來就可以看了,而不是資料庫錯誤的頁面。常逛網路,你應該也看過資料庫錯誤的頁面,會覺得說這個網站很不夠專業,且也不曉得啥時才會恢復。這之間的差別就是在這裡。
建議自動備份時間為當地時間凌晨 4~6 點,根據流量統計,這時段訪客人數最少,影響最小。
#3
回覆: Crontab 無法使用
阿修
2008/11/21 11:23
但是~我現在的狀況是~我要排程備份mysql與www這兩個資料夾~
在獨立執行腳本時可以執行備份動作~備份出來的db.tar.gz與web.tar.gz解壓縮後裡面是完整的內容。
但是放入排程執行後是有備份成功,但是出來的db.tar.gz與web.tar.gz內容有問題(解tar 出來後發現mysql只有部分資料庫,web.tar.gz則是沒有內容只有20bytes)
mysql資料夾權限/群組(mysql.mysql)而www資料夾(root.root)
PS:我在腳本前後有加上 /etc/init.d/apache2 stop與 /etc/init.d/apache2 start
設定/etc/crontab環境條件 nbuntu desktop 8.04 以root身份登入desktop環境
請問一下~有人可以解疑為何會這樣呢?感謝
backweb腳本:(/usr/bin/backweb)
ymd=`date +%Y%m%d `
/etc/init.d/mysql stop
/etc/init.d/apache2 stop
tar cvzf /backup_daily/db/mysql_db_$ymd.tar.gz /var/lib/mysql
tar cvzf /backup_daily/web/web_web$ymd.tar.gz /var/www
tar cvzf /backup_daily/phpini/phpini$ymd.tar.gz /etc/php5/apache2
/etc/init.d/apache2 start
/etc/init.d/mysql start
在獨立執行腳本時可以執行備份動作~備份出來的db.tar.gz與web.tar.gz解壓縮後裡面是完整的內容。
但是放入排程執行後是有備份成功,但是出來的db.tar.gz與web.tar.gz內容有問題(解tar 出來後發現mysql只有部分資料庫,web.tar.gz則是沒有內容只有20bytes)
mysql資料夾權限/群組(mysql.mysql)而www資料夾(root.root)
PS:我在腳本前後有加上 /etc/init.d/apache2 stop與 /etc/init.d/apache2 start
設定/etc/crontab環境條件 nbuntu desktop 8.04 以root身份登入desktop環境
請問一下~有人可以解疑為何會這樣呢?感謝
backweb腳本:(/usr/bin/backweb)
ymd=`date +%Y%m%d `
/etc/init.d/mysql stop
/etc/init.d/apache2 stop
tar cvzf /backup_daily/db/mysql_db_$ymd.tar.gz /var/lib/mysql
tar cvzf /backup_daily/web/web_web$ymd.tar.gz /var/www
tar cvzf /backup_daily/phpini/phpini$ymd.tar.gz /etc/php5/apache2
/etc/init.d/apache2 start
/etc/init.d/mysql start
#4
回覆: Crontab 備份www、mysql資料夾內容有問題
Overing
2008/11/21 17:21
不要停止mysql跟apache直接備份看看
試看看@@
我在想會不會那兩個目錄的內容多半是用連結過去的
所以備份的時候....
試看看@@
我在想會不會那兩個目錄的內容多半是用連結過去的
所以備份的時候....
#5
回覆: Crontab 備份www、mysql資料夾內容有問題
阿修
2008/11/21 19:15
我原先也是沒有停止apache與mysql就直接備份但視還是一樣的情況~腳本可以直接執行~
備份出來的tar.gz檔也正確~
但是~放到排程裡面備份出來的就是不行~
有tar.gz檔但內容不完全和沒有資料
我有嘗試將www資料內所有目錄檔案改成(root.root)使用者.群組 權限和mysql改成(root.mysql)
但是利用排程備份結果還是一樣,有排程備份到,但是內容資料還是和上面情況一樣是有問題的~
備份出來的tar.gz檔也正確~
但是~放到排程裡面備份出來的就是不行~
有tar.gz檔但內容不完全和沒有資料
我有嘗試將www資料內所有目錄檔案改成(root.root)使用者.群組 權限和mysql改成(root.mysql)
但是利用排程備份結果還是一樣,有排程備份到,但是內容資料還是和上面情況一樣是有問題的~
#6
回覆: Crontab 備份www、mysql資料夾內容有問題
訪客
Ident: 75878 66430 9b1e1 2165b
2008/11/21 20:37
記得 Ubuntu 預設是不開啟 root 帳號的
sudo 可以切換到 root 帳號,但不代表 root 是開啟的
root 密碼為空,無法直接登入
好像是給 root 設密碼後,就可以開啟它
sudo passwd root
sudo 可以切換到 root 帳號,但不代表 root 是開啟的
root 密碼為空,無法直接登入
好像是給 root 設密碼後,就可以開啟它
sudo passwd root
#7
回覆: Crontab 備份www、mysql資料夾內容有問題
阿修
2008/11/22 0:17
我已經把root打開了
所以~可以以root身份登入x-windows裡面
這個狀況我已經先排除了
因為一開始第一次登入後修該root相關資料讓我可以直接以root身份登入
從apache server等安裝到新增腳本、crontab 排程等都是以root身份在x-windows下以終端機方式操作的
所以~可以以root身份登入x-windows裡面
這個狀況我已經先排除了
因為一開始第一次登入後修該root相關資料讓我可以直接以root身份登入
從apache server等安裝到新增腳本、crontab 排程等都是以root身份在x-windows下以終端機方式操作的
#8
回覆: Crontab 備份www、mysql資料夾內容有問題
Overing
2008/11/22 1:03
不要起圖形介面執行看看
雖然感覺起來不太可能
還有就是今天下午上課老師有提到uid的東西
不知道有沒有關聯
雖然感覺起來不太可能
還有就是今天下午上課老師有提到uid的東西
不知道有沒有關聯
#9
回覆: Crontab 備份www、mysql資料夾內容有問題
阿修
2008/11/25 0:15
這個我也有想過
但是我本身就是用root權限操作
而且我是在x-windows下的終端機介面以root身份安裝、變更server、資料、資料夾權限等
但是我本身就是用root權限操作
而且我是在x-windows下的終端機介面以root身份安裝、變更server、資料、資料夾權限等
#10
回覆: Crontab 備份www、mysql資料夾內容有問題
訪客
Ident: 75878 66430 9b1e1 2165b
2008/11/25 11:23
debug 偵錯
補抓執行中的訊息(包含錯誤訊息)存到 log 檔
用大於符號,將訊息重新導向存檔
$ 指令敘述 > /root/backup-log.txt 2>&1
補抓執行中的訊息(包含錯誤訊息)存到 log 檔
用大於符號,將訊息重新導向存檔
$ 指令敘述 > /root/backup-log.txt 2>&1
您可以查看帖子.
您可以發帖.
您可以回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您可以不經審核直接發帖.





