用于复制的 EBS 卷的快照

2024-01-31

我在 EBS 卷上设置了一个带有 MySQL 的 EC2 实例,并设置了另一个充当复制从属实例。复制设置很好。我的问题是关于拍摄这些卷的快照。我注意到快照过程需要锁定表,这可能会给用户带来不便。因此,我的想法是保留主实例并拍摄作为从实例的快照。这是一个好主意吗?有没有人有类似的设置并且可以以正确的方式指导我?

此外,拍摄从属实例的快照需要锁定表。这是否意味着复制将会中断?

提前致谢。


尽管在启动快照时锁定数据库并冻结文件系统是一个好主意,但启动快照的实际 API 调用只需要几分之一秒的时间,因此您的数据库和文件系统不会长时间锁定/冻结。

也就是说,还有一些您没有提到的其他考虑因素:

  1. 当您尝试在数据库上创建锁时,可能需要等待其他语句完成才能授予锁。在此期间,您的挂起锁可能会进一步执行语句等待,直到您获取并释放该锁。这可能会导致生产数据库上的语句流中断。

  2. 启动快照创建后,您的应用程序/数据库可以自由使用卷上的文件系统,但如果您有大量写入,则可能会遇到高 iowait,有时足以导致应用程序明显减慢。原因是后台快照进程需要将块复制到 S3,然后才允许写入活动卷上的该块。

我通过请求锁定并在未快速授予锁定时超时来解决第一个问题。然后我稍等一下并继续重试,直到获得锁。对于不同的数据库负载,适当的超时和重试延迟可能会有所不同。

正如您所建议的那样,我通过在从属服务器而不是主服务器上执行频繁、一致的快照来解决第二个问题。我仍然建议偶尔对主服务器执行快照,只是为了提高其内在持久性(深层 EBS 属性),但这些快照不需要通过锁定或冻结来执行,因为您不打算将它们用于备份。

我还建议使用支持刷新和冻结 (XFS) 的文件系统。否则,您正在对 MySQL 中的锁定表进行快照,这些表可能尚未将所有块都存储在 EBS 卷上,或者文件系统的其他部分可能会被修改并且在快照中不一致。

如果您有兴趣,我已经发布了开源软件,该软件执行我收集的与使用 MySQL 和 XFS(均为可选)创建一致的 EBS 快照相关的最佳实践。

http://alestic.com/2009/09/ec2-consistent-snapshot http://alestic.com/2009/09/ec2-consistent-snapshot

为了回答你的最后一个问题,锁定主服务器中的表不会中断复制。在我的快照软件中,我还使用读锁刷新表,以确保所有内容都在正在快照的磁盘上,并且我添加关键字“LOCAL”,以便刷新不会复制到任何潜在的从属设备。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于复制的 EBS 卷的快照 的相关文章

随机推荐

  • 独立于平台的资源系统(如 Qt Resource 系统)

    是否有一个类似于 Qt 附带的 C 平台独立资源系统 但没有 Qt 依赖项 我想从我的 C 源代码中访问任意数据 也就是说 不仅是图标 还包括翻译或着色器等 或者某种虚拟文件系统库来访问 例如ZIP 压缩文件或类似文件也能满足我的需要 我为
  • 检查视口中的可见性(puppeteer)

    如何使用 Puppeteer 检查 HTML 元素在视口 可见区域 内是否可见 例如 如果我必须滚动才能看到一个按钮 那么它就不可见 page waitForSelector element visible true page waitFo
  • 正则表达式前瞻、后瞻和原子组

    我在我的正则表达式体内发现了这些东西 但我不知道我可以用它们做什么 有人有例子 以便我可以尝试理解它们是如何工作的吗 positive lookahead negative lookahead lt positive lookbehind
  • 使用 Python Rich 在布局内获取提示

    是否可以使用提示获取用户输入within使用 Python Rich 的布局元素 我的目标是使用 Rich 的 Layout 构建一个具有 4 个窗格的全屏窗口 顶部 3 个包含标题 成分和方法 效果很好 但我希望底部一个包含用户输入的提示
  • Xamarin.Forms 中的透明页面

    我需要能够为 Android 创建透明的 Xamarin Forms 页面 我怎样才能做到这一点真正的页面渲染器 现在它有默认的背景颜色 assembly ExportRenderer typeof MyPage typeof ClearB
  • 如何在 Web 应用程序中使用 java.util.logger?

    我正在尝试在网络应用程序中使用记录器 我添加了 FileHandler 将日志写入文件 现在 我需要在项目中的其他类 servlet 中使用相同的处理程序 以便将所有类的日志写入同一文本文件 我怎样才能实现这个目标 Initialize a
  • VBA 动态范围

    我想知道是否有人可以帮助我 我将下面的代码放在一起 在我的工作簿中创建一个新工作表并应用动态命名范围和页面格式 Sub AllDataNamedRanges Dim rLOB As Range Dim rStaffName As Range
  • keras:如何保存历史对象的训练历史属性

    在 Keras 中 我们可以返回以下输出model fit历史记录如下 history model fit X train y train batch size batch size nb epoch nb epoch validation
  • C++20 前后 std::atomic 的初始化

    考虑以下两行代码 std atomic flag a Since C 20 std atomic flag a ATOMIC FLAG INIT Until C 20 在C 20中 第一行初始化a到清晰的状态 但如果我在 C 17 中使用它
  • 已弃用 - Laravel:如何使用 Carbon 在视图中本地化日期[重复]

    这个问题在这里已经有答案了 我正在尝试本地化Carbon不同语言的视图中的日期到目前为止还没有成功 我从模型中检索日期并将其发送到视图 Route get tables setup function now Date now Europe
  • Phonegap 3.0 自定义插件

    几个月前 我用phonegap 2 7为一个应用程序编写了一个插件 它运行得很好 该插件基本上打开用户电话簿并将用户选择的联系人的详细信息返回到我的应用程序 我最近升级到 Phonegap 3 0 我正在尝试将我的插件转换为 3 0 但是我
  • 如何将 NSData 值转换为 UIImage [重复]

    这个问题在这里已经有答案了 可能的重复 NSData 到 UIImage https stackoverflow com questions 2240765 nsdata to uiimage 如何将 NSData 值转换为 UIImage
  • Python 中二维矩阵的单元格分配,无需 numpy

    下面是我的脚本 它基本上创建了一个 12x8 的零矩阵 其中填充了 0 然后我想将其一一填充 假设第 2 列第 0 行需要为 5 我该怎么做 下面的示例显示了我是如何做到的以及错误的 根据我的需要 输出 list MatrixRow lis
  • 为什么要禁用垃圾收集器?

    Pythons gc disable http docs python org 3 3 library gc html gc disable禁用自动垃圾收集 据我了解 这会产生相当多的副作用 为什么有人想要禁用自动垃圾收集 如果没有它 如何
  • Swift 4 中的访问控制

    升级到Swift4 from Swift3 我遇到了一些相关问题access control 这是示例代码 其中有Swift3 过去工作正常 open class MyClass private let value Int static v
  • Xcode 机器人在成功/失败时不发送电子邮件

    我设置了 Xcode Bots 它运行成功 但是 尽管设置了电子邮件地址以在构建成功或失败时收到通知 但我没有收到任何电子邮件 是否有任何额外的 SMTP 设置需要隐藏在某处 您可能需要配置 Mac OSX 服务器来发送电子邮件 本地服务器
  • 如何在 Eclipse 中根据变量设置 Ant 属性?

    我有一个常见问题 可能有无数种方法可以解决它 我正在为这种典型场景寻找一种优雅 简单的解决方案 我在 Eclipse 中有一个带有 Ant 构建文件 build xml 的项目 该构建文件使用属性文件 build properties 在该
  • NSRegularExpression 用于剥离 HTML 标签

    我正在开发一个电子书阅读器应用程序 我有整本电子书的 ePUB 文件 其中电子书的每个主题都是一个 html 文件 我想在应用程序中实现搜索功能 我正在使用 NSRegularExpression 类进行搜索 请考虑以下 html 代码
  • 为什么 C#7 语法中的 TryParse(清空参数)在编译时会发出警告?

    在 C 7 中 你可以这样做 if int TryParse 123 out int result Console WriteLine Parsed result 或者 如果您不使用结果而只想检查解析是否成功 discard https l
  • 用于复制的 EBS 卷的快照

    我在 EBS 卷上设置了一个带有 MySQL 的 EC2 实例 并设置了另一个充当复制从属实例 复制设置很好 我的问题是关于拍摄这些卷的快照 我注意到快照过程需要锁定表 这可能会给用户带来不便 因此 我的想法是保留主实例并拍摄作为从实例的快