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
    • 最新
    • 标签
主页 / server / 问题 / 27103
Accepted
Karolis T.
Karolis T.
Asked: 2009-06-18 00:45:29 +0800 CST2009-06-18 00:45:29 +0800 CST 2009-06-18 00:45:29 +0800 CST

MySQL复制使用DRBD,分布式锁管理器?

  • 772

我需要在两台服务器上实现 Linux-HA 配置。我决定在两台主机上都使用 DRBD 进行块级复制,主要用于 MySQL 数据复制。

据我了解,在 DRBD 配置中总是有一个主服务器,其他是从属服务器(可以有自己的从属服务器)。复制只从主服务器传递到从服务器,而不是相反。

那么,如果我有 MySQL 进程同时在两台服务器上执行写入,其中一个是主服务器,另一个是从服务器,会发生什么?

从机可以写入,但是没有数据写入?

假设此配置将与 Heartbeat 一起使用,Heartbeats 的工作就是确保 MySQL 仅在 master 上运行,但我们暂时假设 Heartbeat 由于某种原因失败。

linux mysql drbd heartbeat
  • 5 5 个回答
  • 1378 Views

5 个回答

  • Voted
  1. Best Answer
    chmeee
    2009-06-18T00:51:09+08:002009-06-18T00:51:09+08:00

    据我所知,DRBD 进行分区级复制。从站不挂载分区,因此无法写入。当主服务器出现问题时,从服务器将挂载分区并开始工作。

    因此,您不能让两台服务器都写入相同的数据。

    • 3
  2. Dan Carley
    2009-06-18T01:05:16+08:002009-06-18T01:05:16+08:00

    常用的配置,也是我过去自己使用的配置,是有两个节点,它们之间有一些资源。这些资源是一个 DRBD 存储块设备、一个 MySQL 守护进程和 IP 地址。

    资源只能在主节点上“启动”。Heartbeat 负责选择哪个节点是主节点并以正确的顺序启动资源 - 告诉 DRBD 成为主节点,挂载 BD,启动 MySQL 并启动 IP。它们按此顺序出现以确保数据一致性。您可以通过将主节点降级或提升辅助节点来手动选择在主节点和辅助节点之间进行故障转移。

    当主服务器启动时,辅助服务器执行的唯一操作是复制 DRBD 数据并参与 Heartbeat 通信以表明它处于活动状态。在它作为辅助设备期间,MySQL 从未运行,您无法使用存储块设备。资源一次只能在一台机器上使用。

    这种设置不同于 MySQL 的传统“延迟复制”,其中辅助机器运行 MySQL 并存储它自己的数据副本。两者都有其优点和缺点。根据我的经验,如果 HB 设置正确,并且您还有一个良好的备份策略,那么 LinuxHA 方法可以提供更好的高可用性。

    • 1
  3. David Pashley
    2009-06-18T00:50:47+08:002009-06-18T00:50:47+08:00

    MySQL HA 的更好解决方案是使用循环 MySQL 复制。本文进一步解释它,但基本前提是让每个服务器成为另一个服务器的从属。您将需要在前面设置某种负载均衡器。

    需要担心的一件事是数据库连接可能是长期存在的,如果应用程序死亡,您将需要配置应用程序以重新连接。

    • 0
  4. womble
    2009-06-18T01:04:39+08:002009-06-18T01:04:39+08:00

    “不可能发生”。DRBD 将确保一次只有一台服务器使块设备处于活动状态。如果你得到一个“裂脑”,两个 DRBD 主机都认为另一个已经死了(所以它们都处于活动状态),它们将不会重新连接,你需要手动解决不一致问题(通常丢弃一个主机上的更改或另一个)。

    • 0
  5. Sven
    2009-06-18T00:50:12+08:002009-06-18T00:50:12+08:00

    如果您需要 DRBD“主要”用于 MySQL 复制,那么使用 MySQL 中内置的复制功能可能更容易?

    • -1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve