Você pode iniciar outro arquivo ibdata
No entanto, antes disso, você precisa saber o que ocupa o ibdata1
e o ibdata2
.
- Dados da tabela (se innodb_file_per_table estiver desativado)
- Índices de tabela (se innodb_file_per_table estiver desativado)
- Dados do MVCC (Controle de Concorrência Multiversionada)
- Metadados de tabela
- Segmentos de reversão
- Anular Registos
- Buffer de gravação dupla
Arquitetura InnoDB
Eutinhalidadocomaadiçãodeibdata3nopassadocomumdosclientesdomeuantigoempregador(VejameupostdoDBAStackExchange2,196,875,759,616
bytes. Você não tem essa situação.
Você poderia seguir com sua ideia
innodb_data_file_path = ibdata1:128M;ibdata2:50M:autoextend:max:76800M
mas é melhor remover totalmente o max
innodb_data_file_path = ibdata1:128M;ibdata2:50M:autoextend
CAVEAT
O motivo pelo qual você ficou sem espaço tem que desfazer os logs. O arquivo ibdata contém 1023 logs de desfazer. Esses registros exigem espaço de manobra para operar. Sem essa sala de manobra interna, as informações do MVCC não podem conter instantâneos de dados no caso de uma reversão. Sua sala de manobra interna é 2605711360
ou cerca de 2.5G
, o que aparentemente não é suficiente. Com o cliente do meu empregador anterior, eles tinham 106G
de espaço de manobra e não era suficiente para eles .
SUGESTÃO
Se você quiser deixar todos os seus dados dentro de ibdata1
e ibdata2
, mude a configuração para
innodb_data_file_path = ibdata1:128M;ibdata2:50M:autoextend:max:76800M
você precisa monitorar a sala de manobra.
Você poderia monitorar isso assim
IBDATA_FILESIZE=8187281408
#
# 8187281408 is 7680M + 128M
#
SQL="SELECT SUM(data_length+index_length)"
SQL="${SQL} FROM information_schema.tables WHERE ENGINE='InnoDB'"
IBDATA_DATAINDEX='mysql -uroot -p... -ANe"${SQL}"'
(( WIGGLE_ROOM = IBDATA_FILESIZE - IBDATA_DATAINDEX )))
echo ${WIGGLE_ROOM}
Toda vez que você executar isso, você saberá quanto espaço livre. Você não precisará saber qual tabela está envolvida porque qualquer tabela InnoDB tem o potencial de reclamar que está cheia quando a sala de manobra (espaço para desfazer a informação) não está lá.