Назад | Перейти на главную страницу

Может ли MySQL использовать несколько каталогов данных на разных физических устройствах хранения

Я запускаю MySQL с его каталогом данных на SSD 128 ГБ. Я имею дело с большими наборами данных (~ 20 ГБ), которые загружаются и обрабатываются еженедельно, каждый из которых хранится в отдельной базе данных для целей сравнения временных точек. Поместить все данные в единую базу данных невозможно, потому что производительность в таких больших базах данных уже является проблемой. Однако я не могу хранить на SSD более 6 наборов данных одновременно. Прямо сейчас я вручную выгружаю самый старый вращающийся диск на 2 ТБ каждую неделю и удаляю базу данных, чтобы освободить место для нового. Но если мне нужна одна из «заархивированных» баз данных (полурегулярное появление), я должен удалить текущую (после сброса), перезагрузить ее, сделать то, что мне нужно, а затем отменить результаты.

Есть ли способ настроить MySQL для использования нескольких каталогов данных, скажем, одного на SSD и одного на вращающемся диске 2 ТБ, и прозрачно их «объединить»? Если бы я мог это сделать, то архивирование больше не означало бы «полностью перемещено из базы данных», а вместо этого означало бы «перемещено на медленное физическое устройство». Время, необходимое для выполнения моих запросов на вращающемся диске, будет меньше, чем время, необходимое для полного сброса, удаления, загрузки, удаления, перезагрузки двух целых баз данных, так что это победа.

Я думал об использовании чего-то вроде unionfs, но я не могу придумать способ контролировать, какая база данных хранится на каком физическом диске, потому что он работает путем слияния на уровне каталогов (насколько я понимаю), поэтому я все еще застрял в использовании несколько каталогов.

Любая помощь приветствуется, заранее спасибо

Во-первых, я думаю, мы должны учитывать, что для каждой базы данных db_name, он будет хранить папка внутри его datadir (например, /var/lib/mysql). Итак, теоретически у вас могут быть просто символические ссылки на папки на разных дисках. Однако здесь есть другая проблема: если вы используете механизм хранения InnoDB, он не хранить свои данные внутри папки. Вместо этого он использует один файл журнала, ibdata*.

Я думаю, это важно: как вы отметили unionfs отлично, если все, что вам нужно, - это простое объединение двух файловых систем, но оно не понимает (или не оценивает) базовую семантику резервного хранилища при записи данных.

С самого начала я не могу сказать вам, что существует файловая система, которая будет делать именно то, что вы хотите - я также думаю, что она может быть слишком нишевой.

тем не мение, Я думаю, есть несколько вещей, которые вы могли бы изучить, чтобы достичь того, чего хотите:

  • Запуск двух копий MySQL с собственными отдельными каталогами данных. Затем вы можете использовать FEDERATED table, чтобы «имитировать» эффект наличия всех данных внутри одного экземпляра MySQL.
  • Немного проще: символические ссылки с использованием типов таблиц MyISAM (это потребует обширного тестирования, когда дело доходит до удаления таблиц, возможно, вы могли бы только усечь их, чтобы предотвратить потерю ссылки)