【问题标题】:Alter MYSQL database table on a live server在实时服务器上更改 MYSQL 数据库表
【发布时间】:2012-04-15 06:36:10
【问题描述】:

您好,我们有一个数据库,在这个要添加新列的特定表上每秒读取和写入 3 到 4 条记录。该表有超过 60000 条记录。 我需要为此添加一个新列。 MySQL>ALTER TABLE 表名 ADD 列名 int(1);

完成这项工作最安全的方法是什么。是否可以在不停止 MYSQL 服务器的情况下添加此新列,并且在更新过程中不会丢失新记录,因为我认为这需要相当长的时间?

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    MySQL 文档 (http://dev.mysql.com/doc/refman/5.1/en/alter-table.html) 提供了以下信息:

    “在大多数情况下,ALTER TABLE 会制作原始表的临时副本。MySQL 等待正在修改表的其他操作,然后继续。它将更改合并到副本中,删除原始表,然后重命名新表。在执行 ALTER TABLE 时,其他会话可以读取原始表。在 ALTER TABLE 操作开始后开始的表的更新和写入会停止,直到新表准备好,然后自动重定向到新表没有任何失败的更新。临时表是在新表的数据库目录中创建的。"

    根据文档,不应该有任何数据丢失。但与往常一样,在对实时系统进行任何更改之前,请在测试机器上检查相同的场景。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      相关资源
      最近更新 更多