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