Задача: разобрать, как сделать бекап конфигурации и базы данных для приложения 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 которая на основе заданных координат состоящих из интервалов записывает значения по кругу и записывает формируемые параметры в узлах таких интервалов, такой тип работ именуется, как RRD – Round-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) наблюда все свои добавленные хосты на мониторинг:
Задача по бекапированию и восстановлению успешно проработана, может также случиться что в последствии я буду использовать какие-либо самописные скрипты и их также нужно будет включить в бекап, но это будет тема следующей заметки. Лучше при написании заметок преследовать цель: одна задача – одна заметка, чтобы не плодить, а если если если. На этом считаю заметку выполненной и прощаюсь, до встречи с уважением – автор блога – ekzorchik.