Mysql复制-值得吗


Mysql replication - is it worth it?

复制

我有一个应用程序,它正在从大量数据源中轮询数据。它每天处理数千条记录,而且这个数字还在不断增加。数据存储在Mysql中。

然后我有一个利用这些数据的网站。

我正在努力营造一个考虑到未来的环境。

我想到了mysql复制,这样网站就可以在不同的服务器上使用自己的数据库,并被主数据库上发生的数千条写入命令所困扰。

我很难得到这个设置,尽管mysql报告说一切都很好。

然后我开始思考——难道没有更好的方法吗?据我所知,mysql将写命令作为主数据库发送到从属数据库。

这难道不意味着我试图避免的事情无论如何都会发生吗?这是否意味着从属数据库将遭受数千次写入

我是一个人乐队,用自己的钱做这项事业,所以我需要用最便宜的方式来做。我有点迷路了!

我有一个专用服务器,A vps使用Php5,mysql5在一个灯堆栈中。

我无法开始告诉你我多么希望得到一些指导!

如果从设备是主设备的1:1克隆,则对主设备的所有写入都必须向下传播到从设备。否则,复制将毫无用处。

每天数千条记录实际上是非常小的。假设每个记录的处理时间相同,并记录5000条记录,则每条记录的时间为86400/5000=17.28秒。这是非常小的写入开销。

如果你每天要做数百万条记录,那么你就会遇到写瓶颈。

我将把它分为三层。

  1. 数据馈送层。从提要读取的数据经过预处理并发布到队列中。这个层有一个临时队列,它也是一个临时存储器,一个允许所有数据馈送发布其数据的缓冲区。我会使用消息队列系统。它快速可靠。

  2. 数据存储层。该层从队列中读取,可能以某种方式处理读取的数据,并将数据存储在数据库中。

  3. 数据分析层。这是你的"奴隶"数据库。这是一个数据仓库。它定期执行ETL(提取、转换和加载(数据,从数据存储层到这个辅助数据库。

这种分层方法允许您隔离关注点(速度、可靠性、安全性(和实现细节;并允许未来的可扩展性。

复制就是这个词的字面意思——在另一台机器上复制查询。MySQL创建一个日志,其中包含用于在原始机器(主机(上创建数据集的查询,并将其发送给读取日志并重新执行这些查询的从机。

基本上,你想要的是提高你的写作比例。这可以通过使用不同的引擎来实现,例如TokuDB就是其中之一(但它不是免费的,但你可以免费存储50gb的用户数据并使用它(。

您(目前(想要的是快速HDD子系统,而不是单片可写可扩展存储系统。InnoDB能够在具有足够硬件的正确配置的机器上每秒实现大量查询。我不确定定价,但SSD和4-8 GB的ram不应该太贵。作为马克。B说,在每天达到数百万条记录之前,您不必担心通过复制扩展读写。

你说你有一个应用程序从数据源"轮询"你的数据。这是否意味着你正在进行全文搜索?我在这里假设您正在批量处理日期提要,然后查询它。如果是这样的话,我会把你所有的全文查询都卸载到类似Solr的东西上。事实上,设置并不太耗时,这取决于数据库的大小,你可以在一个相当小的VPS或专用的VPS上运行它,但最好的区别是搜索速度令人难以置信。我在solr中用不到一秒钟的时间完成了需要20分钟才能运行的全文mysql查询。

只要确保在solr实例发生故障时使用try语句即可。