MySQL数据库 - 容量规划困境,请咨询

时间:2015-01-21 12:56:53

标签: php mysql crystal-reports cron report

我有一个MySQL托管和容量规划问题。我想知道托管下面描述的类型和大小的MySQL数据库的最低托管要求:

背景:我在金融行业有一位客户购买了一个用PHP编写的带有MySQL数据库的定制软件CMS平台。

他们当前的解决方案没有任何报告,提供它的软件供应商只允许他们使用一些PHP页面导出表格的全部内容,然后客户必须在Excel中手动操作以获取他们的业务报告。

  

供应商不允许他们按顺序访问他们的实时数据库   运行Crystal Reports,说这对数据库构成风险,更喜欢购买昂贵的数据库复制解决方案;所以   客户继续执行整个表的繁琐手动输出   每一天。

数据库:数据库目前的大小为90MB,自定义的9个月大的PHP解决方案就位于其上。客户无权访问此服务,因为它由当前供应商托管。总共有43个表,其中一个 - 一个高大的日志表占用了99%的数据库大小。

包含业务数据的前四个表大小是微小的表;

  • 34.62 MB
  • 13.79 MB
  • 8.46 MB
  • 7.59 MB

绝大多数表都是数据值的简单查找表,只有几行。

然而,数据库中最大的表是一个大小为1400MB的大型日志表。仅此表占数据库总大小的99.9%以上。

问题:考虑到解决方案是(尽管日志表)非常小,只有少数工作人员通过一些简单的PHP表单进行数据输入,运行Crystal Reports是否存在实际问题在生产中反对这样的数据库?请记住,白天有时候 - 实际上是大部分时间 - 当这个数据库根本没有被使用时。例如午餐时间和非工作时间。

供应商坚持认为,企业查询实时数据存在根本风险,并且针对此数据库运行Crystal Reports可能会导致“崩溃实时数据库并导致业务丢失操作”。

客户也渴望拥有一个实时仪表板;可以使用非常小的SQL查询编写,以汇总上面列出的那些小表中的一些数字。

我通常使用SQL Server和Oracle,我绝对没有任何关于允许Crystal Report或运行视图来使用来自实时数据库的实时数据填充UI的问题 - 尤其是这么小的数据库;毕竟什么是数据库,如果一个人不能一次又一次地从中选择?

是否有必要避免“挂起服务器”并“避免在服务器上发生其他操作时查询”,将此MySQL数据库复制到第二个报告数据库?根据我的经验,这样做的需要仅适用于敏感,安全风险或具有高交易量的数据库。

系统使用情况:系统每半小时严重依赖计划的CRON作业。每周可能有500个用户登录并输入一些数据(但数据不多 - 参见上面的表格大小)。

热烈欢迎任何评论。

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

1)您需要2台5美元的数字海洋服务器。

2)“崩溃实时数据库,业务失败”。绝对是假的。他们是白痴。他们可能隐藏的是他们的数据库结构不佳。他们可能只有1个表架构,所有客户端只与client_id分离。访问该表可以访问所有客户端数据,这就是他们强制使用巨型复制解决方案的原因,这样他们就可以确保您只获取数据。

3)是否有必要避免“挂起服务器”并“避免在服务器上发生其他操作时查询”?是的。

4)将这个MySQL数据库复制到第二个报告数据库?是的,这是一个很好的做法,因为您可以在发生最坏情况时设置故障转移。如果你真的很偏执,你可以设置来自不同公司的远程故障转移。看到这在金融领域是怎样的,我很确定你想要那个。

5)根据我的经验,执行此操作的需要仅适用于敏感,安全风险或具有高事务量的数据库。根据我的经验,备份数据总是好的,因为生活中会发生这种情况,通常是在你最不期望的时候。

至于你的实时使用情况。假设数据库使用索引正确构建并使用InnoDB,您应该每秒支持100个请求的最小问题,因此我认为您每周500个用户的问题是不用担心的。

就像我之前提到的那样,你可能想要的是不同提供商的2台服务器,可能是你可以获得的最便宜的实例,因为你不需要大量的空间或资源。您可以设置DNS以使1成为主服务器,将1设置为复制从服务器,然后在灾难情形中更改DNS并使另一个成为主服务器。

我希望这会有所帮助。