AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 545
Accepted
Derek Downey
Derek Downey
Asked: 2011-01-12 09:28:45 +0800 CST2011-01-12 09:28:45 +0800 CST 2011-01-12 09:28:45 +0800 CST

在同一台物理服务器上运行复制是不明智的吗?

  • 772

我正在考虑为我的数据库设置主从复制。从服务器将用于冗余,也可能用作报告服务器。然而,我遇到的最大问题之一是我们的数据中心已经用尽了电力。因此,添加另一台物理服务器不是一种选择。

就 cpu 而言,我们现有的数据库服务器的利用率相当低(在四核上的平均负载从未真正超过 1)。所以主要的想法是折腾一些新驱动器并将内存加倍(从 8GB 到 16)并在同一台物理机器上运行第二个 mysql 实例。每个实例都有单独的数据库磁盘。

这个想法有什么问题吗?

编辑(更多信息):我(幸运的是)从来没有发生过任何糟糕的事情来关闭服务器,但我正在努力提前计划。我们当然有可以恢复的每晚备份。但我认为,如果主服务器的驱动器发生故障(如果整台机器出现故障,显然不会),将冗余数据放在单独的磁盘上会提供更快的解决方案。

至于报告方面,我们要报告的任何表格都是 MyIsam。因此,对正在写入的同一个表进行昂贵的读取可能会使服务器陷入困境。我的假设是,只要我们向主服务器投入足够的 RAM(因为 cpu 负载还不是问题),有一个从服务器来报告就不会影响主服务器。

mysql replication
  • 5 5 个回答
  • 4606 Views

5 个回答

  • Voted
  1. Best Answer
    David Spillett
    2011-01-12T12:01:17+08:002011-01-12T12:01:17+08:00

    为了系统可靠性和数据安全方面的冗余,在与主设备相同的机器上运行从设备不会为您提供任何(或接近)。如果发生足以让主人倒下的坏事,它也可能会倒下奴隶。

    对于纯粹出于访问权限的原因隔离用户,一个好的 RDBMS 将提供更有效的方法来做到这一点。

    在同一台机器上运行两个数据库将需要更多的 RAM 才能以相同的效率运行,因为两个数据库将竞争空间以保持它们不同的缓冲区和缓存。如果从设备的数据文件位于与主设备不同的物理驱动器上,则通过 IO 负载隔离可能会带来性能优势。在这种情况下,您可以运行复杂的报告,这些报告需要对从属设备进行多次磁盘读取,而无需与主设备竞争驱动器 IO 带宽。

    编辑:正如 DTest 在下面的评论中提到的,从属数据库的另一个可能的好处(即使在与主数据库相同的驱动器上)是从属数据库中复杂的长时间运行的查询,否则可能会导致日常锁定问题- 主服务器上的日运行查询更安全。尽管您最好将从属设备放在不同的驱动器上,因为此类重要查询可能会导致 IO 争用问题。

    • 11
  2. Gaius
    2011-01-12T09:39:43+08:002011-01-12T09:39:43+08:00

    我不清楚这如何解决您的问题。没有冗余,因为它位于相同的物理硬件、相同的操作系统内核、相同的 MySQL 二进制文件、可能不同的磁盘但位于相同的存储控制器等上。报告数据库的原因是从 OLTP 数据库中卸载查询,并且作为都在同一个套件上,额外的力量来自哪里?或者您还想从这个设置中获得什么?

    一个可以想象的用途可能是以某种方式隔离用户,但同样,我认为可以使用GRANT.

    • 7
  3. jcolebrand
    2011-01-12T10:19:04+08:002011-01-12T10:19:04+08:00

    这确实被认为是不明智的,你只是想利用更多的核心吗?新设计考虑的目标是什么?

    (作为答案发布而不是评论以保持对话线程集中)

    • 2
  4. RolandoMySQLDBA
    2011-03-23T12:35:35+08:002011-03-23T12:35:35+08:00

    这可能是一把双刃剑

    您可以在与主服务器相同的服务器上运行多个 mysql 实例作为只读从属服务器,前提是每个 MySQL 实例驻留在不同的磁盘上。仅当您运行不利用多核 (CPU) 的旧版本 MySQL 时,才需要这样做。最新版本的 MySQL 可以调整为实际使用多个 CPU,从而无需通过运行多个 MySQL 实例来访问多个内核。

    同时,这也是一个非常糟糕的主意。我的许多客户这样做是为了节省购买裸机或 VM 服务器的费用。服务器负载的任何峰值都可能影响所有正在运行的 MySQL 实例,因为任何一个 MySQL 实例中的查询错误、查询缓慢、连接过多、内存使用过多、服务器内存不足、缓存抖动等等。这也增加了应用程序的复杂性,因为必须通过它们的端口号访问不同的 MySQL 实例,而且你也会受到 TCP/IP 的支配。

    • 1
  5. sabika
    2013-01-15T17:07:11+08:002013-01-15T17:07:11+08:00

    我会在不同的服务器上交叉复制,即 A 在 B 上的从属服务器和 B 在 A 上的从属服务器。我们在服务器上运行多个实例并且没有问题,因为我们的 MySQL 服务器没有容量。故障转移到正在运行的服务器比从备份恢复要快得多。

    • 0

相关问题

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve