我正在使用 percona mysql 8。
我不使用任何类型的复制,但我读到二进制日志对于数据恢复很有用。我想在运行pt-online-schema-change
不影响 OPTIMIZE 表时关闭 binlogging 并刷新它们。
完成后,我想重新打开 binlogging(然后努力移动到有更多空间的服务器)。
这是安全和推荐的吗?我需要优化一个表并且不能脱机,除非我删除 50GB 的二进制日志,否则制作表的副本会使我空间不足
我有一个 30GB 的仅 innoDB 数据库,在从源服务器Lost connection to MySQL server during query when dumping
运行时一直保持mysqldump -u root -p --compress --max_allowed-packet=1G --net-buffer-length=32704 --single-transaction largedb> /home/backup/largedb.sql.gz
我将净读写超时设置为31536000
in my.cnf
,除此之外,我找不到任何其他关于它为什么会失去连接的信息。
所以我决定关掉mysql并rsync它们。对于 1GB 以下的表,这非常有效。我首先创建了数据库和表结构,然后运行ALTER TABLE {table} DISCARD TABLESPACE
将 .frm 和 .ibd 文件移动到数据库文件夹中,然后运行ALTER TABLE {table} IMPORT TABLESPACE
修复了除主表之外的所有表。
主表是 30GB,在导入表空间时,它会说Error in query (1034): Incorrect key file for table 'main'; try to repair it
There is no additional information in error.log
. 我用谷歌搜索,它似乎暗示如果您收到此错误但它是一个 innoDB,那么您的 tmpdir 中的磁盘空间可能会用完。我的 tmpdir 是/tmp
,我有 400GB 的空闲空间。
分析表结果
InnoDB: Tablespace has been discarded for table 'main'
InnoDB: Trying to get the free space for table `db`.`main` but its tablespace has been discarded or the .ibd file is missing. Setting the free space to zero. (errno: 11 - Resource temporarily unavailable)
Trying to get the free space for table `db`.`main` but its tablespace has been discarded or the .ibd file is missing. Setting the free space to zero. (errno: 11 - Resource temporarily unavailable)
Operation failed
检查表结果
db.main: InnoDB: Tablespace has been discarded for table 'main'
db.main: Tablespace has been discarded for table 'main'
db.main: Corrupt
谁能帮助我mysqldump
停止失去连接或如何修复 innoDB 表?我即将把表变成 MyISAM 并 rsync 它
我正在运行 Percona Mysql 8(基于 mysql 8)。