Конечным исполнителем всех операций являются
pg_dump
иpsql
. Если вы создали бэкап на одном сервере, а восстанавливаете на другом — убедитесь, что вы идете с повышением версии PostgreSQL командойpsql -V
. При понижении версии бэкап, скорее всего, развернут не будет.К частичному переносу таблиц внутренними средствами Тотум это не относится.
Замените shema_name
на ваше имя схемы (по умолчанию totum):
bin/totum schema-backup --schema="shema_name" prod_dump.sql
Mожно не переносить логи и автоматически сжимать в gz:
bin/totum schema-backup --schema="shema_name" --no-logs --gz prod_dump.sql
Можно не переносить некоторые таблицы:
bin/totum schema-backup --schema="shema_name" --no-content="table_name_1,table_name_2" prod_dump.sql
Чем больше дамп базы тем дольше будет выполняться загрузка. Прерывание операции любым способом — приведет к неработоспособности решения.
Убедитесь, что с целевой базой никто не работает в момент загрузки!
Замените SCHEMA_NAME_FOR_REPLACE
на имя целевой схемы:
bin/totum schema-replace prod_dump.sql SCHEMA_NAME_FOR_REPLACE
При выполнении этой операции схема БД полностью заменяется на схему из prod_dump.sql
Если содается новая схема то замените SCHEMA_NAME_FOR_REPLACE
на желаемое имя схемы и HOST_FOR_SCHEMA
на подключаемых HOST
(указывается без протокола):
bin/totum schema-replace prod_dump.sql SCHEMA_NAME HOST_FOR_SCHEMA
По умолчанию кроны при загрузке отключаются, можно это отменить:
bin/totum schema-replace --with-active-crons prod_dump.sql SCHEMA_NAME_FOR_REPLACE
В Totum-PRO есть механизм позволяющий выгружать и загружать наборы таблиц с данными или без.
Таким образом, вы можете переносить части решения из одной схемы в другую.
Этот же механизм используется для обновления core-таблиц.
Основная таблица для создания и загрузки находится Системные таблицы
— PRO
— Импорт/экспорт
Таблицы выгружаются и загружаются по
name
. Поэтому, если у вас в двух базах имеются разные таблицы имеющие одинаковыйname
– перенос не удастся, так как при загрузке таблица с совпадающимname
будет перезаписана.Если вы хотите создать выгрузку для тиражного распространения, то при проектировании используйте свой префикс перед названиями таблиц из 3-4 букв и двух нижних подчеркиваний. Для новых системных таблиц мы используем
ttm__
.
Тотум имеет ряд системных таблиц name
которых не могут быть использованы для пользовательских таблиц:
auth_log
calc_fields_log
calcstable_cycle_version
calcstable_versions
crons
log_structure
notification_codes
notifications
panels_view_settings
print_templates
roles
settings
table_categories
tables
tables_fields
tree
users
и таблицы с префиксом ttm__
Чтобы создать выгрузку нажмите СОЗДАТЬ ВЫГРУЗКУ
— вам необходимо выбрать какие таблицы в нее попадут, какие настройки этих таблиц выгружаются и какие поля будут в них выгружены, а также настройки выгрузки данных.
Также задайте Название выгрузки
и если требуется Описание
.
На основании выбранных таблиц в выгрузку будут добавлены элементы Дерева, Роли и Категории таблиц.
Когда вы нажимаете СОЗДАТЬ ВЫГРУЗКУ
, в таблицу Системные таблицы
— Импорт/экспорт
— Импорт/экспорт
будет добавлена строка содержащая запакованный в gzip
json
с дополнительным расширением .ttm
.
Этот файл можно скачать и загрузить в другую схему.
Для загрузки закачайте файл выгрузки в поле Файл загрузки
нажмите на ЗАГРУЗИТЬ ФАЙЛ
. Загрузка в схему в этот момент не происходит — файл с данными будет распакован и откроется окно настроек загрузки.
Будьте внимательны загружая файл от непроверенного источника, он может содержать изменения в базовых таблицах или вредоносные коды. Не выполняйте последующие этапы, если не можете проанализировать действия этих кодов или не уверены в поставщике!
При загрузке по каждой таблице может выполняться добавление
таблицы, обновление
ее полей и обновление данных
в таблице.
Если name
загружаемой таблицы совпадает с name
таблицы в схеме — то произойдет обновление настроек таблицы и настроек полей.
Вы можете управлять тем, какие настройки и поля будут обновлены.
Удаление полей может быть осуществлено только через исполняемый код — его можно увидеть в поле Код каждой таблицы.
При загрузке данных имеет значение тип действия ключевые поля.
На основе ключевого поля Тотум определяет соответствие данных, уже содержащихся в таблице и загружаемых данных.
Тип определяет действие — добавлять и изменять
, только добавлять
, только изменять
.
Ключевые поля обязательно должны быть указаны в списке полей, по которым выгружаются данные.
При загрузке вам необходимо указать соответствие Ролей, Дерева и Категорий в схеме, в которую ведется загрузка и в загружаемом файле.
Например, роль Руководитель в схеме выгрузки и загрузки может иметь разные id (аналогично папки дерева и категории таблиц).
Вам необходимо указать соответствия или указать, что необходимо создать новую запись.
При загрузке эти соответствия будут записаны в поле matches
таблицы Импорт/экспорт
для последующих загрузок.
Поиск матчесов ведется по имени файла загрузки.
Поле matches
таблицы Импорт/экспорт
определяет автоматические соответствия ролей
, дерева
и категорий
для загружаемых схем.
Массив totum_**
является техническим и необходимо для корректной установки обновлений.
Поле содержит массив:
ключи
— номера id
в загружаемой схеме
значения
— номера id
в текущей схеме
Если соответствие не найдено, то загружаемый элемент создается и автоматически обновляется matches
.
Выгрузка может содержать коды, которые будут выполнены при загрузке.
Коды выполняются после загрузки настроек, полей и данных таблицы.
В коде передается несколько переменных:
$#insertedIds
— id
добавленных строк, если было добавление данных.
$#changedIds
— id
измененных строк, если было добавление данных.
$type
—
install
если таблица добавляется в пустую схему БД.update
если таблица добавляется в уже существовашшую схему БД.$#is_table_created
— true
если таблица впервые добавлена в схему.
Коды при загрузке выполняются без всяких ограничений по доступам!
Для обновления схемы можно использовать консольную утилиту bin/totum
.
Загрузите на сервер файл загрузки **.gz.ttm
.
Выполните из корневой папки тотума:
Для обновления всех схем:
bin/totum schemas-update MATCHES_NAME PATH_TO_FILE
Для обновления одной схемы:
bin/totum schema-update MATCHES_NAME PATH_TO_FILE --schema="SCHEMA_NAME"
MATCHES_NAME
— если загрузка производится впервые для схемы и соответсвие вMatches
не будет найдено, то все элементыДерева
,Ролей
иКатегорий
будут обработаны как добавляемые за исключением ролиСоздатель
и будет создана запись соответствий вMatches
с указанным именем.Если при создании выгрузки необходимо поставили галочку в поле Матчить существующие
f_match_existings
. То при загрузке будут созданы соответсвия один к одному.
Если предполагается тиражируемое решение или проект невозможно модифицировать на находящемся в эксплуатации сервере — то:
Создаем PROD
и разрабатываем на нем решение. Если вы разрабатывали на TEST
то начните с п.3
—
TEST/PROD расположены на разных серверах
2.1 Создаем выгрузку с PROD
при помощи консольной команды:
bin/totum schema-backup --schema="shema_name" prod_dump.sql
2.2 Разворачиваем чистый TEST
на отдельном сервере/папке и базе и загружаем созданную выгрузку:
bin/totum schema-replace prod_dump.sql totum
TEST/PROD расположены на одном сервере в разных схемах
2.1 Выполняем:
bin/totum schema-duplicate NAME_PROD_SCHEMA NAME_NEY_TEST_SCHEMA URL_FOR_TEST
Создаем master-выгрузку из TEST
— эта выгрузка будет основной, название файла будет использовано в matches
в PROD
f_match_existings
. Если они стоит, то при загрузке в PROD
будут автоматически сматчены один к одному элементы дерева, роли и категории таблиц.Для обновления:
5.1 Разрабатываем на TEST
.
5.2 Обновляем master-файл при помощи Создать по текущим настройкам
5.3 Загружаем файл в схему или схемы через интерфейс или bin/totum
.
Если у вас TEST и PROD находятся на одном сервере в разных schema
, и вы загружаете через bin/totum
то необходимо исключить TEST из обновления:
bin/totum schemas-update MATCHES_NAME PATH_TO_FILE --exclude="schema1,schema2" --exclude="schema3"`
5.4 Если вы разрабатывали на TEST
и переносите проект на PROD
, то создайте master-выгрузку с TEST
, создайте чистый PROD
и загрузите на него master-файл. Matches
будут созданы по имени файла.
! В случае переноса данных зашифрованных через strEncrypt на другой сервер, необходимо скопировать содержимое файла
Crypto.key
из корня установки/home/totum/totum-mit/Crypto.key
тк при создании нового сервера ключ генерируется случайным образом.