Redmine: backup, restore
Бэкапирование Redmine
Создаем файл с параметрами подключения к базе, для того что бы в дальнейшем создавать дамп PostgreSQL без ввода пароля
$ sudo nano /root/.pgpass
localhost:5432:redmine:redmine:%password%
$ sudo chmod 600 /root/.pgpass
Делаем бэкап базы:
$ sudo pg_dump -d "redmine" -h localhost -Fc -U redmine -w -f "/opt/redmine/$(date +%Y%m%d_%H%M%S)_redmine.dump"
Делаем бэкап директории, где установлен Redmine
Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров
Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.
$ tar -czf /opt/redmine/$(date +%Y%m%d_%H%M%S)_redmine.tar.gz /opt/redmine-4.0.5
Эти действия можно оформить скриптом и добавить скрипт в crontab
Восстановление Redmine
Рассмотрим вариант, когда надо восстановить Redmine на чистый сервер.
Вначале нам надо установить Redmine в соответствии с одной из предыдущих статей, но п.7 “Устанавливаем Redmine. Продолжение” немного изменится:
Переходим в каталог и прописываем настройки для PostgreSQL
$ cd /opt/redmine-4.0.5/
$ bundle config build.pg --with-pg-config=/usr/pgsql-10/bin/pg_config
Устанавливаем необходимые gems (в данном случае локально)
$ bundle install --without development test mysql2 sqlite --local
Создаем файл с параметрами подключения к базе, для того что бы в дальнейшем создавать дамп PostgreSQL без ввода пароля
$ sudo nano /root/.pgpass
localhost:5432:redmine:redmine:%password%
$ sudo chmod 600 /root/.pgpass
Остановим web-сервер Nginx, что бы не было подключений к базе
$ sudo systemctl stop nginx
Подключаемся к БД
$ sudo su - postgres
-bash-4.2$ psql
Если в PostgreSQL есть база redmine к примеру с тестовыми данными, удаляем ее и создаем чистую
postgres=# DROP DATABASE redmine;
postgres=# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
postgres=# \q
-bash-4.2$ exit
Восстанавливаем базу из дампа и запускаем Nginx:
$ sudo pg_restore -h localhost -U redmine -d "redmine" -v "/tmp/20200115_094958_redmine.dump"
$ sudo systemctl start nginx
Восстанавливаем файлы Redmine из архива, сохранив их в каталог /opt/nginx-4.0.5
Запускаем генерацию токена:
$ bundle exec rake generate_secret_token
Обновляем структуру БД
$ RAILS_ENV=production bundle exec rake db:migrate
Перезагружаем Nginx
$ sudo systemctl restart nginx
Готово, Redmine восстановлен