Установка 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.
Если после перезапуска MySQL плагин TokuDB не включается с ошибкой, подобной приведённой ниже:
2025-07-02T19:23:44.568153Z 0 [ERROR] unknown variable 'tokudb_cache_size=64G'
2025-07-02T19:23:44.568337Z 0 [ERROR] Aborting
То нужно прописать явным образом включение плагина в секции [mysqld] файла конфигурации /etc/mysql/percona-server.conf.d/mysqld_safe.cnf:
plugin_load_add = ha_tokudb.so
Стоит отметить, что в 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