我的要求是:
目前,我们将高 CPU 超大实例的连接数最大化为 700。所有 8 个内核都已达到最大值。我们认为这是并发连接数,因为内存很好。写入本身非常简单(验证缓慢)。要扩展到 3000,我们需要转到多台服务器,当前选项:
要处理这个数量的连接,有几个问题:
如果我没有很好地描述我的问题,我深表歉意。请提问。
我们有一个位于不同数据中心的vanilla master 和slave MySQL 设置,以及与master 位于同一数据中心的另一个slave。
数据中心之间的带宽相当高(在我们所做的网络基准测试中,我们可以达到 15MB/秒),但存在延迟,约为 28 毫秒。无论如何它都不高,但它比同一数据中心的亚秒延迟要高得多。
有时,我们会在删除从站时遇到严重的滞后(2000 秒甚至更多),而本地从站保持最新。在查看滞后的远程slave时,SQL线程通常会花时间等待IO线程更新中继日志。主人同时显示“等待网络”或类似的东西。
所以这意味着它是网络,但在发生这种情况时我们仍然有免费带宽。
我的问题是:数据中心之间的延迟会影响复制的性能吗?从属 io 线程是否只是流式传输事件直到主节点停止发送它们,还是在事件之间以某种方式池主节点?
原始问题: 我有多个服务器都需要充当主服务器,好像一个服务器出现故障,下一个服务器启动并接管。我只是想知道复制的最佳方式是什么。所有服务器都在不同的数据中心。
问题
更新的问题: 我们在世界各地的不同数据中心都有服务器,每台服务器都需要访问通常位于本地主机上的数据库。
每台服务器都需要能够更新数据库,每台服务器几乎都是其他服务器的镜像。这些都通过一个服务器(超级主机)保持同步,所有服务器都可以与之通信。
所有的服务器只和supermaster 通信,它们不知道任何其他服务器。超级主机本身就是其他服务器的镜像,只是附加了同步所有服务器的服务。
有时supermaster因为各种原因离线;发生这种情况时,其他服务器将照常进行,包括读取和写入数据。当超级主机恢复时,它开始同步过程并整理并解决其他服务器之间的冲突,完成后所有服务器都有数据的镜像并且全部“同步”。
因此,在对这个问题进行更多思考之后,我的问题是;
任何帮助深表感谢。
由于我们的初创公司发展顺利,我们现在遇到了一些您一直认为永远不会影响您的问题。
我们已经扩展了很多应用程序堆栈:我们将临时信息的高读/写表卸载到一个单独的 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 数据库服务器,它接受大量移动应用程序数据进行分析。我想知道出于优化原因,以下架构是否有意义且合适:
我想将 MySQL 数据库服务器拆分为两个单独的服务器,如下所示:
关系黑白服务器将是主-主。
如果我的推理是正确的,你能解释一下我如何准确地做到这一点吗?