Показаны сообщения с ярлыком mysql. Показать все сообщения
Показаны сообщения с ярлыком mysql. Показать все сообщения

MySQL (MariaDB): репликация базы Master - Slave

Репликация позволяет иметь копию рабочей базы на другом сервере и обновлять её в режиме реального времени. Можно снизить нагрузку на рабочем сервере делая SELECT запросы в базу на слейве, или бекапить данные с копии на слейве не нагружая основной сервер.

В моём случае между серверами настроено VPN подключение, через которое будет происходить обмен данными. Репликацию базы будем делать по схеме Master (10.1.254.1) - Slave (10.1.254.3).

Asterisk: кто ответил клиенту в очереди

Нам нужно получить номер оператора, который ответил клиенту в очереди. В случае, если мы используем Asterisk CDR Viewer Mod, то в поле Куда звонили нам нужно отображать номер оператора принявшего звонок. На данный момент в случае работы очереди, там отображается "s" (триггер по умолчанию также отображал неверный номер при использовании очереди).
Сначала добавим новое поле в mysql базу, потом научим астериск писать туда номер ответившего сотрудника, далее напишем mysql триггер, который будет перезаписывать поле dst нужным номером в случае попадания в очередь (из диалплана dst доступен только для чтения, поэтому мы будем подменять его триггером).

MySql: подключаем таблицу из удаленной базы

Нужно из локальной базы MySql на первом сервере обратиться к таблице в базе на втором сервере. Чтобы не тянуть всю базу, не настраивать сложные условия синхронизации было принято решение организовать локальную FEDERATED таблицу, которая будет обращаться к удаленной таблице. Это быстрее, часто безопаснее (при правильной настройке) и проще.

Порядок действия следующий: включаем поддержку FEDERATED на первом сервере MySQL, создаем на нем federarted таблицу с такой же структурой (либо только с необходимыми полями), настраиваем VPN доступ до необходимого сервера, на втором сервере создаем пользователя mysql с требуемыми правами доступа к необходимой таблице с требуемого IP адреса.

MySQL: основные команды, бекап, bash скрипт, сброс root пароля

Простой скрипт, который локально на сервере бекапит сайт и данные в домашнюю папку пользователя и хранит копии за последние 7 дней. Можно быстро сохранить сайт изменив пути в скрипте и использовать для переноса сайта на новый хостинг.

В данном примере имя базы данных: site_base, файлы располагаются по адресу /var/www/site-dir.

Asterisk: SQL запросы, время ожидания в очереди, переменные в dialplan из файла

К моим клиентам в call центр иногда поступает большой поток звонков. Одни их них придумали свой нестандартный способ переключения режима фоновой музыки (автоинформатора) в очереди астериска в зависимости от нагрузки на операторов, который не реализуется штатными средствами.  Мы будем анализировать логи очередей и по заданным условиям менять настройки диалплана. Условия были озвучены следующие:
1. Если за последний час в очереди было не менее 4х клиентов ожидающих ответа более 4 минут, то менять режим сообщений информатора очереди на усиленный (3852-hard).
2. Если за последний час в очереди было менее 4х клиентов ожидающих ответа более 6 минут, то возвращаем режим сообщений информатора очереди на обычный (3852-soft).

Оптимизация работы web-сервера nginx+php-fpm

 Оптимизация работы web-сервера nginx+php-fpm
Попросили оптимизировать скорость работы сайта на VDS (nginx, php-fpm,mysql). Эту заметку написал больше для себя, оптимизирую работу веб серверов не часто, что-то могу забыть.

Начинаем с самого элементарного, создаем нагрузку на сайт с любого другого компьютера посредством программы siege (50 одновременных подключений):
sudo apt-get install siege
siege -c 50 site.ru
На сервер открываем htop и смотрим нагрузку. Видим, что в основном сервер нагружает php-fpm а также медленно ворочается mysql. Для php-fpm проверяем, что тип пула dynamic, корректируем количество дочерних процессов (pm.max_children) в зависимости от количества памяти, проверяем, что работа идет через сокет (а не через порт) и включаем opcache. В целом этих мер должно быть достаточно. Далее - оптимизация СУБД.

Удаленный доступ к базе MySql

Нам нужно дать доступ к MySQL базе на удаленном сервере. При этом задействовать минимально возможные разрешения.

Разобьем задачу на 2 этапа: откроем доступ к mysql извне только для конкретного IP адреса и создадим пользователя, ограничив ему набор прав до работы с конкретными таблицами в БД.