我运行的网站stream量激增,因为这种情况下,自动缩放解决scheme是非常有利可图的。 目前Web服务器能够水平自动扩展,但瓶颈在MySQL服务器上。
有什么build议么? 先谢谢你
实际上,更简单的解决scheme是尝试将Memcached添加到您的堆栈以节省数据库负载。 这可以大大节省负载,而且比解决快速站立服务器(低难度)的问题简单得多,然后快速地findMySQL同步(难度要高得多)。
http://toblender.com/?s=memcached
为了解决写入过多的问题,最常见的解决方法是向服务器添加内存(一个较大的工作集可以保存在RAM中),将数据库放在更快的磁盘(SSD是一个很好的解决scheme,但昂贵)或分片(这在额外的服务器和复杂性中是昂贵的)。
减less数据库写入负载的另一种方法是将一个内存数据存储(如Redis)用于处理频繁更改的数据,如果需要,可以定期将更改写回到主数据库。
你应该考虑使用星型拓扑
这是我正在提议的
像这样准备拓扑
步骤01:使用这些常用选项设置5 RSS
[mysqld] skip-innodb key_buffer_size=1G
这将导致所有表被创build为MyISAM存储引擎
步骤02:设置DM和所有RS服务器
tblname ROW_FORMAT=Fixed; 在RSS中的所有表上 tblname ENGINE=BLACKHOLE; 在DM中的所有表格上 步骤03:从DM设置复制到所有5个RSS
步骤04:设置从WM复制到DM
设置结束
这是你的读/写机制的工作原理
现在这里是赶上…
service mysql stop在第五RSS service mysql stop在第五RSS service mysql stop 您可以使用RSS#5重复启动新的服务器
在旁注中,请不要将XEROUND用于WM或DM,因为它们不支持InnoDB或BLACKHOLE存储引擎。
我希望这些想法有所帮助。
如果你使用Innodb,你应该考虑由Galerapipe理的Mysql多主人 。 这使得设置mysql多主机更容易,并且应该使您更容易“半”自动缩放。
如果这是您或您公司正在编写的应用程序,则可以考虑转换为应用程序的分片(分区)devise。 但分片可能会变得复杂。 这是一个让你开始的链接 。
我假设你已经“调整”了mysqlconfiguration文件,如在分配的适当的内存等。
这是在你控制的架子上,还是在云端? 12GB是相对于可用磁盘大小而言非常小的数据库。 将其放置在小型SLC SSD的RAID1或RAID10arrays上,写入延迟将消失。
英特尔311系列20GB SLC固态硬盘 (每个120美元)将做得非常出色。
如果数据库较大,则可以通过将数据库移动到ZFS SAN服务器上的iSCSI目标(使用Nexenta,OpenIndiana,FreeNAS或其他任何types的商用服务器硬件构build)并设置类似SSD的镜像以获得类似的壮观结果你的ZIL写入caching。 除了最特殊的情况之外,千兆以太网已经足够移动数据库iSCSIstream量。