我希望截断奴隶上的大多数数据,以便它只有最近的记录。最后,我将降级当前的主服务器,使其成为read-only存档,并将截断的从服务器提升为主服务器。截断的主要动机是回收磁盘空间;我想转储和恢复从服务器。
问题:
UPDATE或DELETE,则从中删除行后会发生什么情况?发布于 2014-08-25 08:33:15
innodb_file_per_table选项off (默认情况下为MySQL 5.1及之前),则需要在转储之后停止服务器(确保没有使用innodb_fast_shutdown = 2),然后至少删除ibdata1、ib_logfile0、ib_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及更高版本ROW的复制中,它肯定会中断,因为它找不到要影响的正确行。在STATEMENT模式下,有些查询可能会继续工作,影响0行,但随着时间的推移,很可能会发现一些不兼容的查询,例如由于唯一的键约束,可以在主服务器上执行的UPDATE,而不能在从服务器上执行的查询。我不建议在主服务器和从服务器上使用不同的数据运行复制,除非您确信这些部分没有被修改,或者它们是以非常有限的方式完成的。我可以告诉您,我修复的大多数复制问题都是由于复制筛选器造成的。https://dba.stackexchange.com/questions/74818
复制相似问题