【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独家特稿,转载请注明原文作者和出处。】
【编辑推荐】