我运营的网站流量激增,因此自动扩展解决方案在这种情况下非常有利可图。目前,Web 服务器能够水平自动扩展,但瓶颈在 MySQL 服务器上。
- 我尝试过使用 Amazon RDS Multi-AZ,但 12 GB 数据库升级需要 15 分钟,而且停机时间也只有几分钟。当我已经知道某个特定时刻将发生流量激增时,它就帮了我大忙。
- 我也考虑过 Xeround。这可能是最好的解决方案,尽管对于这种规模的数据库来说,它相当昂贵。无论如何,这不是一个选择,因为法律上我需要数据库位于欧盟。
- 我读过有关 Scalr 的文章,但不确定它是否有用以及如何有用。
- 我看到许多云托管提供商提供垂直扩展解决方案,我认为这种解决方案没有停机时间(不确定这是否真的可行,据我所知他们使用 Xen 虚拟机管理程序)。这可能是一个解决方案,但我想知道它是否没有停机时间,以及 MySQL 配置(以及操作系统上的许多其他东西)如何能够在没有停机时间的情况下升级。
- 我曾尝试使用 MySQL 从属服务器,但根本没有帮助。
- 我正在使用 memcache,它很有帮助,但还不够。我需要因为写入而升级,而不仅仅是因为读取。
有什么建议吗?提前谢谢
答案1
实际上,一个更简单的解决方案是尝试将 Memcached 添加到您的堆栈中以节省数据库负载。这可以大大节省负载,并且比尝试解决快速启动服务器的问题(难度低)然后解决快速 MySQL 同步(难度高得多)要简单得多。
http://toblender.com/?s=memcached
为了解决写入过多的问题,最常见的解决方法是向服务器添加内存(更大的工作集可以保存在 RAM 中),将数据库放在更快的磁盘上(SSD 是一个很好的解决方案,但价格昂贵),或者分片(这在增加服务器和复杂性方面成本高昂)。
减少数据库写入负载的另一种方法是加入内存数据存储(如 Redis)来处理经常变化的数据,并在需要时定期将更改写回主数据库。
答案2
您应该考虑使用星型拓扑
以下是我的建议
- 一位写主 (又名 WM)
- 一分销大师(又名 DM)
- 五 (5) 个读取从属服务器(又名 RSS)
像这样准备拓扑
步骤 01:使用这些常用选项设置 5 RSS
[mysqld]
skip-innodb
key_buffer_size=1G
这将导致所有表都以 MyISAM 存储引擎的形式加载
步骤 02:设置 DM 和所有 RS 服务器
- mysqldump 将 WM 中的所有表的架构转储到 schemadump 文件中
- 将 schemadump 文件加载到 DM 和所有 5 个 RSS
tblname ROW_FORMAT=Fixed;
在 RSS 中的所有表上运行 ALTER TABLEtblname ENGINE=BLACKHOLE;
在 DM 中的所有表上运行 ALTER TABLE- mysqldump 仅将数据(使用 --no-create-info)转储到数据转储
- 在所有 5 个 RSS 中加载数据转储
步骤 03:设置从 DM 到所有 5 个 RSS 的复制
步骤 04:设置从 WM 到 DM 的复制
设置结束
读/写机制的工作原理如下
- 所有写入(插入、更新、删除)都发生在 WM
- SQL 记录在 DM 的二进制日志中(DM 中没有实际数据)
- 每个 RSS 都是 DM 的读取从属
- 您所有的阅读都发生在 RSS
现在问题来了……
- 您最初使用 RSS 1-4 进行阅读
- 使用第 5 个 RSS 来启动其他 RSS
- 你
service mysql stop
在第 5 RSS 上运行 - 启动另一个 RSS
- 将第 5 个 RSS 的 /var/lib/mysql 和 /etc/my.cnf 复制到新启动的 RSS
- 你
service mysql stop
在第 5 RSS 上运行 - 你
service mysql stop
在新的 RSS 上运行
- 你
您可以使用 RSS #5 反复启动新服务器
附注:请不要将 XEROUND 用于 WM 或 DM,因为它们不支持 InnoDB 或 BLACKHOLE 存储引擎。
我希望这些想法能有所帮助。
答案3
答案4
这是在你控制的机架中,还是在云端?12GB 是非常相对于可用磁盘的大小,数据库较小。将其放在小型 SLC SSD 的 RAID1 或 RAID10 阵列上,写入延迟就会消失。
这英特尔 311 系列 20GB SLC SSD(每人 120 美元)就能出色地完成这项工作。
如果数据库更大,您可以通过将数据库移动到 ZFS SAN 服务器上的 iSCSI 目标(使用 Nexenta、OpenIndiana、FreeNAS 或其他产品在商用服务器硬件上构建)并为您的 ZIL 写入缓存设置类似 SSD 的镜像来获得类似的惊人效果。除了最特殊的情况外,千兆以太网足以移动数据库 iSCSI 流量。