Подключение ssd для базы mysql

Настройка монтирования ssd

Создаем каталог куда будет монтироваться диск
  • mkdir -p /mnt/mysql/mysql
Смотрим диск 
  • fdisk -l
Смотрим данные диска
  • yum install smartmontools
  • smartctl -a /dev/sdc
Проверка на то что диск действительно ssd (показал на ssd 1, сверил smartctl -a /dev/sdc)
  • smartctl -a /dev/sda| grep "Device Model:"
или
  • cat /sys/block/sdc/queue/rotational
Если в результате вы получаете 0 – значит SSD, если 1 – тогда установлен HDD.

Создание раздела

(Если говорит, что уже есть partition сначала отмонтировать и форматнуть)

  • fdisk /dev/sdb
  • Command (m for help): p (так для просмотра текущих разделов диска)

    Command (m for help): n
    primary partition (1-4): p
    Partition number (1-4): 1
    First cylinder (1-7297, default 1):1
    Last cylinder, +cylinders or +size{K,M,G} (1-7297, default 7297): 7297 (enter)

    Command (m for help): w

Форматируем
  • mkfs.ext4 /dev/sdc
Монтируем на лету
  • mount -t ext4 /dev/sdc /mnt/mysql
Устанавливаем права
  • mkdir /mnt/mysql/mysql
  • chown mysql:mysql /mnt/mysql/mysql
  • chmod 755 /mnt/mysql/mysql


Проверяем TRIM
Важно: Вы должны убедиться, что ваш SSD поддерживает TRIM перед тем, как пытаться монтировать раздел с флагом discard. Иначе вы можете потерять данные!

TRIM — команда интерфейса ATA, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных уже не содержатся в файловой системе и могут быть использованы накопителем для физического удаления.

Должна поддерживаться ядром системы и диском. В censos 6.8 ядро 2.6.32 поддержка ядром TRIM включена. 
Проверить версию ядра
  • uname -r
Проверка поддержки TRIM на диске
  • yum install hdparm
  • hdparm -I /dev/sda | grep -i trim
Ответ должен быть таким:
 * Data Set Management TRIM supported (limit 8 blocks)
Монтируем при запуске
  • mcedit /etc/fstab
/dev/sdc /mnt/mysql      ext4       defaults,noatime,discard     0 1
noatime полностью отключает запись времени доступа к файлу.
Действие noatime перекрывает собой nodiratime. Нет необходимости указывать оба параметра.

discard оставляем если есть TRIM

Важно: Использование флага discard для корневого раздела с файловой системой ext3 приведёт к тому, что он будет смонтирован в режиме только-чтение.

errors=remount-ro часто пишут монтирование с этим параметром. По сути это перемонтирование в режиме чтения при ошибках.


Настройка mysql 
Перенос каталога базы
Останавливаем mysql
  • mcedit /etc/my.cnf
Изменяем
datadir = /var/lib/mysql
на
datadir = /mnt/mysql/mysql
Если база в innodb меняем
innodb_data_home_dir = /var/lib/mysql
на
innodb_data_home_dir = /mnt/mysql/mysql
и еще
innodb_log_group_home_dir = /mnt/mysql/mysql
копируем базу в новый каталог

Перемещение временных таблиц c диска (tmpdir) в оперативную память

Создаем папку для хранения временных файлов
  • mkdir /mnt/mysqltmp
Изменяем владельца папки и группу на mysql
  • chown mysql:mysql /mnt/mysqltmp
Выясняем идентификатор пользователя (uid) и группы (gid) mysql
  • id mysql
В файл fstab добавляем запись
  • mcedit /etc/fstab
tmpfs /mnt/mysqltmp tmpfs rw,gid=27,uid=27,size=4G,nr_inodes=10k,mode=0700 0 0
Монтируем новый tmpfs раздел
  • mount /mnt/mysqltmp
Может выдать ошибку 
[mntent]: предупреждение: no final newline at the end of /etc/fstab
Не обращаем внимания. Открываем fstab в mcedit, ставим курсор на последнюю позицию и нажимаем enter разок, потом сохраняем.

Редактируем файл конфигурации MySQL
  • mcedit /etc/my.cnf
tmpdir=/mnt/mysqltmp
Не забываем установить
# ~50-70% RAM
innodb_buffer_pool_size = 4G
Распределение памяти 4GB например так
2g на mysql, 512 на рам диск и 1,5 останется на остальное
Перезапускаем MySQL
  • /etc/init.d/mysqld restart

Комментарии

Популярные сообщения из этого блога

mikbill расшифровка завершений сессий

Accel-ppp команды

Zabbix agent установка и настройка