( 7 Голосов )

perconaserver

Если поднимать вопрос о оптимизации нашей системы, то узким местом системы будет база данных MySQL. Есть смысл вместо стандартной MySQL поставить Percona Server. В двух словах - это оптимизированная сборка MySQL полностью совместимая с форматами хранения (взятого с офсайта) MySQL.

В итоге получим Большое число оптимизаций для более эффективной работы сервера. Например, быстрое выключение, предзагрузка буферного пула, быстрые алгоритмы контрольных сум, неблокирующие алгоритмы и множество других изменений.

Также получаем

  • Больше параметров для более тонкой настройки
  • Больше параметров и возможностей для сбора статистики (например, лог медленных запросов менее секунды)
  • Более эффективное управление памятью
  • Более эффективная работа на большом количестве ядер

По установке есть небольшой мануал на оф. сайте: http://www.percona.com/doc/percona-server/

Перед установкой Percona Server на Debian сначала необходимо удалить Mysql.

Ниже команды именно полного удаления MySQL. Если у вас уже есть базы - позаботьесь о бекапе.

apt-get remove mysql*
apt-get purge mysql*
apt-get autoremove

Также удаляем инструмент администрирования баз данных MySQL - PHPMyAdmin если такой установлен, так как его придется устанавливать заново с другими модулями.

apt-get remove phpmyadmin 
apt-get autoremove

Устанавливать будем из репозиториев.

Откроем файл /etc/apt/sources.list и добавим в него

deb http://repo.percona.com/apt wheezy main
deb-src http://repo.percona.com/apt wheezy main

Если у нас ранее использовались репозитории squeeze то видимо Перкону также надо устанавливать из squeeze чтобы сохранить зависимости для PHP клиента и апача.

deb http://repo.percona.com/apt squeeze main
deb-src http://repo.percona.com/apt squeeze main

Импортируем ключ командой

apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

Чтобы избежать обновлений с Debian репозитория создадим файл  /etc/apt/preferences.d/00percona.pref

nano /etc/apt/preferences.d/00percona.pref

добавим следующие строки

Package: *
Pin: release o=Percona Development Team
Pin-Priority: 1001

Обновим список пакетов

apt-get update

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

apt-get install percona-server-server percona-server-client libmysqlclient18

При установке из squeeze репозитория:

apt-get install -t squeeze percona-server-server percona-server-client libmysqlclient16

При установке будет запрошен пароль для Percona сервера.

Если установка будет прервана из за конфликта зависимостей, то устанавливаем зависимости командой

apt-get install -f

Введите следующую команду, чтобы проверитьуспешность установкиPerconaServer.

mysql -u root -p

Пример вывода

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 201
Server version: 5.6.14-62.0 Percona Server (GPL), Release 62.0

Copyright (c) 2009-2013 Percona LLC and/or its affiliates
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

После первых тестов сервера выяснилось что Percona на локальном сервере-виртуалке потребляет около 80% доступной оперативной памяти даже в простое. По крайней мере с конфигом по умолчанию. Напомню что виртуалка создавалась с 512мб оперативы.

При использовании MySQL из репозитория на сервере с Debian 6 даже со стандартными конфигами без тюнинга такого не наблюдалось. В качестве нагрузки я устанавливал на хост этот же сайт.

Возможно такая ситуация возникает из-за конфликта зависимостей, так как я использовал php 5.3 и клиент для работы с базой данных из репозитория squeeze.

При попытке добавить в конфиги файл /etc/mysql/my.cnf которым обычно можно тюнить сервер, и добавив несколько директив - Percona перестала запускаться.

Погуглив выяснилось также что по умолчанию my.conf не создается в Percon'е и примеров файла как в мускуле тут нет.

Еще немного покопав основной конфиг и не добившись снижения потребляемой памяти - я решил заменить Перкону на известный мне Mysql.

На другом тестовом сервере с дистрибутивами wheezy Percona потребляла около 40% общей памяти от 512мб на сервере.

Отключив InnoDB и протестив еще раз - изменений небыло. Все те же 40% процентов. А это, как мне кажется для VDS-ки будет уже неприемлемо.

Для того чтобы узнать какие настройки сейчас использует mysql, смотрим команду:

mysqld --help --verbose

До MySQL 5.5 поддержка InnoDB отключалась с помощью строчки "skip-innodb" в /etc/mysql/my.cnf.

Но с выходом MySQL 5.5 поменялся синтаксис, и теперь при использовании строки "skip-innodb", mysql не стартует:

[FAIL] Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

Для отключения теперь пишем в /etc/mysql/my.cnf:

ignore-builtin-innodb
default-storage-engine=MyISAM

Percona же пишет:

[Warning] The option innodb (skip-innodb) is deprecated and will be removed in a future release
[Note] Plugin 'InnoDB' is disabled.

Если у вас есть информация по тестированию и тюнингу Percona на слабых Vds - пишите в комментах.

Здесь решение по уменьшению объема потребляемой оперативной памяти.

Возможно эта статья сэкономит вам время и нервы, и вы не станете сразу устанавливать Перкону на продакшен сервер, а также, сначала протестируете сборку в песочнице.

Просмотров: 21854 Назад  

Комментарии 

#3 fff
29.10.2015 15:14
Вот этой командой
apt-get remove mysql*
удаляется далеко не только mysql, а еще много чего.
#2 Валерий
05.10.2015 14:46
Просто команды надо было разделить и написать с новой строки. Визуальный редактор после обновления статьи подкачал. Исправил.
#1 Артем
06.08.2015 14:13
Скорее всего у Вас опечатка
apt-get remove phpmyadmin apt-get autoremove
надобы поменять на
apt-get remove phpmyadmin && apt-get autoremove

Добавить комментарий


Защитный код
Обновить

 
Рекомендуем по теме...

Новое в Блоге

10.08.16 RDP Patch для Windows -…

Часто при подключении через удаленный рабочий стол локального пользователя просто «выкидавает». Требуется одновременная работа…