請問前輩
有關DRUPAL的備份方式?你們是如何做的?
小弟目前想到的有
1.利用後台備份,直接COPY MYSQL DATA的資料夾
困難:好像在不同電腦用此方法,似乎行不通,有可能遇到硬碟掛掉或重灌時,資料庫將不能使用
2.PHPMYADMIN備份
困難:有檔案大小之限制
聽說還有MYSQLDUMP的方式,但有點複雜,小弟還看不懂
是不是請問一下DRUPAL是否有類似一般部落格匯出和匯入之功能的模組可使用?
還是我用的方法有誤或者有其他改進方式可以精確的備份資料庫,讓它可以重複使用或移接到其他電腦?
請大大幫幫忙解答問題?
我的環境系統如下
WINDOWS XP SP2
使用AppServ Open Project - 2.5.7
Re: 求教DRUPAL資料庫備份問題
我是用phpmyadmin 備份的
只因為多人, 多server 在用
感覺還可以, 只是比較慢
Joetsui's blog
Re: 求教DRUPAL資料庫備份問題
經過剛剛實際測試
方法1似乎再同一電腦也是行不通
只是我是讓兩個DRUPAL共存下測試的,一個資料夾為DRUPAL資料庫名為DRUPAL,另一個資料夾為DRUPAL5資料庫名為DRUPAL5
是COPY DRUPAL的資料庫(資料夾內所有檔案)到DRUPAL5資料夾內全部覆蓋,結果失敗!!
Re: 求教DRUPAL資料庫備份問題
我說的方法2也就是PHPmyadmin的備份方法
可是它轉出時是沒有檔案大小之限制,但是導入時,卻有2MB的限制
導致資料庫較大時將無法匯入!是否有改進之方法呢?感謝教導一下
我是使用自己的主機!
Re:
如果無法調校你的匯入環境時,可以把匯入檔切割小一點,再一個一個匯入.
PhpMyadmin 有介紹 http://www.phpmyadmin.net/documentation/#faq1_16
可以用這個 BigDump 工具來做 http://www.ozerov.de/bigdump.php
建議先在本機測看看,再丟到線上跑的網站!
再不然就用比較強悍的 Editor 把 sql 檔慢慢切割。
Re: 求教DRUPAL資料庫備份問題
請問BIGDUMP的的匯入順序如何
它可用於不同電腦嗎?
小弟剛剛隨便用了Joomla來測試
1.當1次安裝joomla時已phpmyadmin匯出資料庫,在未刪除該資料庫再度匯入,成功
2.新增一些文章時,再度匯出資料庫,利用phpmyadmin刪除資料庫,刪除joomla資料夾,重新安裝joomla後,在以bigdump匯入在杜蕙出的資料庫,失敗!
請問,這樣的作法瑕疵在哪裡,應該如何改進?
Re: 求教DRUPAL資料庫備份問題
小弟再度以phpmyadmin轉入該資料庫時,發生相同錯誤如下
Re: 求教DRUPAL資料庫備份問題
joomla 是為什麼失敗?
什麼error?
如果我沒有記錯,
joomla 的 mysql 內是有一些有關伺服器的資料
比如 url, database name 之類
我一般先重裝
再只匯入content , comment 等內容的部分
Joetsui's blog
Re: 求教DRUPAL資料庫備份問題
already exists 是指你的database 內己經有一個jos_banner 的表
刪除就可以了
Joetsui's blog
Re: 求教DRUPAL資料庫備份問題
那是在我安裝完PHP程式後就有的表格
即使刪除他,其他表依然會有相同情形
直接問好了,請問前輩
當您的資料庫發生嚴重錯誤,或硬碟掛掉時,很幸運的,您剛好有備份在手邊
現在SEVER也安裝完畢,
從安裝開始,您的復元程序為何,事先安裝PHP程式還是先匯入備份?諸如此類的順序,您是如何做的呢?
Re: 求教DRUPAL資料庫備份問題
不知道前輩是否用過GHOST的方式復原電腦過,如果用GHOST的可以完全復原資料庫的使用嗎?
GHOST可否僅針對某資料夾進行鏡射復原?
Re: 求教DRUPAL資料庫備份問題
我也一樣有用appserv測試...
如果是window的備分... 直接copy MySQL/data/ 裡的資料夾...
一個資料夾表示一個資料庫...
這個方式原則上是可行的,我在自己的電腦備份過幾次,都是正常。也有過把整個資料夾copy到Linux上面,最後也run起來了。
差別是在於,copy到Linux後... owner會跑掉,所以要把檔案的owner改過來... 其它就沒有問題。
不能跑的可能,也許是因為MySQL的版本不同吧!
5.x 的資料在4.x版的讀不到(這很正常吧!!),至於4.x版的資料,在5.x版應該是讀得到。
我前幾天才把我的appserv升級(不過是2.4.x版的,還不想更新到PHP 5),實際跑的結果,新的MySQL 5讀得到我舊的4.x版的資料。
我之前測試用而放在資料庫裡的資料... 一個都沒少的可以讓我正常使用。
原來因為appserv太舊... Drupal 一中文化完就掛點,升級完後就正常了。
我建議,使用方法1,用改目錄名稱的方式,比你到目錄下copy所有檔案保險得多。(天知道會不會有隱藏檔或其它漏copy到的)
另外,我曾經拿到過全是裡面檔案資料... 一個資料表至少3個檔案,同一個主檔名。最後我也是把它丟到自己弄的一個目錄下統統開出來。
所以,方式1是絕對可行的.....
方法2... 因為的檔案大小限制... 有點麻煩... 不過會改設定就沒差。
方法3... 實作經驗太少回答不了,不好意思...
Re:
對了... phpMyAdmin滙出的時候,有選項可以把舊的砍掉,或是update。仔細找找一定可以找得到。
另外也有for舊版mysql的語法選項,總之... 就是慢慢把選項看完(反正都是中文),可以發現很多有用的東西。
不然的話.... 其實喔.... MySQL也有軟體喔!! (昨天爬網偶然發現的)
沒看到要收費... 應該是免費的吧!!
官網下載頁面
有綠色版本(不用安裝解壓縮就能用),可以抓下來試試看。
裡面還強到可以看連線,負載..... 很多功能,我的功力太低,看到也不知道那是幹嘛用的,只知道對分析很有用...
不過缺點是英文的。
Re: 求教DRUPAL資料庫備份問題
使用phpmyadmin會有匯入的限制,我有查到一些資料你可以參考看看
1.如何修改phpmyadmin匯入sql的限制
2.phpMyAdmin 匯入資料後變成亂碼
3. PHPMyAdmin匯入備份檔與mbstring 編碼模組的問題
Re:
您實作的經驗真是多!我要慢慢參考一番
相當有幫助
不過我因為有做過後台直接COPY(直接複製資料夾),但是是失敗的
我想請教一下,您重灌的順序如何,是先安裝DRUPAL程式?還是先匯入備份資料庫
還有以下這一段我不是很清楚您的意思
Re: 求教DRUPAL資料庫備份問題
先匯入備份資料庫
接著不用安裝drupal 了, 如果路徑相同
Joetsui's blog
Re: 求教DRUPAL資料庫備份問題
我有測試成功了
我是先安裝DRUPAL後,利用phpmyadmin刪除drupal,在匯入備份下來的資料庫,就成功了
比較不一樣的,就是我是用命令列導入的
即開啟命令提示字元-->輸入:mysql 備份資料庫名稱.sql -u root -p < backup_data.sql
然後會問資料庫使用者密碼,輸入密碼後ㄧ段時間及完成!
謝謝以上前輩們的指導,感謝
Re: 求教DRUPAL資料庫備份問題
直接備份 database 的資料夾,這種方式只能用於相同版本 (有時版本相差不大時也可以) 的 mysql 才行,版本不同的情況下,使用這種備份方法的話,就等著發出擾人的狼嚎吧 ^_^
再說,若是在你備份的同時,有人也正在寫入資料庫呢??這樣子的備份就不太具有什麼意義了。
所以要備份時,還得先將 table 鎖住,不讓他人能夠寫入(但可讀取),然後利用 mysqldump 將資料庫或想備份的資料表給匯出來會較好喲。
我是在 FreeBSD 系統下利用 cron 於每天淩晨 4 點過後,人數較少時進行自動備份,底下是我的 shell script,有需要的人可以參考看看!!
匯出︰backup.sh
#!/bin/sh
if [ -z $1 ];then
echo "You must give me the database name!"
echo "exp: $0 drupal"
exit 1
fi
FOLDER=/home/ruixin/backup_sql
# FOLDER = /你要放置備份檔的所在目錄,需使用絕對路徑。
BACKUP_DAY=`date +%Y%m%d`
BACKUP_FILE=drupal_$BACKUP_DAY
DOLD="+30d"
/usr/local/bin/mysqladmin -uyourname -pyourpassword flush-logs
/usr/local/bin/mysqldump -uyourname -pyourpassword --opt $1 > $FOLDER/$BACKUP_FILE.sql
# 別忘了修改 mysql 的登入使用者帳號與登入密碼哦!
cd $FOLDER
/usr/bin/tar jcvf $BACKUP_FILE.bz2 $BACKUP_FILE.sql
/usr/bin/find $FOLDER -mtime $DOLD -delete
# 這行於 Linux 系統可能會無法正確執行,其目的是刪除已超過 30 天的備份檔。
rm -rf $BACKUP_FILE.sql
cd -
匯入︰restore.sh
#!/bin/sh
check () {
if [ $# -gt 0 ];then
case "$1" in
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
if [ $2 ];then
DBF=$2
else
echo "use $0 date database_name. exp: $0 `date +%Y%m%d` drupal"
exit 1
fi
;;
*)
echo "use $0 date database_name. exp: $0 `date +%Y%m%d` drupal"
exit 1
;;
esac
else
echo "Use $0 date database_name. exp: $0 `date +%Y%m%d` drupal"
exit 1
fi
}
check $1 $2
FILE_NAME=drupal_$1
cd /home/ruixin/backup_sql
tar vxjf $FILE_NAME.bz2
mysql -uyourname -pyourpassword $DBF < $FILE_NAME.sql
# 同樣的,別忘了修改 mysql 的登入帳號與登入密碼。
rm -rf $FILE_NAME.sql
cd -
crontab
#minute hour mday month wday command
35 4 * * * /real/path/backup.sh
最後,別忘了將 backup.sh 和 restore.sh 給予執行的權限喲︰
chmod 700 backup.sh restore.sh
有人可能會質疑說將密碼寫出來不是很危險嗎?只要查看一下歷史指令不就全都露了??
其實 history 只記錄在登入系統後的母 shell 所下的指令,所以在 history 是看不到任何與密碼有關的記錄的,而且這兒是利用 crontab 來執行的,而 history 是不會記錄利用 crontab 所執行的任何指令的。
Re: 求教DRUPAL資料庫備份問題
除非自己在玩(或是惡搞),不然應該沒有人會想把資料備份到不同的MySQL版本吧!!(換個角度來看... 這根本不叫作"備份")
因為我測試上的需要,所以要換個appserv的版本來試,但是又不想放棄舊的資料庫裡的資料。所以才會把它們全都copy出來倒進去試看看。
當然不成功的話,還是得灌回原來的系統去把資料叫回來。沒有遇到狀況,老實說我也覺得滿意外的,因為是事後才發現MySQL版本不同。
回答下原po者對於我回應其中一句話。
一個目錄底下可能有隱藏檔,所以copy的時候可能會"漏選",所以直接以移動(或copy)目錄的方式,比較能保證目錄裡的內容都被copy到。
假設.... 今天我備份一個叫作"data"的目錄。今天要還原回之前備份的情形。我會先rename原來的"data"目錄,再把備份的資料夾copy進來。
這個其實不是什麼很特別的技巧,很多地方都可以用到,相信很多人都知道這種作法。
像是Drupal安裝的時候有個table prefix,原來的預設是可以在同一個資料庫放一個以上的Drupal站。當你知道怎麼設定,也可以作為備分的用途,改個prefix設定就可以讓整個站"跳到某個版本"。有時候這種作法很好用,因為rename總是會比copy一堆檔案來得快。
Re:
我知道您的意思了,原來COPY還有這樣的學問!
感謝您如此詳盡的敘述