Моя цель - одинаково разделить базу данных mysql по количеству дисков, используя символические ссылки в таблицах.
Теперь я не могу найти способ проверки операций ввода-вывода, чтения и записи для каждой таблицы в mysql.
Итак, теперь я думаю, может быть, в Linux есть способ контролировать ios, читать, писать для каждого файла?
Iostat показывает количество операций ввода-вывода в секунду на устройство; Iotop показывает количество операций ввода-вывода в секунду для каждого процесса; Есть ли что-нибудь, чтобы показать количество операций ввода-вывода в секунду для каждого файла?
Эта ваша идея кажется чрезмерно сложной, хрупкой и трудной для реализации - нельзя просто поместить диски в массив RAID 10, который равномерно распределит данные и количество операций ввода-вывода в секунду по дискам - это то, что делают все остальные.
В стране администраторов баз данных есть лагерь (или был в какой-то момент, я в последнее время не проходил), которые считали, что оптимальная производительность должна быть достигнута путем микроменеджмента инфраструктуры хранения до такой степени, что администраторы систем и систем хранения могут лучше уйти с дороги и просто дать им кучу жестких дисков, сервер или два, и иногда руку помощи когда спросили.
Эти системы обычно заканчиваются большим количеством пар RAID1 с файлами данных, намеренно и систематически распределенными по каждой из них. Диски журналов будут использоваться и аналогичным образом разделены. Идеи этого метода довольно просты:
У этого подхода есть существенная проблема, и Chopper3 решил ее: ремонтопригодность.
Подобной системе потребуется постоянное и постоянное внимание и тонкая настройка, чтобы поддерживать `` оптимальную '' производительность по мере роста / сжатия баз данных, изменения сценариев использования, развития приложений и их моделей использования, восстановления из аварийных состояний и изменения циклов обслуживания. . Типа архитектуры, которую я описал выше, лучше всего подходит для рабочих нагрузок типа «почти никогда не пишется / много читается».
Он также используется, когда действительно важно, чтобы база данных использовала все последние доли процента производительности оборудования. Это бюджетное решение во многих случаях, когда считается, что время администратора базы данных дешевле, чем дополнительное оборудование. Однако в некоторых случаях HPC просто невозможно сделать коробку побольше, поэтому вам нужно оптимизировать то, что у вас есть. Для остальных из нас, кто не использует серверы баз данных монстров, всегда есть обновления.
Другой лагерь, к которому я приписываю, справляется по-другому. Он больше верит в абстракцию хранилища и имеет тенденцию намного лучше масштабироваться. Вместо непустых пар R10 вы помещаете все эти пары в набор RAID10; или альтернативно небольшое количество наборов RAID10. Это позволяет агрегировать IOP так же, как указано выше, но каждый файл данных / табличное пространство / база данных получает доступ к довольно большой емкости. Используя несколько наборов R10, вы можете обеспечить разделение ввода-вывода для тех критически важных баз данных и файлов журнала, которые в нем нуждаются. Необходимость микроуправления для каждого файла значительно снижается.
Вы можете отслеживать ввод-вывод для каждого файла с помощью сценария systemtap. Видеть: iotime.stp