среда, 28 декабря 2016 г.

bacula очистка баз от бэкапов





На данный момент сделать второю полную копию хранилища на сервере PDC невозможно – недостаточно места на разделе /mnt/bacula/ ( примонтирован по iSCSI nas4free )
Для этого делается очистка баз от бэкапов:
1. меняем дату в файле:
sudo vi /usr/local/bin/purge-db-and-files.sh


до какого числа очистить базу
DATEFROM=2015-02-12
 и запускаем его
cd /usr/local/bin/
purge-db-and-files.sh

2. далее чистим хранилище /mnt/bacula/
эта папка (/mnt/bacula/) примонтирована по ISCSI с сервера nas4Free
sudo rm -rf /mnt/bacula/*_volume-*
если действительно хотим удалить все:
sudo rm -rf /mnt/bacula/*_volume-*



purge-db-and-files.sh

 #!/bin/bash

  DATEFROM=2016-12-26
  BACKUPFOLDER="/mnt/bacula"

  #GETLISTFROM="BCONSOLE"
  GETLISTFROM="MYSQL"

  # get list to prune
  if [[ "${GETLISTFROM}" == "BCONSOLE" ]] ; then
    DELETELIST=`echo -e "sqlquery\nselect VolumeName from Media where LastWritten < '${DATEFROM}' order by VolumeName;\n.\nexit" | bconsole | grep '^|' | grep -v ' VolumeName ' | sed -e 's/[ ]*|[ ]*//g'`
    echo "Using bconsole"
  elif [[ "${GETLISTFROM}" == "MYSQL" ]] ; then
    DELETELIST=`mysql --database=bacula --column-names=FALSE -e "select VolumeName from Media where LastWritten < '${DATEFROM}' order by VolumeName;" | sed -e 's/[ ]*|[ ]*//g'`
    echo "Using mysql"
  fi
  if [[ -z "${DELETELIST}" ]] ; then
    echo "No records found earlier than ${DATEFROM}"
    exit 1
  fi
  #echo -e "${DELETELIST}"
  echo  "${DELETELIST}"
  echo
  echo "WARNING: IT WILL DESTROY THAT FILES ON THE DISK"
  echo "Are you sure you want to proceed?"
  read -p 'Type YES if you really want to proceed: ' input
  echo
  if [[ ${input} != YES  ]]; then
    echo "Ok. Aborting."
    exit 1
  fi

  echo -e "${DELETELIST}" | xargs -I '{}' echo delete yes volume='{}' | bconsole
  echo -e "${DELETELIST}" | xargs -I '{}' echo "rm ${BACKUPFOLDER}/"'{}' | while read LINE ; do echo "${LINE}"; "${LINE}"; done

Bacula. Fatal error: Uncaught exception 'Zend_Exception' with message 'Fatal error: Can't connect to SQL server'

Изначально Система резервного копирования строилась по этой статье:


Развертывание Bacula в малом офисе 

Все работает по статье нормально.

НО что у меня объем хранилища 4ТБ, а объем данных более 2 ТБ. В итоге приходится чистить базу и запускать бэкап заново

Однажды после такой чистки получил  ошибку:


Fatal error: Uncaught exception 'Zend_Exception' with message 'Fatal error: Can't connect to SQL server' in /var/www/webacula/html/index.php:178
Stack trace:
#0 {main}
  thrown in /var/www/webacula/html/index.php on line 178

проблема с SQL server
 
проверяем место на жестком диске

user@bacula:/$ df -h
Файл.система                Размер Использовано  Дост Использовано% Cмонтировано в
/dev/mapper/bacula--vg-root    71G          67G     0          100% /
udev                          994M         4,0K  994M            1% /dev
tmpfs                         201M         736K  200M            1% /run
none                          5,0M            0  5,0M            0% /run/lock
none                         1004M            0 1004M            0% /run/shm
/dev/sda1                     236M          35M  189M           16% /boot
overflow                      1,0M            0  1,0M            0% /tmp
/dev/sdb1                     2,5T          62G  2,3T            3% /mnt/bacula
 


подозрительно

/dev/mapper/bacula--vg-root    71G          67G     0          100% /

ищем самую большую папку

user@bacula:/$ sudo du -s * | sort -nr | head

получили 
 
64186796        mnt
2844792         var
870928          usr
213648          lib


user@bacula:/var/lib$ sudo du -s * | sort -nr | head
2373428 mysql
120132  apt
56068   mlocate
34008   postgresql
29968   dpkg
8036    aptitude
3488    aspell
2072    apt-xapian-index
1648    bacula

в итоге нашел файл


user@bacula:/var/lib$ sudo ls -la  /var/lib/mysql/ibdata1
-rw-rw---- 1 mysql mysql 2418016256 дек.  26 17:52 /var/lib/mysql/ibdata1


что такое ibdata1 нашел здесь

Второй параметр – задаёт размещение файла ibdata1 (т.к. путь не указан – будет использоваться “хранилище” MySQL – /var/lib/mysql )

ibdata1 увеличился видимо, когда /mnt/bacula не был примонтирован

не запускался MySql






в итоге удалил 
ibdata1 и логи

после этого 
запускался MySq

но webacula не запустился

было решено пересоздать базу bacula и таблицы webacula по статье

выполнить команды:
 
Если после наших эксперементов нам нужно удалить все тестовые джобы, делаем это так:
$ mysql -u root -p
mysql> drop database bacula;
mysql> quit

$ dpkg-reconfigure bacula-director-mysql
Мы уничтожили базу данных, а затем создали ее вновь. Осталось удалить сами файлы томов.
 и
Далее создаем таблицы Webacula, пользователей и роли:
$ cd install/MySql
$ ./10_make_tables.sh
$ ./20_acl_make_tables.sh


после этого система заработала