刷新/清理 MySql ib_logfile0 ib_logfile1

Sam*_*Sam 7 mysql innodb logs

有没有办法刷新 ib_logfile0 和 ib_logfile1 而不将表转储到 .sql 文件,删除,然后重新插入?有人在客户备注表中输入了几个纯文本信用卡号。它出现在我的 PCI 扫描中,我将它们从表中删除,但它们仍然存在于日志文件中:(

Rol*_*DBA 7

您可以让 InnoDB 清理如下内容:

  • 向 mysqld 发出信号让 InnoDB 在关机时从日志中清除所有内容
  • 关闭mysqld
  • 删除日志
  • 启动mysqld

不会发生崩溃恢复,因为没有任何东西可以恢复。

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS} -h127.0.0.1 -P3306 --protocol=tcp"
SQL="SET GLOBAL innodb_fast_shutdown = 0"
mysql ${MYSQL_CONN} -ANe"${SQL}"
mysqladmin ${MYSQL_CONN} shutdown
cd /var/lib/mysql
rm -f ib_logfile*
service mysql start
Run Code Online (Sandbox Code Playgroud)

如果您想从双写缓冲区中清除残留的数据页,请参阅我的旧帖子用零/空/等填充 ibdata1 或更改表的表空间

试一试 !!!


aku*_*sky 6

有两种方式

  1. 优雅地停止 MySQL。检查错误日志并确保它是正常关机。

    将 ib_logfile0 和 ib_logfile1 从 datadir 中移出(保存它们以防您需要回滚)

启动 MySQL。InnoDB 会注意到没有 REDO 日志文件,并会创建空的。

  1. 将一些垃圾记录写入一些 InnoDB 表,直到 InnoDB 在 ib_logfile* 中旋转写入。