【发布时间】:2016-11-29 20:48:18
【问题描述】:
我们有 6 台服务器(4 台应用服务器和 2 台数据库服务器)
我们正在使用 HAProxy 在应用程序和 API 服务器之间进行负载平衡 (2/2)
现在我遇到的问题是系统管理员在 MySQL 上设置了主/从,但它总是失败,直到现在我们无法使用从属,因为大多数数据总是损坏,我们总是需要修复它,每个时间我们得到不同的错误。
我们尝试为读/写(在 master 上写入,在 slave 上读取)进行某种负载平衡,但我们无法使用它,因为 slave 数据并不总是正确的。
我想知道的是,在处理高负载服务器时,您总是需要数据准确且不能冒任何风险,大佬们是如何处理的?
谁能告诉我他自己的经历和他用的什么?
我发现了什么:Percona XtraDB Cluster,但在进入这个方向之前需要输入...
谢谢!!
【问题讨论】:
-
如果应用程序数据模型很简单,您可以考虑使用数据库分片,但这样做时要小心,有时问题会更大,因为您需要在业务逻辑中处理所有这些分片。
-
“它总是失败,直到现在我们无法使用从属服务器,因为大多数数据总是被破坏” 如果是这样,那么它的设置不正确。正确设置后,MySQL 复制可以正常工作。
-
@Michael-sqlbot 我同意,但我们总是遇到错误,例如查询时出现错误“表 'xxxxx' 已满”。默认数据库:'xxxxx'。查询:'ALTER TABLE
xxxxx
ADD INDEXIX_fill_empty_xxx_cron
(type_id
,e_id
,model_id
) 所以在我们 100% 完成之前,奴隶不会崩溃,我们不能使用那个东西 -
您可以根据需要从自动化系统中安全地发出查询
SHOW SLAVE STATUS;
,以主动监控复制并更快地发现问题。这个例子表明从服务器没有足够的磁盘空间。通常,从属服务器需要与主服务器相同或更多或所有的东西——磁盘大小、I/O 性能、CPU 内核速度(尽管更少的 CPU 内核可能没问题)——并且运行相同或稍有较新的 版本的 MySQL 本身。我怀疑深入了解根本问题最终对你来说比改变策略更好。 -
@Michael-sqlbot 他们具有完全相同的规格。 ,我认为这是导致问题的混乱配置。
标签: mysql load-balancing haproxy master-slave database-cluster