В настоящее время у нас есть база данных размером 35 ГБ, работающая на виртуальной машине с 2 ГБ оперативной памяти. Ожидается, что база данных будет постоянно увеличиваться со скоростью от 3 до 4 Гбайт в день.
Каковы рекомендуемые характеристики оборудования для этого типа установки? Распределение ЦП и ОЗУ и т. Д.
Я также создал аналогичный вопрос о масштабировании mysql. Масштабирование базы данных MySQL Но я еще не пробовал предложения, так как я сосредоточен на оптимизации mysql.
Я бы предложил сразу использовать MySQL 5.5 со следующим:
innodb_file_per_table <- всегда включать это
innodb_io_capacity = 65536
innodb_read_io_threads = 64
innodb_write_io_threads-64
query_cache_size = 0 (по умолчанию: отключить кеш запросов)
Пока MySQL 5.5 не станет зрелым, не используйте несколько пулов буферов.
Необходимый объем оперативной памяти зависит от двух (2) вещей.
Для MyISAM этот запрос показывает размер ключевого буфера, который должна быть установлена в вашей системе.
SELECT CONCAT (CEILING (ndxsum / POWER (1024,2)), 'M') RecommendedKeyBufferSize FROM (SELECT SUM (index_length) ndxsum FROM information_schema.tables WHERE engine = 'MyISAM' и table_schema NOT IN ('information_schema', 'mysql' )) А;
Для InnoDB этот запрос показывает размер пула буферов innodb, который должен быть установлен в вашей системе.
SELECT CONCAT (CEILING (innodbsum / POWER (1024,2)), 'M') RecommendedInnoDBBufferPoolSize FROM (SELECT SUM (data_length + index_length) innodbsum FROM information_schema.tables WHERE engine = 'InnoDB') A;
Чтобы получить полное представление о ваших данных MySQL, выполните этот запрос:
SELECT DBName, CONCAT (LPAD (FORMAT (SDSize / POWER (1024, pw), 3), 17, ''), '', SUBSTR ('KMGTP', pw + 1,1), 'B') "Размер данных ", CONCAT (LPAD (FORMAT (SXSize / POWER (1024, pw), 3), 17, ''), '', SUBSTR ('KMGTP', pw + 1,1), 'B')" Размер индекса " , CONCAT (LPAD (FORMAT (STSize / POWER (1024, pw), 3), 17, ''), '', SUBSTR ('KMGTP', pw + 1,1), 'B') «Общий размер» FROM (SELECT IFNULL (DB, 'All Databases') DBName, SUM (DSize) SDSize, SUM (XSize) SXSize, SUM (TSize) STSize FROM (SELECT table_schema DB, data_length DSize, index_length XSize, data_length + index_length TSize FROM information_schema.tables ГДЕ table_schema НЕ ВХОДИТ ('mysql', 'information_schema', 'performance_schema')) AAA GROUP BY DB WITH ROLLUP) AA, (SELECT 3 pw) BB ORDER BY (SDSize + SXSize);
Установите (SELECT 0 pw) BB для байтов
Установите (ВЫБРАТЬ 1 pw) BB для килобайт
Установите (SELECT 2 pw) BB для мегабайт
Установить (ВЫБРАТЬ 3 pw) BB для гигабайт
Установить (ВЫБРАТЬ 4 pw) BB для TeraBytes
Установите (ВЫБРАТЬ 5 pw) BB для PetaBytes (напишите мне, если вы начнете использовать это)
Максимальный размер key_buffer_size составляет 4 ГБ, поэтому не превышайте это значение.
Максимальный innodb_buffer_pool_size должен составлять 75-80% или установленной RAM
Всегда устанавливайте innodb_log_file_size равным 25% от innodb_buffer_pool_size
Максимальный размер innodb_log_file_size составляет 2047 МБ (InnoDB не будет работать с 2 ГБ или 2048 МБ, вы можете проверить исходный код MySQL)
Помня об этом, вы сможете спрогнозировать, какие настройки вам нужны в /etc/my.cnf и для вашего оборудования.
Попробуйте !!!
Очевидно, вы предоставили нам очень мало деталей для работы, но если вы собираетесь покупать собственное оборудование, я бы предложил действительно стандартную двухпроцессорную систему, первоначально с одним Xeon серии E56xx среднего уровня, либо 3 x 2 ГБ или 3 x 4 ГБ памяти 1333/1066 DDR3, 2 или 4 сетевые карты 1 Гбит / с, аппаратный RAID-контроллер с зеркальной парой либо небольших дешевых (147-300 ГБ) загрузочных дисков SATA 7,2 об / мин или SAS 10 об / мин, затем массив RAID 10 из либо 4 диска приличного качества 7,2 об / мин 2 ТБ, либо 4 диска SAS по 600 ГБ 10/15 об / мин. Это должно удовлетворить большинство, если не все ваши требования к производительности и устойчивости, а также предоставить вам очень быстрый и простой способ удвоить мощность процессора, а также добавить намного больше памяти по мере необходимости, а также разумный набор дисков.
Такие машины, как HP, Dell, IBM и supermicro, продают больше всего, поэтому должно быть много хороших предложений.
Возвращайтесь к нам, если у вас есть более подробная информация.
хм, так что через годы у вас будет база данных 1,3 ТБ.
Вы правы - одна маленькая ВМ с этим не справится.
Предполагая, что это будет использоваться не только для простого ведения журнала, вам потребуется много процессора / памяти - хотя вы не предоставили никакой информации о том, как система, вероятно, будет использоваться.
Забудьте о высокопроизводительном оборудовании, вам нужно сразу перейти к стандартной кластерной системе. Я бы рекомендовал начать с 4 блоков, чтобы вы могли с самого начала разобраться как с шардингом, так и с репликацией. Память 4 Гбайт (хотя именно здесь вам следует проявить гибкость - добавить память намного проще, чем ЦП / сетевые карты / пропускная способность диска) и двойные физические ядра, а также зеркальное локальное хранилище, вероятно, будут разумной отправной точкой. Они должны быть изолированы на своем сегменте локальной сети 1 Гб, и, вероятно, это хорошая идея.
Хотя вы можете подумать о переходе на базу данных NoSQL - но опять же с аналогичными характеристиками оборудования.