首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL删除从中删除行

MySQL删除从中删除行
EN

Database Administration用户
提问于 2014-08-25 05:28:25
回答 1查看 1.9K关注 0票数 2

我希望截断奴隶上的大多数数据,以便它只有最近的记录。最后,我将降级当前的主服务器,使其成为read-only存档,并将截断的从服务器提升为主服务器。截断的主要动机是回收磁盘空间;我想转储和恢复从服务器。

问题:

  1. 关于从服务器上的转储/还原操作,我计划停止IO和SQL线程,然后转储表,然后删除表,从转储中恢复,然后启动从线程。这听起来像正确的过程吗?
  2. 如果主发送引用已删除行的UPDATEDELETE,则从中删除行后会发生什么情况?
EN

回答 1

Database Administration用户

发布于 2014-08-25 08:33:15

    • 如果您使用选项innodb_file_per_table选项off (默认情况下为MySQL 5.1及之前),则需要在转储之后停止服务器(确保没有使用innodb_fast_shutdown = 2),然后至少删除ibdata1ib_logfile0ib_logfile1和数据库目录,最后重新启动MySQL并只导入最终截断的数据。否则,ibdata1文件的大小不会缩小。
    • 如果激活了选项innodb_file_per_table (默认情况下为MySQL 5.5及更高版本),则每个表都有单独的.ibd文件,并且ibdata1文件不太大,不需要导入/导出数据并删除InnoDB文件。只需删除适当的行并通过以下操作对.ibd文件进行碎片整理: ALTER <您的table> ENGINE=InnoDB;-用于5.5及之前ALTER < table> ENGINE=InnoDB,ALGORITHM=COPY;--用于5.6及更高版本

  1. 复制可能会中断。在基于ROW的复制中,它肯定会中断,因为它找不到要影响的正确行。在STATEMENT模式下,有些查询可能会继续工作,影响0行,但随着时间的推移,很可能会发现一些不兼容的查询,例如由于唯一的键约束,可以在主服务器上执行的UPDATE,而不能在从服务器上执行的查询。我不建议在主服务器和从服务器上使用不同的数据运行复制,除非您确信这些部分没有被修改,或者它们是以非常有限的方式完成的。我可以告诉您,我修复的大多数复制问题都是由于复制筛选器造成的。
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/74818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档