Конечным исполнителем всех операций являются
pg_dump
иpsql
. Если вы создали бэкап на одном сервере, а восстанавливаете на другом — убедитесь что вы идете с повышением версии PostgreSQL командойpsql -V
. При понижении версии бэкап скорее всего развернут не будет.
Выполните из папки тотума (для multi смотрите дальше):
bin/totum schema-backup file_dump.sql
# можно не переносить логи и автоматически сжимать в gz:
bin/totum schema-backup --no-logs --gz file_dump.sql
# можно не переносить некоторые таблицы:
bin/totum schema-backup --no-content="table_name_1,table_name_2" file_dump.sql
Если мы дампируем multi, то помимо других параметров необходимо указать какую конкретную схему:
bin/totum schema-backup --schema="shema_name" prod_dump.sql
Создаем дамп. Выполняем из корневой папки Тотум. Замените USER
и PASSWORD
на соответствующие вашей БД.
SCHEMA_NAME
— имя схемы. Посмотреть можно в любой таблице в Тотум в верхнем правом углу.
pg_dump -O --dbname=postgresql://USER:PASSWORD@LOCALHOST:5432/DB_NAME --schema="SCHEMA_NAME" > db_backup_name.sql
-O
— означает без owner, те этот дамп можно будет восстановить на другом хосте.
db_backup_name.sql
— вы можете создать папку backups
в корневой папке тотума и указать полный или относительный путь до нее вместе с название файла копии.
bin/totum schema-backup
выполняет командуpg_dump
исключая лог внешних синхронизаций и временные таблицы!
Полная команда такая:
pg_dump -O --dbname=postgresql://USER:PASSWORD@LOCALHOST:5432/DB_NAME --schema="SCHEMA_NAME" --no-tablespaces --exclude-table-data='_tmp_tables' --exclude-table-data='_bfl' | grep -v '^--' > db_backup_name.sql
Вы можете поставить создание дампа в cron
в самом Тотум, использовав функцию execSSH.
Пример кода Totum создающего копии в корневой папке тотума:
PATH_TO_TOTUM_FOLDER
— замените на путь к папке Тотум. Посмотреть можно выполнив pwd
в консоли сервера.
Вторым действием удаляет 7-дневный файл. Ставить в крон на исполнение 1 раз в день.
Для no-mutli
:
= : while(action: $a1; action: $a2)
a1: execSSH(ssh: "cd ~/totum-mit && bin/totum schema-backup --gz '%schema%-%Y%-%m%-%d%.sql'")
a2: execSSH(ssh: str`"cd ~/totum-mit && rm SCHEMA_NAME-" + $dm + ".sql.gz"`)
dm: dateAdd(date: $#nd; days: -7; format: "Y-m-d")
// замените SCHEMA_NAME на ваше имя схемы — посмотрите в созданном ранее бэкапе
Если выполняете это в multi
, то в команде создания добавьте перед --gz
параметр --schema='SCHEMA_NAME'
заменив SCHEMA_NAME
на имя схемы:
= : while(action: $a1; action: $a2)
a1: execSSH(ssh: "cd ~/totum-mit && bin/totum schema-backup --schema='SCHEMA_NAME' --gz '%schema%-%Y%-%m%-%d%.sql'")
a2: execSSH(ssh: str`"cd ~/totum-mit && rm SCHEMA_NAME-" + $dm + ".sql.gz"`)
dm: dateAdd(date: $#nd; days: -7; format: "Y-m-d")
// замените SCHEMA_NAME на ваше имя схемы — посмотрите в созданном ранее бэкапе
Если при выполнении Тотум выдасть предупреждение о блокировке execSSH — снимите в Conf.php в корневой папке установки комментарий со строки /* protected $execSSHOn = true;*/
должно быть -> protected $execSSHOn = true;
Файлы расположены ~/TOTUM_FOLDER/http/fls
.
Для multy ~/TOTUM_FOLDER/http/fls/HOST
Вам нужно бэкапировать эти папку любым способом.
При выполнении этой операции из корневой папки тотум схема БД полностью заменяется на схему из prod_dump.sql:
bin/totum schema-replace file_dump.sql
По умолчанию кроны при загрузке отключаются, можно это отменить:
bin/totum schema-replace --with-active-crons file_dump.sql
Если восстанавливается схема в multy, то необходимо указать новую или существующую (для замены) схему:
# если заменить cуществующую:
bin/totum schema-replace --with-active-crons file_dump.sql schema_name
# если создать новую:
bin/totum schema-replace --with-active-crons file_dump.sql schema_name host.zone
Для восстановления заходим в psql и папки в которой лежит файл с бэкапом. Замените USER
и PASSWORD
на соответствующие вашей БД.
psql --dbname=postgresql://user:password@localhost:5432/db_name
Переименовываем текущую схему в резерв:
ALTER SCHEMA имя_схемы RENAME TO имя_резерв;
# enter, точка с запятой в конце строки обязательна
Заливаем восстановление:
\i имя_файла_бэкапа
# enter без точки с запятой
Проверяете восстановление и если ок, то удаляете переименованную старую схему
DROP SCHEMA имя_резерв CASCADE;
# enter, точка с запятой в конце строки обязательна
Как посмотреть список всех схем в базе:
select schema_name from information_schema.schemata;
# enter, точка с запятой в конце строки обязательна
Выходим
\q
# enter