Задача: разобрать, как сделать бекап конфигурации и базы данных для приложения cacti с последующим разворачиванием созданного бекапа на другой системе Ubuntu 12.04.5 Server amd64

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

  • Сохранить настройки конфигурации
  • Сохранить базу данных
  • Проработать процесс восстановления настроек
  • Проработать процесс восстановления базы данных

Что ж задачи более или менее ясны, приступаю:

Создаю каталог где будут располагаться бекапы:

ekzorchik@srv-mon:~$ sudo mkdir /media/backup

ekzorchik@srv-mon:~$ mysql -u root -p712mbddr@ -e "show databases"

+——————–+

| Database |

+——————–+

| information_schema |

| cacti |

| mysql |

| performance_schema |

+——————–+

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

ekzorchik@srv-mon:~$ sudo /etc/init.d/apache2 stop

ekzorchik@srv-mon:~$ sudo /etc/init.d/mysql stop

Делаю бекап базы данных cacti:

ekzorchik@srv-mon:~$ sudo su -

root@srv-mon:~# mysqldump --user root --password=712mbddr@ --add-drop-table --databases cacti > /media/backup/backup_cacti_database_backup_$(date '+%d_%m_%Y%k').sql

Полученный бекап составил:

root@srv-mon:~# du --si --max-depth=1 /media/backup/backup_cacti_database_backup_01_08_201510.sql

410k /media/backup/backup_cacti_database_backup_01_08_201510.sql

, но такой размер это только пока.

Хочу дополнить, что в основе приложения Cacti лежит утилита RRDTool которая на основе заданных координат состоящих из интервалов записывает значения по кругу и записывает формируемые параметры в узлах таких интервалов, такой тип работ именуется, как RRDRound-robin database, поэтому нужно также забекапировать каталог:

ekzorchik@srv-mon:~$ sudo du --si --max-depth=1 /var/lib/cacti/rra/

12M /var/lib/cacti/rra/

ekzorchik@srv-mon:~$ sudo tar zcfP "rra_cacti_$(date '+%d_%m_%Y%k').gz" /var/lib/cacti/rra/

Отлично бекап я сделал, вообщем-то и ничего сложного нет, теперь нужно раскатать/мигрировать его на другую систему, предположим что по каким-либо причинам текущая не работоспособна. Там где я сейчас работаю, пока я сам не переподнял кластер corosync+pacemaker такое может случиться, потому как предыдущий админ был экспериментатор но в минус работоспособности вверенной инфраструктуры, вот и сейчас обнаружился такой существенный минус его кластера, созданные виртальные машины имеют диски по минимуму, иногда 3Gb-15Gb, а вот расширить их нельзя (не заложен данный функционал в текущее). Но это собственно и не имеет значение к текущей заметки, иду дальше.

Т.к. я использую контроль над всеми кто выходит в интернет, то мне понадобиться на новой системе настроить прослойку для работы с прокси сервером, но это в моем случае – почему я заостряю на этом внимание, да потому, что заметку пишу для самого себя, как шпаргалка. Любым способом передаю на новую систему (к примеру через scp) пакет: (cntlm_0.91~rc6-0ubuntu2_amd64.deb) и устанавливаю:

ekzorchik@srv-serv:~$ sudo dpkg -i cntlm_0.91~rc6-0ubuntu2_amd64.deb

ekzorchik@srv-serv:~$ sudo nano /etc/cntlm.conf

Username ekzorchik

Domain polygon.local

Password 712mbddr@

Proxy IP:3128

Listen 8080

ekzorchik@srv-serv:~$ sudo chmod 600 /etc/cntlm.conf

ekzorchik@srv-serv:~$ sudo /etc/init.d/cntlm restart

Stopping CNTLM Authentication Proxy: cntlm.

Starting CNTLM Authentication Proxy: cntlm.

ekzorchik@srv-serv:~$ sudo nano /etc/apt/apt.conf.d/01proxy

Acquire::http::Proxy “http://127.0.0.1:8080”;

Acquire::::Proxy “true”;

Если же нужен полный доступ в интернет миную прокси сервер, но нужно добавить еще одно правило в iptables на сервеве который смотрит в интернет.

Проверяю, а смогу ли я теперь обновить информацию по текущему состоянию репозитариев:

ekzorchik@srv-serv:~$ sudo apt-get update

вывод показывает, что все работает, хотя я не сомневался, потому как утилиту cntlm я уже рассматривал и использовал ранее и для моих экспериментов она мне здорово помогала.

Так интернет на системе есть (пригодится), проделываем шаги разворачивания приложения cacti с восстановление из бекапа:

ekzorchik@srv-serv:~$ sudo tasksel --list | grep lamp

u lamp-server LAMP server

ekzorchik@srv-serv:~$ sudo tasksel install lamp-server

Удаляю базу cacti если она была:

ekzorchik@srv-serv:~$ sudo mysqladmin -f --user=root --password=712mbddr@ drop cacti

mysqladmin: DROP DATABASE cacti failed;

error: ‘Can’t drop database ‘cacti’; database doesn’t exist’

из вывода видно, что базы нет – хорошо, теперь создаю:
ekzorchik@srv-serv:~$ sudo mysqladmin --user=root --password=712mbddr@ create cacti

Копирую бекап на новую систему со старой (или места где хранятся бекапы):

ekzorchik@srv-serv:~$ scp ekzorchik@10.7.8.165:/media/backup/*.sql /home/ekzorchik

Далее нужно на новую систему в созданную базу импортировать бекап:

ekzorchik@srv-serv:~$ mysql cacti < /home/ekzorchik/backup_cacti_database_backup_01_08_201510.sql --user=root –password=712mbddr@

Также копирую RRD файлы на новую систему со старой (или места где хранятся бекапы):

ekzorchik@srv-serv:~$ sudo scp ekzorchik@10.7.8.165:/home/ekzorchik/rra_cacti_01_08_201510.gz /home/ekzorchik

Устанавливаю приложение Cacti посредством репозитариев: (установка по заметке)

в процессе наблюдаю сложности:

An error occurred while installing the database: │

│ │

│ ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
Next step for database installation: ignore (выбираю)

Внимательно анализирую вывод вижу, что файл в котором описывается, как работать Web-ориентированному представлению cacti с Web-сервером apache следующий:

ekzorchik@srv-serv:~$ sudo nano /etc/cacti/apache.conf

Теперь восстанавливаю файлы RRD на место где сейчас располагается дефолтные:

ekzorchik@srv-serv:~$ sudo tar zxfP rra_cacti_01_08_201510.gz /var/lib/cacti/rra/

Отлично, запускаю браузер и в строке адреса указываю http://IP&DNS/cacti – новой системы:

FATAL: Cannot connect to MySQL server on ”. Please make sure you have specified a valid MySQL database name in ‘include/config.php’

, ага нужно проверить файл подключения к базе cacti: (вижу)

dbc_dbpass=’712ьиввк”‘

я при установке cacti опечатался вводом пароля – исправляю, но лучше не прям вот щас взять и поправить, а использовать инсталлятор:

[ekzorchik@srv-serv ~]$ sudo dpkg-reconfigure cacti

dbconfig-common: writing config to /etc/dbconfig-common/cacti.conf

Replacing config file /etc/cacti/debian.php with new version

granting access to database cacti for cacti@localhost: success.

verifying access for cacti@localhost: success.

creating database cacti: already exists.

populating database via sql… error encountered populating database:

mysql said: ERROR 1050 (42S01) at line 5: Table ‘cdef’ already exists

dbconfig-common: cacti configure: trying again (skip questions).

dbconfig-common: writing config to /etc/dbconfig-common/cacti.conf

Replacing config file /etc/cacti/debian.php with new version

dbconfig-common: flushing administrative password

Проверяю еще раз страницу через Web и меня уже приветствует окно ввода аутентификационных данных, ввожу их только пароль не дефолтный (login:admin pass:admin) , а тот который был на той с которой делали бекап, в моем случае это: 712mbddr@

Открыв: Console – Management (Devices) наблюда все свои добавленные хосты на мониторинг:

Резервная копия cacti восстановлена на системе

 

Задача по бекапированию и восстановлению успешно проработана, может также случиться что в последствии я буду использовать какие-либо самописные скрипты и их также нужно будет включить в бекап, но это будет тема следующей заметки. Лучше при написании заметок преследовать цель: одна задача – одна заметка, чтобы не плодить, а если если если. На этом считаю заметку выполненной и прощаюсь, до встречи с уважением – автор блога – ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru