【问题标题】:How to make my MySQL databases available at all times? Some expert DB advice needed!如何让我的 MySQL 数据库随时可用?需要一些专家数据库建议!
【发布时间】:2010-09-15 13:35:59
【问题描述】:

我一直在做很多研究,阅读复制等,但不确定哪种 mysql 解决方案会起作用。

这是我正在看的:

  • 当我的 mysql 由于某种原因失败或某些查询需要很长时间才能执行并锁定某些表时,我希望其他插入/更新/选择查询仍然以正常速度运行而无需等待用于释放锁或备份主数据库。我认为应该有第二个 mysql 服务器来实现这一点,但是我提到的是否可能,即使存在并且它会涉及到我现有的编程逻辑的很多变化?

  • 当我的数据库被备份时,我仍然希望我的站点正常运行,所有插入/选择/更新都应该正常运行。

  • 当我需要更改一个大表时,我不希望它影响我的应用程序,应该有一个备份服务器可以工作。

那么我需要做什么才能完成所有这些工作,并且是否需要更改大量现有编码以适应新设置? [我的网站有很多读写操作]

【问题讨论】:

    标签: mysql database optimization replication


    【解决方案1】:

    没有简单的方法。您需要基于 MySQL 的高可用性设置,这需要在服务器端和客户端进行大量工作。

    一些问题,例如:

    • 当我需要更改一个大表时,我不希望它影响我的应用程序,应该有一个备份服务器可以工作。

    如果您要更改表,则无法在更新期间轻松创建副本以供使用。第一次更新时对您的副本所做的更改会怎样?

    搜索“高可用性 MySQL”。这主要是一个已解决的问题,但解决方案在很大程度上取决于您的确切要求。您不能只要求“我希望我的 SQL 服务器永远全速运行,无论我向它扔什么”。

    【讨论】:

    • 我只是如果有这样的设置可能,当您在数据库上运行更改时,服务器可能暂时使用另一个备份实时数据库,并且当更改在 1 日完成时数据库,数据可以从第二个数据库移动到第一个(假设它只是一个添加的字段而不是重命名),然后alter可以在第二个数据库上运行。虽然这么想,但听起来不太现实。但无论如何研究了高可用性,这一切似乎都是如此复杂和令人困惑。会试着弄清楚!
    • 祝你好运! HA 是一种在不花太多钱的情况下就能做到正确的棘手野兽。首先尝试确定您的实际暴露风险,这应该会给您一个成本/努力限制。如果停机 1 小时,您会损失 1 英镑、100 英镑还是 100 万英镑?
    【解决方案2】:

    不是 MySQL 特定的答案,而是一般的答案。为站点提供一个只读副本以供站点呈现,该副本将定期同步到主数据库。这样,即使主数据库由于插入/删除而处于负载/锁定状态,您也可以保持站点正常工作。为提高效率,请将此副本尽可能非规范化。

    【讨论】:

    • 如果有一个只读副本,那么我的其他插入/更新语句将如何工作,我希望我的站点能够正常运行,即使主数据库上有负载。还是您所说的“数据库的只读副本”是其他意思。
    • 只读副本 = DB 以呈现页面。主数据库 = 您的实际数据库、当前数据库、您的所有站点 CMS、插入删除都应该适用于此。而且您应该以某种方式将您的只读副本同步到主副本以保持网站更新。
    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 2011-01-28
    • 1970-01-01
    • 2010-10-18
    • 2014-10-22
    • 2019-06-22
    相关资源
    最近更新 更多