Репликация базы данных mariadb на локальную машину в режиме master-slave
В данной статье рассмотрим настройку репликации базы данных asterisk на локальный сервер Для начала поговорим о тех ситуациях, когда это может понадобится. Может так случиться , что у вас давно стоит сервер телефонии на базе asterisk и он в принципе хорошо работает, но у вас появился какой-нибудь сторонний сервис который работает с базой данных астериска […]

В данной статье рассмотрим настройку репликации базы данных asterisk на локальный сервер
Для начала поговорим о тех ситуациях, когда это может понадобится.
Может так случиться , что у вас давно стоит сервер телефонии на базе asterisk и он в принципе хорошо работает, но у вас появился какой-нибудь сторонний сервис который работает с базой данных астериска (например, статистика) который посылает довольно много запросов в базу , или ещё каким-то образом её использует и под такой нагрузкой начинаются проблемы непосредственно с телефонией(заикания, пропажа голоса, шумы, или вообще весь сервер останавливается), при этом сделать апгрейд железа на сервере не представляется возможным.
В таком случае как раз подойдёт метод репликации, который позволит снять часть нагрузки с вашего основного сервера на другой.
Так же у вас появится возможность снять дамп с базы не останавливая при этом ваш главный сервер, а остановив только slave.
В данной статье для наглядности так же будет использоваться web- интерфейс phpmyadmin.
Есть сервер с астериском(FreePBXdistro) с адресом 192.168.32.176 , который работает в штатном режиме, а также есть свободная машина с адресом 192.168.32.99 ; на ней мы и развернём вспомогательный сервер, на который будет реплицироваться стандартная база данных астериска : asteriskcdrbd в которой находятся записи о совершенных звонка.
Для этого подготовим нашу машину , в рамках данной статьи будем делать это на CentOS 7 , ставим эту систему на наш сервер и делаем yum update

далее установим репозиторий EPEL:

далее устанавливаем Mariadb :

добавляем в автозагрузку:

Запускаем и задаём пароль:

Устанавливаем PHP и PHP-FPM


Заносим PHP-FPM в автозагрузку и запускаем его:

Чтобы php скрипты могли работать с базами данных ставим php-mysql php-mysqli:

Следующим поставим Apache

И запускаем его

для того чтобы убедиться что апач работает, заходим в браузере на айпи адрес нашего сервера, и если видим такую картину, — то всё хорошо

Далее устанавливаем PHPMyAdmin

Теперь надо дать доступ к нему для удалённой машины, для этого редактируем файл /etc/httpd/conf.d/phpMyAdmin.conf
и добавляем следующие как на скриншоте, с поправкой на то, что добавлять нужно тот айпи адрес, с которого потом будете заходить на веб интерфейс phpmyadmin

делаем service httpd restart и в браузере вбиваем ip.адрес.вашего.сервера/phpmyadmin
Видим веб интерфейс:

Логинимся пользователем и паролем которые задавали для mariadb
И видим перед собой домашнюю страницу phpmyadmin

На этом начальная конфигурация подничённого сервера завершена, перейдём к настройкам master-server
В файл etc/my.cnf в секцию [mysqld] вносим следующие данные
server-id=1
log_bin=/var/lib/mysql/mysql-bin
log_error=mysql-bin.err
replicate-do-db=asteriskcdrdb

Далее нужно добавить пользователя для репликации баз данных
Обычно в других статьях пишут это делать в таком виде
mysql@master> GRANT replication slave ON «вашабд».* TO «replication»@»192.168.1.1» IDENTIFIED BY «password»;
но так вы получите следующую ошибку

Перезагрузим MySQL, чтобы изменения в конфиге вступили в силу
После этого изменения вступают в силу, и если всё сделано правильно, — команда SHOW MASTER STATUS должна показать примерно следующее
Далее настраиваем подчинённый сервер
Точно так же в файле /etc/my.cnf
в секцию [mysqld] добавляем следующие данные
server-id=2
relay-log = /var/lib/mysql/mysql-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
replicate-do-db = asteriskcdrdb

Далее нужно перенести данные, для этого воспользуемся установкой параметра read_only на мастере

после этого смотрим командой «show master status» данные и запоминаем их.

Далее делаем бэкап интересующей нас базы данных
mysqldump -u user -ppassword asteriskcdrbd > /путь/до/файла дампа/dump.sql
а на slave разворачиваем его
mysql -u user -ppassword asteriskcdrbd < /путь/до/файла дампа/dump.sql
И наконец то запускаем саму репликацию баз данных .
CHANGE MASTER TO MASTER_HOST = "192.168.1.176 ", MASTER_USER = "replication ", MASTER_PASSWORD = "123456 ", MASTER_LOG_FILE = "mysql-bin.000010 ", MASTER_LOG_POS = 1635;
затем start slave;
Если всё сделано правильно то в веб интерфейсе phpmyadmin увидим следующее:
на мастере :

на слейве :

Наглядности создадим новую таблицу на мастере и посмотрим, появится ли она на подчинённом сервере

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

Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.