相关疑难解决方法(0)

高并发、高写入 DB 的基础架构

我的要求是:

  • 3000 个连接
  • 70-85% 写入与读取

目前,我们将高 CPU 超大实例的连接数最大化为 700。所有 8 个内核都已达到最大值。我们认为这是并发连接数,因为内存很好。写入本身非常简单(验证缓慢)。要扩展到 3000,我们需要转到多台服务器,当前选项:

  • MySQL 分片
  • MongoDB 集群
  • 卡桑德拉
  • Hadoop 和 MySQL(Hadoop 缓存,单个转储到 MySQL)
  • MongoDB & MySQL(我们使用 mongo 代替 Hadoop,用于缓存)

要处理这个数量的连接,有几个问题:

  1. MySQL Sharding 可以处理并发连接吗?
  2. 任何单个主节点都可以处理这些并发连接,还是像 Mongo 这样的多头节点是更好的选择?

如果我没有很好地描述我的问题,我深表歉意。请提问。

mysql replication mongodb cassandra

19
推荐指数
2
解决办法
5967
查看次数

MySQL 复制是否受高延迟互连的影响?

我们有一个位于不同数据中心的vanilla master 和slave MySQL 设置,以及与master 位于同一数据中心的另一个slave。

数据中心之间的带宽相当高(在我们所做的网络基准测试中,我们可以达到 15MB/秒),但存在延迟,约为 28 毫秒。无论如何它都不高,但它比同一数据中心的亚秒延迟要高得多。

有时,我们会在删除从站时遇到严重的滞后(2000 秒甚至更多),而本地从站保持最新。在查看滞后的远程slave时,SQL线程通常会花时间等待IO线程更新中继日志。主人同时显示“等待网络”或类似的东西。

所以这意味着它是网络,但在发生这种情况时我们仍然有免费带宽。

我的问题是:数据中心之间的延迟会影响复制的性能吗?从属 io 线程是否只是流式传输事件直到主节点停止发送它们,还是在事件之间以某种方式池主节点?

mysql replication

11
推荐指数
2
解决办法
6128
查看次数

设置主到多主复制的最佳方法

原始问题: 我有多个服务器都需要充当主服务器,好像一个服务器出现故障,下一个服务器启动并接管。我只是想知道复制的最佳方式是什么。所有服务器都在不同的数据中心。

问题

  • 将每个服务器设置为具有“超级主机”的主主机是否可以?
  • 我会有什么样的冲突?
  • 有没有更好的方法来做到这一点?

更新的问题: 我们在世界各地的不同数据中心都有服务器,每台服务器都需要访问通常位于本地主机上的数据库。

每台服务器都需要能够更新数据库,每台服务器几乎都是其他服务器的镜像。这些都通过一个服务器(超级主机)保持同步,所有服务器都可以与之通信。

所有的服务器只和supermaster 通信,它们不知道任何其他服务器。超级主机本身就是其他服务器的镜像,只是附加了同步所有服务器的服务。

有时supermaster因为各种原因离线;发生这种情况时,其他服务器将照常进行,包括读取和写入数据。当超级主机恢复时,它开始同步过程并整理并解决其他服务器之间的冲突,完成后所有服务器都有数据的镜像并且全部“同步”。

因此,在对这个问题进行更多思考之后,我的问题是;

  • 有没有办法在每个服务器上拥有一个完全相同的单个数据库,而没有一个点可以像星形拓扑那样更新数据库?
  • 对于我的情况,是否有更好的选择来全面复制 mysql?

任何帮助深表感谢。

mysql replication

7
推荐指数
1
解决办法
2万
查看次数

扩展 Percona 数据中心:设置和复制

由于我们的初创公司发展顺利,我们现在遇到了一些您一直认为永远不会影响您的问题。

我们已经扩展了很多应用程序堆栈:我们将临时信息的高读/写表卸载到一个单独的 Percona 服务器,其中表以“Engine=MEMORY”运行,并将其他部分迁移到 cassandra 集群。

现在我们剩下一个“精益”数据库,其中我们的读/写负载为 88%/12%。在这一点上,我有几个问题想得到一些反馈:

1. 读奴隶

通过我们的读/写设置,一些(例如 2-3 个)读从站应该将我们的写主站上的读负载减少到最低限度。read-slave 解决方案的可扩展性如何:如果我们的负载增加一倍/三倍,我们的负载是添加额外的 read slaves 将继续为读取提供足够的容量?我阅读了这篇文章:每个主人的奴隶数量有什么限制?然而,不是出于可扩展性背景,这可能看起来很愚蠢,但这是一个可冻结的解决方案吗?有很多人在推动分片而不是读从解决方案,但是,我现在真的认为我们的读/写负载不需要重写我们应用程序的大部分......有什么想法吗?

2. 多数据中心和复制

此外,我们正在考虑为附近的数据中心提供服务,以减少网络延迟(我们处理不喜欢延迟的移动应用程序)。计划是使用很多提到的半同步。复制(见:这是个好主意,MySQL数据库分成两个服务器,并为MySQL复制的高延迟互连是否受影响?)的主-主复制,其中每个数据中心都有一个主,和多个读的奴隶。同样,天真地,我很想知道在扩展时这是否在“最佳实践”的范围内。

3. 硬件和配置

过去几周我一直忙于对我们的实时系统进行基准测试,我得出的结论是,无论我们为第 1 点和第 2 点选择哪种解决方案,我们当前使用的服务器都不会运行很长时间,是否可以我对我们的设置有一些想法:

CPU: Intel(R) Xeon(R) CPU E31275 @ 3.40GHz mit 8 cores (hyperthreading)
RAM: 16GB
Raid 10 with a strip size of 64 KB and controller cache enabled
Software: Percona 5.5
Database size: 83.7GB
Top 5 Tables:
 21302MB  table1
 7656MB  table2
 5477MB  table3
 4352MB  table4
 3663MB  table5
Run Code Online (Sandbox Code Playgroud)

my.cnf 设置: …

mysql replication percona mysql-5.5 xtradb-cluster

6
推荐指数
1
解决办法
5007
查看次数

将 MySQL DB 拆分为两台服务器是个好主意吗

我有一个 MySQL 数据库服务器,它接受大量移动应用程序数据进行分析。我想知道出于优化原因,以下架构是否有意义且合适:

我想将 MySQL 数据库服务器拆分为两个单独的服务器,如下所示:

  • 服务器 A(主)将接收统计数据进行计算。
  • 服务器 B(主)将保留
    • 按需聚合(预先计算的数据)Master
    • 应用
    • 用户数据。

关系黑白服务器将是主-主。

  • 服务器 A -> 服务器 B:发送聚合(计算)数据
  • 服务器 B -> 服务器 A:发送新的应用程序和用户数据,以便为新跟踪的应用程序执行聚合。

如果我的推理是正确的,你能解释一下我如何准确地做到这一点吗?

mysql replication aggregate

5
推荐指数
1
解决办法
2167
查看次数