Установка Percona Server в Debian/Ubuntu

Настройка репозитория

Заглядываем в файл /etc/debian_version или /etc/lsb-release, определяем кодовое имя релиза.

Открываем страницу repo.percona.com/percona/apt/ и находим там пакет percona-release_latest.bionic_all.deb, где bionic - кодовое имя релиза. Копируем ссылку на пакет и скачиваем в систему, где нужно установить Percona Server:

$ wget http://repo.percona.com/percona/apt/percona-release_latest.bullseye_all.deb

Установим пакет в систему:

# dpkg -i percona-release_latest.bullseye_all.deb

Подключаем репозитории с Percona Server 5.7, Percona XtraBackup 2.4 и Percona Toolkit:

# percona-release enable-only original
# percona-release enable prel
# percona-release enable tools
# percona-release enable pxb-24
# percona-release enable ps-57

Обновляем список пакетов, доступных через репозитории:

# apt-get update

Установка сервера и утилит

Устанавливаем пакеты с Percona Server 5.7, Percona XtraBackup 2.4 и утилиты Percona Toolkit:

# apt-get install percona-server-server-5.7
# apt-get install percona-server-client-5.7
# apt-get install percona-xtrabackup-24
# apt-get install percona-toolkit

Установка TokuDB

Плагину TokuDB для работы потребуется библиотека libjemalloc. В репозитории Percona есть собственный пакет libjemalloc1 с этой библиотекой, но можно использовать и пакет libjemalloc2, имеющийся в официальном репозитории Debian. Необходимо лишь убедиться, что версия libjemalloc не ниже 3.3.0. В случае с Debian Bullseye в пакете libjemalloc2 находится библиотека версии 5.2.1. Установим пакет:

# apt-get install libjemalloc2

После завершения установки нужно узнать путь к установленной библиотеке с помощью, например, такой команды:

$ dpkg -L libjemalloc2 | grep -E '\.so($|\.)'

Полученный путь нужно указать как значение переменной LD_PRELOAD в файле конфигурации сервера /etc/default/mysql:

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2

Теперь отключим прозрачную поддержку огромных страниц (Transparent Hugepages). Для этого выполним следующие команды:

# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag

Чтобы не нужно было выполнять эти действия после перезагрузки системы, передадим опцию ядру операционной системе при его загрузке. Для этого открываем файл /etc/default/grub, находим переменную GRUB_CMDLINE_LINUX и добавляем в список опций опцию transparent_hugepage=never. В результате должно получиться что-то такое:

GRUB_CMDLINE_LINUX="ipv6.disable=1 transparent_hugepage=never"

Обновим конфигурацию загрузчика следующей командой:

# update-grub

Теперь можно установить пакет с плагином TokuDB:

# apt-get install percona-server-tokudb-5.7

Перезапустим Percona Server, чтобы применить изменения в файле /etc/default/mysql:

# systemctl restart mysql

Включим TokuDB:

# ps-admin -e

По умолчанию плагин TokuDB использует половину оперативной памяти для собственного кэша. Нужно следить за тем, чтобы суммарное потребление оперативной памяти кэшем InnoDB, буферами клиентских подключений и операционной системой не превышало объём оперативной памяти. Задать объём оперативной памяти, используемый TokuDB, можно с помощью опции tokudb_cache_size, которую нужно прописать в секции [mysqld] в файле конфигурации сервера /etc/mysql/percona-server.conf.d/mysqld_safe.cnf:

tokudb_cache_size = 64G

Теперь можно перезапустить Percona Server ещё раз для включения TokuDB:

# systemctl restart mysql

Все описанные выше действия, необходимые для включения плагина TokuDB, можно найти в официальной документации Percona, на странице TokuDB installation.

Стоит отметить, что в Percona Server 8.0, начиная с версии 8.0.26 плагин TokuDB переведён в разряд устаревших и не включается по умолчанию, а начиная с версии 8.0.28 был удалён.

Настройка TokuDB

Кроме уже упомянутой опции tokudb_cache_size, указывающей размер кэша для таблиц TokuDB, можно отметить следующие полезные опции:

  • tokudb_directio - принимает значения ON - не использовать кэш операционной системы и OFF - использовать кэш операционной системы.
  • tokudb_row_format - используемый алгоритм для сжатия строк:
    • tokudb_default, tokudb_zlib - среднее сжатие при средней нагрузке на процессор.
    • tokudb_snappy - хорошее сжатие при низкой нагрузке на процессор.
    • tokudb_fast, tokudb_quicklz - слабое сжатие при низкой нагрузке на процессор.
    • tokudb_small, tokudb_lzma - лучшее сжатие при высокой нагрузке на процессор.
    • tokudb_uncompressed - сжатие не используется.
  • tokudb_empty_scan - направление сканирования индекса для проверки уникальности строки при вставке/обновлении:
    • disabled - проверка отключена,
    • rl - значение по умолчанию, "справа налево", то есть проверка от больших значений к меньшим,
    • lr - "слева направо", то есть проверка от меньших значений к большим.

Пример настроек приведён ниже:

tokudb_cache_size = 64G
tokudb_directio = ON
tokudb_row_format = tokudb_lzma
tokudb_empty_scan = disabled

Дополнительные материалы