MySQL 负载平衡

MySQL Load Balancing

我们有 6 台服务器(4 台应用程序服务器和 2 台数据库服务器)

我们正在使用 HAProxy 在应用程序和 API 服务器之间进行负载平衡 (2/2)

现在我遇到的问题是系统管理员在 MySQL 上设置了一个 Master/Slave 但它总是失败,直到现在我们无法使用从站,因为大多数数据总是损坏并且我们总是需要修复它,每次我们都会遇到不同的错误。

我们试图为 read/write 进行某种负载平衡(在主机上写入,在从机上读取)但是我们无法使用它,因为从机数据并不总是正确的。

我想知道的是,在处理高负载服务器时,您总是需要数据准确并且不能冒任何风险,大佬们是如何处理的?

谁能告诉我他自己的经验和他用过的东西吗?

我发现了什么:Percona XtraDB Cluster,但在进入这个方向之前需要输入...

谢谢!!

您可以选择MySQL/MariaDB+ Percona + HAproxy。这种组合支持主-主同步和数据同步工作得很好。大多数实时数据同步都存在主键和外键问题。您也可以使用 Percona 避免这些问题。加油,祝你好运

获取亚马逊 ec2。您可以即时启动 4 个应用程序服务器和 2 个数据库服务器,并使用 aws 工程功能设置负载平衡。

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-getting-started.html#define-load-balancer

https://aws.amazon.com/articles/1639

"table is full" 错误意味着您的从站没有足够的 space 来执行 ALTER TABLE。您需要获得更大的磁盘才能解决该错误。

但潜台词是没有人在监视您的数据库服务器,这是一个更大的问题。你需要找一个数据库管理员,或者找一个专业的服务来做。

What I'm wondering is how the big guys proceed when dealing with high load servers where you always need the data to be accurate and cannot take any risk?

首先,请不要相信任何系统都没有风险。如果您打算完全使用该系统,那是不可能的。您无法消除出错的可能性,但您可以做好无缝恢复的准备。

大佬们这样做:

  1. 雇用包括系统管理员、网络管理员、数据库管理员在内的操作人员来管理服务器。

  2. 监控一切。使用软件连续跟踪系统负载、磁盘 space、错误和许多其他事情。最好的选择是 New Relic。对于 MySQL 从属完整性,使用像 pt-table-checksum.

  3. 这样的工具
  4. 冗余。创建备用系统和数据以在主系统发生故障时(而不是如果)接管。

您可能想了解高可用性架构领域。看看这个演讲:Scalable Internet Architectures