#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 очень подвержен повреждению данных, если не запускается поверх полностью зарегистрированной файловой системы.