Какая команда mysql делает все данные недоступными?

#mysql

#mysql

Вопрос:

Моя база данных периодически «удаляется» автоматической командой с сервера (потому что таблица слишком большая). Что происходит, так это то, что все данные в определенной таблице становятся недоступными с помощью, например, select. Но если я выполняю «восстановление» таблицы, все данные возвращаются. Я хотел бы остановить это бессмысленное действие, но я не могу найти команду, которая это делает. Любая помощь?

Редактировать: я должен отметить, что база данных находится на внешнем компьютере, к которому у меня нет доступа.

Теперь я попытался выполнить «select», когда база данных находилась в этом любопытном состоянии. В таблице указано, что в ней 0 записей, но она занимает 2,5 ГБ места для хранения. Когда я выбрал все, я получил один кортеж, ошибок нет.

Комментарии:

1. Насколько большой слишком большой? возможно, вам следует пересмотреть дизайн ваших таблиц. вместо удаления заархивируйте ваши данные

2. В таких случаях, какую ошибку вы получаете при попытке выбрать данные?

3. Я не получаю никаких ошибок, данные просто «исчезли», но возвращаются, когда я выполняю восстановление. Размер таблицы составляет около 2 ГБ.

4. @Cort3z: вы уверены, что запрос select возвращает допустимый пустой набор и не возвращает ошибку?

5. В какой файловой системе / операционной системе вы работаете? И ваша архитектура 32 или 64-разрядная?

Ответ №1:

Вероятно, ваша база данных каким-то образом повреждена. Нет команды, которая делает это (я надеюсь).

Комментарии:

1. Я дублирую это, поскольку это происходит регулярно, и я не вносил никаких изменений в базу данных между двумя случаями этой проблемы.

2. происходит сбой процесса mysql?

3. Насколько я вижу, нет. Есть ли способ извлечь историю?

4. Изучите свои файлы журналов. Сам MySQL должен регистрировать свои действия, как и ваша операционная система.

5. У меня нет доступа к операционной системе. Это на внешнем компьютере.

Ответ №2:

Сделайте себе одолжение и измените каждую из ваших таблиц, чтобы они использовали движок InnoDB вместо MyISAM. Это все еще MySQL, но он будет намного менее подвержен повреждению данных.

И если возможно полное изменение базы данных, рассмотрите возможность использования PostgreSQL вместо этого.

Комментарии:

1. InnoDB не поддерживает полнотекстовую индексацию, поэтому я не могу ее использовать.

2. В таком случае вы мало что можете сделать… MyISAM очень подвержен повреждению данных, если не запускается поверх полностью зарегистрированной файловой системы.