Limitando espaço para um usuário MySQL

1

Eu mantenho um servidor MySQL. Há um usuário cujo tamanho do banco de dados cresceu muito rapidamente enormemente. Já que ele está usando o InnoDB, o arquivo / data / mysql / ibdata1 cresceu a partir de porções. Eu poderia montar uma pequena partição e colocar seu banco de dados lá, mas o arquivo ibdata1 parece ser compartilhado em todos os bancos de dados.

O que eu estou preocupado é como limitar um usuário em particular de usar mais espaço de banco de dados do que o definido para ele.

    
por Henno 29.03.2011 / 09:00

1 resposta

1

Não há solução pronta para uso. Mas você pode fazer o seguinte:

  1. Obtenha as data_length e index_length para as tabelas que o usuário possui com show table status (essa é a quantidade de espaço que os arquivos de dados usam no sistema de arquivos)
  2. Resuma esses números para todos os bancos de dados
  3. Se o limite for atingido, remova, por exemplo, os privilégios INSERT desse usuário, para que ele não possa mais inserir novos dados.

Mas tenha em mente que a remoção de dados de tabelas InnoDB não liberará espaço no sistema de arquivos. Então, se o usuário atingiu o limite, ele não pode fazer nada contra isso. (Exceto jogar todas as tabelas InnoDB, largá-las e reimportá-las)

    
por 29.03.2011 / 09:21