精華資料整理:服務(wù)器遷移經(jīng)驗談
原創(chuàng)【51CTO精選編譯】有關(guān)服務(wù)器遷移,一般的實際需求是怎樣的?遷移過程中常見的問題又有哪些?以下內(nèi)容采集編譯自Server Fault網(wǎng)站有關(guān)migration詞條的FAQs,整理了有關(guān)服務(wù)器遷移方面的常見問題。
遷移單臺服務(wù)器需要注意什么?
Q:我有臺Ubuntu Server 9.04,跑著web,數(shù)據(jù)庫和mail,整個硬盤有5GB數(shù)據(jù)。打算換臺好機子,但是我沒做過遷移,能不能給些入門指導?
A:首先,備份所有的東東,并在新機子上恢復。這包括:
1、所有的數(shù)據(jù)庫dump出來,在新機子上restore
2、webserver、數(shù)據(jù)庫、email的配置文件復制過去
當然,免不了會有些停機時間。想減少停機時間,還有幾個建議:
1、遷移前先對所有email數(shù)據(jù)做一次rsync,在所有都配置、測試完畢之后,將舊服務(wù)器上的服務(wù)停掉,僅rsync***的數(shù)據(jù),啟動新服務(wù)器
2、直到切換之前,使用MySQL replication確保兩臺服務(wù)器的數(shù)據(jù)庫內(nèi)容一致
3、rsync可以用于一切數(shù)據(jù),甚至數(shù)據(jù)庫也可以,當然為了避免錯誤,數(shù)據(jù)庫還是使用dump或replication吧。
如果配置文件比較多比較零散,怕出錯的話,建議列一張清單,然后一條一條執(zhí)行。另外,所有的配置文件都應(yīng)該在 /etc 下面,除非沒用軟件包或者安裝了專有軟件的情況才有在 /opt 下面的。
如何把用戶賬戶遷移到新的Linux機器?
Q:我們有個內(nèi)部Subversion庫運行在Linux機子上,Ubuntu 8,通過svn+ssh驗證方式登錄。最近入手了臺新機子,也裝了Linux,Ubuntu 9,用RAID 1+0配置了更大磁盤空間,所以想把Subversion庫遷移過去。
我怎么把所有的user,group和文件信息都遷移過去?我打算把 /etc/passwd 和 /etc/group 以及所有 /home 下的用戶目錄都復制過去,這樣就可以了么?
A:你需要復制的內(nèi)容包括:
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/var/spool/mail
/home
詳細情況可參考本篇文章。
A:用戶不多的話,直接useradd(定義同樣的uid和gid)會比較快一些。
另外,在新機子上創(chuàng)建號用戶之后,記得將老機子上的登錄禁止掉,并用rsync把用戶的home目錄同步過來。遷移完畢之后,重置一下密碼即可。
之所以要避免復制 /etc/passwd 和 /etc/group ,是防止你把機子搞亂之后自己(或root)登錄不進去了。而去如果發(fā)行版不同,對這些文件的解讀也會有區(qū)別,所以要謹慎。一個不小心,可能會開放了guest登錄,或?qū)е缕渌踩珕栴}。當然了,雖然說復制密碼文件要謹慎,但是也不用過于神經(jīng)質(zhì)。
從Apache遷移到Nginx好嗎?有什么經(jīng)驗分享?
Q:我目前使用Apache的以下模塊:多個虛擬主機,Server Side Include,以及FastCGI,想問問各位有關(guān)遷移到Nginx的問題。大家有什么經(jīng)驗分享,比如遷移過程中的問題,遷移之后有沒有好處,nginx上有用的模塊等?
A:我個人經(jīng)驗而言是值得的。比如我有個Magento搭建的電子商務(wù)站(大家都知道Magento是很慢的)。遷移到nginx+php-fcgi/php-fpm+apc之后,我這邊的性能提高了100%。所以,除非Apache上有必要的模塊,否則我推薦Nginx。具體情況可以參考我的Magento調(diào)優(yōu)筆記。
A:你要的這三個模塊:多個虛擬主機,SSI,還有FastCGI,Nginx都支持。我這邊同時應(yīng)用Lighttpd,Apache和Nginx。無法徹底拋棄Apache,是因為我們需要運行一些自定義模塊(包含一個改良版mod_pubcookie),而這些功能很難遷移到Lighttpd/Nginx上。
我用Lighttpd做輕量內(nèi)容服務(wù)器,但是它在FreeBSD上的表現(xiàn)不是很好(尤其是使用FreeBSD的sendfile / kqueue syscalls 的時候Lighttpd會死掉,還連帶著把整個服務(wù)器也弄宕機)。而Nginx方面我就沒遇到過任何問題。所以我正在用Nginx替換掉所有的Lighttpd。
如何快速遷移MySQL?
Q:我有大概40來個中小規(guī)模的MySQL數(shù)據(jù)庫,需要把它們從一個whm服務(wù)器的數(shù)個cpanel帳號遷移到另一個服務(wù)器上。我本來的想法是手動一個一個dump然后import,但是很費時間,有什么更快的辦法么?
A:能用ssh的話,我知道一個很快的方法:mysqldump配合幾個參數(shù),并和ssh鏈起來使用。這樣可以讓源數(shù)據(jù)庫一邊不中斷的輸出,目標數(shù)據(jù)庫一邊不中斷的導入,而去也不會用到任何臨時文件:)
源服務(wù)器# mysqldump --user=user1 --all-databases | ssh 目標服務(wù)器 'mysql --user=user2'
如果你在源服務(wù)器上使用你的私人密鑰和ssh-agent驗證過,就可以使用ssh的-A參數(shù)來建立連接,就不用被目標服務(wù)器的驗證信息煩來煩去了。當然,Agent forwarding有安全隱患,要謹慎使用。
Q:我的MySQL備份文件怎么在SQL Server 2008里恢復?
A:你不能在SQL Server 2008里自動restore一個MySQL的備份文件。你可以寫一個轉(zhuǎn)換腳本,或者使用微軟提供的DTS等工具。
服務(wù)器配置如何遷移?
Q:我有臺Debian Lenny服務(wù)器,慢得很,所以最近買了臺新機子,想要將整個Debian配置——包括用戶賬戶、路徑、安裝的軟件等——遷移過去。有什么比較快速的做法推薦?
A:網(wǎng)絡(luò)安全而給力的話,netcat配合tar是***的方式。具體執(zhí)行方法參考這篇文章。不要忘記用live distro重啟服務(wù)器,chroot進系統(tǒng)重裝一下MBR。如果用ACL的話,也不要忘記使用bsdtar。
A:Puppet或Cfengine這樣的配置管理工具會比較簡單些。如果之前做過部署,那么只要應(yīng)用相同的classes就能讓它自動部署你的配置。就算沒做過,現(xiàn)在開始也不晚,給puppet做下描述,在原機子上應(yīng)用檢查一下,再應(yīng)用到新機子上,這樣以后就可以隨時建立同樣配置的新服務(wù)器了。雖然***次使用puppet做配置會更加費時間,但長遠來看,絕對是更加節(jié)省時間的。
A:直接把整臺機器rsync過去。
虛擬機實時遷移的相關(guān)問題?
Q:以前一直以為AMD和英特爾服務(wù)器之間是沒有虛擬系統(tǒng)支持實時遷移的,直到今天才從KVM FAQ上看到KVM是支持這個實時遷移,而去2008年就有案例的。現(xiàn)在2011年了,想問一下現(xiàn)在有哪些主流的虛擬系統(tǒng)(ESXi,Xen,Hyper-V等)支持AMD和英特爾服務(wù)器之間的實時遷移的?
A:ESX/ESXi的話,可以通過一系列“高級配置”和VM CPU-bit設(shè)置實現(xiàn)AMD和英特爾之間的vmotion——不過,這樣造成的問題比它帶來的便利要多得多。
ESX/ESXi之所以不默認允許跨CPU架構(gòu)的實時遷移,因為不同的CPU家族的能力各有不同。比如一個現(xiàn)代的英特爾CPU上跑著一個使用了SSE4.2指令的實例,那么你把它vMotion到一個不支持該指令的CPU上,實例就會崩潰。
解決方法之一是設(shè)定一個“***公約數(shù)”,即在一個集群中,采用最爛的CPU來設(shè)定VM的運行方式,忽略那些新CPU里面的各種功能和指令。
【51CTO.com獨家特稿,轉(zhuǎn)載請注明原文作者和出處。】
【編輯推薦】





















