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 / 问题 / 28303
In Process
Mark Renouf
Mark Renouf
Asked: 2009-06-19 11:37:19 +0800 CST2009-06-19 11:37:19 +0800 CST 2009-06-19 11:37:19 +0800 CST

将 MySQL 数据库迁移到新系统同时最大限度地减少停机时间的最快方法是什么?

  • 772

我想尽量减少停机时间(在“切换”期间)。

我们在 EC2 上运行 EBS 卷上的数据。在数据库卷运行时对其进行快照并使用它来恢复新卷是否安全,或者我是否需要先关闭旧数据库?

migration mysql amazon-ec2 database
  • 4 4 个回答
  • 1288 Views

4 个回答

  • Voted
  1. Dan Carley
    2009-06-19T11:48:53+08:002009-06-19T11:48:53+08:00

    我会建议:

    1. 在短暂处于读取锁定状态时拍摄快照FLUSH TABLES WITH READ LOCK;。
    2. 将该数据集放在您的辅助机器上并检查一致性。
    3. 设置从旧机器到新机器的复制。

    然后在您的切换点:

    1. 在旧机器上关闭面向客户端的 IP(你有一个单独的,对吧?)。
    2. FLUSH LOGS;旧机器上的问题。
    3. 确保新机器同步。落后 0 秒。
    4. 停止旧机器并根据新机器的位置仔细检查最后一个 binlog 大小。
    5. STOP SLAVE; RESET MASTER;新机器上的问题。
    6. 在新机器上调出面向客户端的 IP 并进行 arping 以确保客户端看到它。

    还有一些更详细的信息,例如您是否是重度 InnoDB 用户。但那是一般的要点。

    • 8
  2. Shazburg
    2009-06-19T12:24:04+08:002009-06-19T12:24:04+08:00

    为什么不将第二个 MYSQL 服务器设置为从属服务器,复制,然后将从属服务器重新配置为主服务器?

    • 3
  3. Bruno Bronosky
    2009-06-20T22:34:02+08:002009-06-20T22:34:02+08:00

    Dan C 在金钱上是对的,但我想更具体地了解第 3 步

    为了速度和避免灾难,请在 CLI mysql 客户端中执行所有操作,如下所示:

    sudo mysql -e "FLUSH TABLES; FLUSH TABLES WITH READ LOCK; SYSTEM ec2-create-snapshot vol-4d826724; UNLOCK TABLES;"
    

    我依赖以下几点:

    1. 如果长时间运行 UPDATE、DELETE 或 INSERT 命令,获取读锁可能需要一些时间。我发出一个预备FLUSH TABLES以尽量减少任何表被锁定的时间。
    2. mysql 客户端可以使用SYSTEM命令将命令传递给主机操作系统,并以运行 mysql 客户端的用户身份执行此操作。(这就是我使用 sudo 的原因)
    3. 当您说您在 EC2 上使用 ESB(我从未使用过)时,我为您查找了此文档。您必须查找为“vol-XXXXXXXX”添加的内容
    4. 让您的生活更轻松一些,并在 ~root/.my.cnf 中输入密码

    我看到这个描述模棱两可,或者在互联网上公然错误!文档明确指出:“如果客户端连接断开,服务器会释放客户端持有的表锁。 ”。因此,您无法打开 mysql 客户端、刷新+锁定、退出客户端、制作快照、打开 mysql 客户端、解锁表。您最终会得到一个不一致的快照。

    一些特别敏锐的读者会正确地识别出“UNLOCK TABLES”是不必要的,因为无论如何客户端连接最终都会关闭。我把它放在那里是因为它让人们更舒服。

    我为您引用了 6 个来源。我希望你现在有信心做这件事。让我们知道您是否还有不确定性。

    • 2
  4. brian-brazil
    2009-06-19T11:49:48+08:002009-06-19T11:49:48+08:00

    首先确保启用了二进制日志。在全局读锁 ( ) 下获取 mysql 目录的文件系统级快照(例如 LVM 或类似文件FLUSH TABLES WITH READ LOCK)。使用此快照设置新服务器,并配置复制到旧系统(您可以通过查看快照中最新 binlog 的大小来确定 binlog 名称和位置( master_log_file/ ))。master_log_pos

    当您准备好移动时,停止read_only=true旧服务器上的所有写入(,终止所有连接)并等待新服务器赶上复制。然后使新服务器可写并关闭旧服务器。

    根据针对您的数据库运行的查询类型,您可能会有几秒钟的停机时间。然而,这取决于您的写入查询是确定性的,以便新旧服务器具有完全相同的数据。

    • 0

相关问题

  • 从 MySQL 迁移到 SQL Server 的最佳方法或工具

  • 您如何跟踪和调试 mySQL 性能问题?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • 如何选择 MySQL 数据库引擎

  • 如何将我的所有数据从 Exchange 2003 迁移到 Exchange 2007?

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