[url=http://natishalom.typepad.com/nati_shaloms_blog/2009/11/why-existing-databases-rac-are-so-breakable.html]Why Existing Databases (RAC) are So Breakable![/url]
核心观点:数据库之所以不可靠是因为磁盘不可靠。而数据库RAC可靠的前提是建立在磁盘非常可靠的基础上的。
该文认为磁盘不可靠的理由:
[list=1]
[*]实际的每年磁盘出错率是3%,而不是大多数人认为的0.5-0.9%,两者相差6倍多;
[*]磁盘出错率与磁盘类型无关,无论SCSI还是SATA,因此所谓的高端磁盘设备并不能保证一定比普通磁盘可靠更多;RAID呢,该文引用[url=http://twitter.com/johndmitchell]John Mitchell[/url]的[url=http://qconsf.com/sf2009/presentation/Designing+a+Scalable+Twitter+-+Patterns+for+Designing+Scalable+Real-Time+Web+Applications]观点[/url],认为既然RAID的磁盘都是在同一个“盒子”里(它们有着相同的存储模型、有着相同的数据负载并共享同一个电源,处于相同的温度),如果其中某块磁盘因为某种原因坏了,那么其它磁盘以同样的原因坏掉的可能性也很高
[*]温度越高的硬盘反而比温度硬盘出错率低。DIY的同学小心了,降温的时候最好绕开硬盘直接给CPU降温。
[/list]
结论:磁盘出错是不可避免的,因此数据库的设计要针对这一点。Amazon负责S3的资深工程师[url=http://qconsf.com/sf2009/speaker/Jason+McHugh]Jason McHugh[/url]在[url=http://qconsf.com/sf2009/file?path=/qcon-sanfran-2009/slides/JasonMcHugh_AmazonS3ArchitectingForResiliencyInTheFaceOfFailures.pdf]他的演讲Amazon S3: Architecting For Resieliency In The Face Of Failures[/url]中也提到Amazon的Simple Storage的设计:不要试图阻止错误的发生,应该假设错误是不可避免的,然后针对这一点进行设计:容错而不是免错。
有趣的是TC的作者Mikio Hirabayashi在[url=http://1978th.net/tech-en/promenade.cgi?id=6]Is it Really Durable?[/url]一文中也有类似的结论,他在日本最大的网站之一mixi.jp工作,负责数据存储部分,该网站写的吞吐量超过 10,000 QPS,最常见的数据库当掉的原因是硬件故障(尤其是磁盘故障和RAID控制器故障)引起的,他们的解决方案是数据复制:每个数据库服务器至少有一个从数据库服务器,因此每份数据只是复制在两个地方,一个坏掉就替换为新服务器,相应的数据也复制到新服务器上。
耸人听闻的是该文“指出”:内存比磁盘要可靠
作者认为对于单个机器,内存确实是不可靠的,但是如果将数据的多个分布到一个机群中时,情况不同了。作者还引用[url=http://www.infoq.com/news/2008/06/ram-is-disk]RAM is the new disk[/url]。
作者在GigaSpaces/Cisco工作,正在为[url=http://www.cisco.com/en/US/netsol/ns944/index.html]Cisco UCS[/url]做相关的实验,据说实验结果比较鼓舞人心。
其他参考资料:
http://gashero.iteye.com/blog/416720
核心观点:数据库之所以不可靠是因为磁盘不可靠。而数据库RAC可靠的前提是建立在磁盘非常可靠的基础上的。
该文认为磁盘不可靠的理由:
[list=1]
[*]实际的每年磁盘出错率是3%,而不是大多数人认为的0.5-0.9%,两者相差6倍多;
[*]磁盘出错率与磁盘类型无关,无论SCSI还是SATA,因此所谓的高端磁盘设备并不能保证一定比普通磁盘可靠更多;RAID呢,该文引用[url=http://twitter.com/johndmitchell]John Mitchell[/url]的[url=http://qconsf.com/sf2009/presentation/Designing+a+Scalable+Twitter+-+Patterns+for+Designing+Scalable+Real-Time+Web+Applications]观点[/url],认为既然RAID的磁盘都是在同一个“盒子”里(它们有着相同的存储模型、有着相同的数据负载并共享同一个电源,处于相同的温度),如果其中某块磁盘因为某种原因坏了,那么其它磁盘以同样的原因坏掉的可能性也很高
[*]温度越高的硬盘反而比温度硬盘出错率低。DIY的同学小心了,降温的时候最好绕开硬盘直接给CPU降温。
[/list]
结论:磁盘出错是不可避免的,因此数据库的设计要针对这一点。Amazon负责S3的资深工程师[url=http://qconsf.com/sf2009/speaker/Jason+McHugh]Jason McHugh[/url]在[url=http://qconsf.com/sf2009/file?path=/qcon-sanfran-2009/slides/JasonMcHugh_AmazonS3ArchitectingForResiliencyInTheFaceOfFailures.pdf]他的演讲Amazon S3: Architecting For Resieliency In The Face Of Failures[/url]中也提到Amazon的Simple Storage的设计:不要试图阻止错误的发生,应该假设错误是不可避免的,然后针对这一点进行设计:容错而不是免错。
有趣的是TC的作者Mikio Hirabayashi在[url=http://1978th.net/tech-en/promenade.cgi?id=6]Is it Really Durable?[/url]一文中也有类似的结论,他在日本最大的网站之一mixi.jp工作,负责数据存储部分,该网站写的吞吐量超过 10,000 QPS,最常见的数据库当掉的原因是硬件故障(尤其是磁盘故障和RAID控制器故障)引起的,他们的解决方案是数据复制:每个数据库服务器至少有一个从数据库服务器,因此每份数据只是复制在两个地方,一个坏掉就替换为新服务器,相应的数据也复制到新服务器上。
耸人听闻的是该文“指出”:内存比磁盘要可靠
作者认为对于单个机器,内存确实是不可靠的,但是如果将数据的多个分布到一个机群中时,情况不同了。作者还引用[url=http://www.infoq.com/news/2008/06/ram-is-disk]RAM is the new disk[/url]。
作者在GigaSpaces/Cisco工作,正在为[url=http://www.cisco.com/en/US/netsol/ns944/index.html]Cisco UCS[/url]做相关的实验,据说实验结果比较鼓舞人心。
其他参考资料:
http://gashero.iteye.com/blog/416720