博客
关于我
云计算之路:数据库服务器的选择——舍RDS取云服务器
阅读量:417 次
发布时间:2019-03-06

本文共 1415 字,大约阅读时间需要 4 分钟。

云计算之路系列博文分享的是我们将网站从IDC机房迁移至云计算平台(阿里云)的实际经历,目前处于准备阶段,这次分享的是我们选择数据库服务器面临的权衡与取舍。

在阿里云上,数据库服务器有两个选择:云服务器与RDS(关系型数据库服务)。这两者的主要区别是什么呢?

可以这样理解,选择云服务器就如同租用毛坯房,你得自己装修、自己置家具、自己打扫。而选择RDS则如同住五星级酒店。

云服务器是运行在集群上的虚拟机,阿里云采用的是Xen虚拟化技术。云服务器使用的是SATA硬盘,而主流的服务器通常使用SAS硬盘。SATA硬盘通过网络存储集群实现,每次写入数据时会同时保存三份,从而在性能上换取可靠性。阿里云客服提供的数据显示,云服务器的写速度一般为15MB/s,读速度为70MB/s,IOPS在500~700之间。硬盘写入速度是云服务器的硬伤,也是成本低的主要原因。

RDS(关系型数据库服务)则是跑在物理服务器上的数据库实例。以SQL Server为例,阿里云会在物理服务器上预装好SQL Server,并将其中一个SQL Server数据库实例出租,限定该实例所能使用的硬件资源。物理服务器配置强劲,硬盘性能远高于云服务器,维护也由阿里云的DBA负责。硬盘读写速度快、维护成本低是RDS的优势,但也带来了成本高和资源限制的问题。

最初我们并不知情,后来在尝试将"找找看"索引放在云服务器上建数据库时,发现云服务器的硬盘写入速度较慢。不久后,我们从阿里云客服那了解到RDS的相关信息,得知其硬件性能更优,于是对RDS进行了评估。

如果选择与现有数据库服务器差不多的硬件配置(8G内存、400G硬盘空间),成本为3870元/月,硬盘性能确实会比现有数据库服务器高,但存在以下限制:

  • 无法远程控制数据库服务器,只能通过SQL Server管理工具进行连接。
  • 一个数据库实例支持的数据库数量有限(约7个)。
  • SQL Server版本仅限2008版本。
  • 数据库最大连接数有限制(此配置为800)。
  • 这些限制虽然存在,但总体上RDS的选择还是有吸引力。于是我们决定使用RDS,接下来便需要考虑如何将数据迁移至RDS上。

    阿里云平台仅提供一种迁移方案:导出目标数据库的生成脚本(详见),适用于数据文件总大小在10G以内的场景。然而,我们的一个数据库数据文件却有70G之大。对此,阿里云客服建议仍然采用适用于10G以下数据文件的导出脚本。对于70G的数据库,导出脚本后再将其大文件导入到远程数据库,经验尚浅,这个过程让人略感头疼。

    这个经历让我们对RDS产生了一些不满,甚至一度给了阿里云客服一个差评。经历了这次"气愤事件"后,我们并未陷入困境,反而促使我们重新思考:是否必须使用RDS?

    进一步计算发现,购买RDS的费用远高于云服务器配置。例如,8G内存的RDS成本为3870元/月,而顶级配置的云服务器(8核CPU、32G内存)仅需2779元/月,相比之下节省约1000元/月。云服务器虽然硬盘性能稍逊一筹,但内存资源丰富,足以弥补性能差距。此外,云服务器还提供Memcached和NoSQL等级别缓存,可帮助减轻数据库压力。

    基于以上考虑,我们决定先采用云服务器作为数据库服务器,若性能仍不足再考虑迁移至RDS。此外,可以将数据库分布至多台云服务器上运行,进一步提升性能和可用性。

    这就是我们的选择——暂时选择云服务器而非RDS。先够用,没用再说。

    转载地址:http://fehkz.baihongyu.com/

    你可能感兴趣的文章
    NumPy 数组拼接方法-ChatGPT4o作答
    查看>>
    numpy 用法
    查看>>
    Numpy 科学计算库详解
    查看>>
    Numpy.fft.fft和numpy.fft.fftfreq有什么不同
    查看>>
    numpy.linalg.norm(求范数)
    查看>>
    Numpy.ndarray对象不可调用
    查看>>
    Numpy.VisibleDeproationWarning:从不整齐的嵌套序列创建ndarray
    查看>>
    Numpy:按多个条件过滤行?
    查看>>
    Numpy:条件总和
    查看>>
    numpy、cv2等操作图片基本操作
    查看>>
    numpy中的argsort的用法
    查看>>
    NumPy中的精度:比较数字时的问题
    查看>>
    numpy判断对应位置是否相等,all、any的使用
    查看>>
    Numpy多项式.Polynomial.fit()给出的系数与多项式.Polyfit()不同
    查看>>
    Numpy如何使用np.umprod重写range函数中i的python
    查看>>
    numpy学习笔记3-array切片
    查看>>
    numpy数组替换其中的值(如1替换为255)
    查看>>
    numpy数组索引-ChatGPT4o作答
    查看>>
    numpy最大值和最大值索引
    查看>>
    NUMPY矢量化np.prod不能构造具有超过32个操作数的ufunc
    查看>>