Вы можете объединять отдельные базы в группы для настройки ротации баз данных. Ротация баз данных в рамках заданной пользователем группы позволяет значительно снизить объем отдельной базы и сократить время обработки поисковых запросов. Переключение между базами данных в группе производится системой при выполнении хотя бы одного из условий:
- превышение определенного размера данных в базе (500 ГБ по умолчанию). При этом размер файлов, которые сохраняются отдельно на диск компьютера, не учитывается (подробнее о сохранении файлов на диск см. п. Дополнительные настройки подключения соответствующего параграфа раздела Настройка подключения к базе данных).
- превышение заданного количества записей в базе.
- истечение временного периода, установленного пользователем. По умолчанию период ротации базы данных составляет 30 дней с момента создания схемы данных в базе (при первом подключении к системе и после очистки во время ротации).
- превышение заданного объема индексов.
- превышение заданного объема файлов.
- превышение заданного общего объема данных, включающего базы данных, индексов и файлов.
Примечание.
Для корректного запуска процесса ротации требуются права владельца базы данных и владельца схемы.
Вы также можете запустить ротацию вручную.
Поиск в системе выполняется по всем базам данных независимо от статуса их активности, кроме отключенных пользователем.
Очередь ротации
Расположение базы данных в списке группы напрямую определяет ее позицию в очереди ротации. Во время ротации происходит полная очистка базы данных, на которую производится переключение (удаление всех таблиц базы и очистка индекса).
Внимание!
Процедура очистки базы данных занимает значительное количество времени.
Ротация баз данных в представленной на рисунке выше группе "Группа ротации 1" выполняется по следующему алгоритму:
- База данных "Database0" является активной в текущий момент и в нее выполняется запись перехваченных данных.
- При выполнении одного из условий ротации система производит предварительную очистку базы "Database1".
- После успешной очистки запись данных в "Database0" прекращается.
Примечание.
При ошибке ротации система будет повторять попытки очистки "Database1" до успешного выполнения задачи, продолжая использовать "Database0" для записи.
- Система производит запись данных перехвата в "Database1". При этом содержимое "Database0" остается доступным для поиска.
- Ротация баз данных повторяется поочередно для всех баз в списке до конца списка и, когда конец списка достигнут, система переключается на первую базу "Database0" в списке и продолжает цикл ротации.
Использование скриптов при ротации
Во время ротации система выполняет полную очистку базы данных, на которую происходит переключение. В связи с этим может возникнуть потребность в создании резервной копии базы перед ее очисткой либо в переносе базы. Для автоматизации этих и других действий, связанных с ротацией, в Консоли администратора SecureTower вы можете настроить запуск предварительно созданных скриптов. Скрипт будет выполняться от имени пользователя, под которым запущена служба Центрального сервера. Для корректного выполнения скрипта учетная запись, от имени которой запущен Центральный сервер, должна обладать привилегиями, соответствующими задачам скрипта.
SecureTower поддерживает выполнение следующих типов скриптов (action_type):
- Windows PowerShell (ps1);
- CMD (bat, cmd);
- Windows Script (wsf);
- Python (py).
Для успешного запуска скриптов необходимо выполнить предварительную настройку для некоторых сред:
- Python: необходимо внести в системную переменную окружения Path путь к директории файла python.exe (выбрать опцию Установить для всех пользователей при инсталляции Python или ввести путь вручную после установки).
- PowerShell: необходимо включить неограниченную политику исполнения с помощью команды Set-ExecutionPolicy Unrestricted.
Система поддерживает запуск скриптов при наступлении следующих событий:
- До ротации: до запуска очистки базы, следующей за активной в очереди ротации. Например, скрипт, запущенный до ротации, может выполнять бэкап базы до ее очистки либо перенос базы данных и замену ее на новую.
- После ротации: после успешной очистки новой базы и переключения с активной базы на новую.
- Ошибка ротации: ошибка очистки базы данных или поискового индекса.
Вы можете создавать и использовать несколько скриптов ротации в комбинации друг с другом. Например, для работы с резервными копиями баз данных вы можете настроить скрипт "До ротации" таким образом, чтобы бэкап базы выполнялся скриптом на основе результатов выполнения скрипта "После ротации".
Внимание!
Сервер повторяет попытки выполнить ротацию до тех пор, пока ротация не будет выполнена успешно. При этом скрипты, запускаемые до ротации и при ошибке ротации, будут также выполняться повторно. Для того, чтобы избежать повторных запусков, учитывайте эту ситуацию в коде скрипта.
Вы можете настроить поведение системы SecureTower при выполнении скрипта в конфигурационном файле сервера:
- Для настройки тайм-аута выполнения скрипта установите нужное значение в параметре timeout_seconds.
- Для того, чтобы запретить ротацию, если при выполнении скрипта произошла ошибка (например, БД недоступна), установите параметр rotate_on_fail: false. Например, если параметр rotate_on_fail установлен в false, сервер будет ожидать нулевой код возврата из процесса выполнения скрипта для запуска очистки базы. Если процесс выполнения скрипта возвращает нулевой код возврата, то сервер считает, что скрипт выполнен успешно и только тогда производит очистку базы данных.
Для обращения к базам данных в скриптах используются переменные среды (environment variables), устанавливаемые для запускаемых процессов. В переменных прописаны пути к базам, участвующим в ротации, и другие параметры.
Переменные среды:
- FGST_CURRENT_DB_ID (тип триггера: любой)
- FGST_CURRENT_DB_TYPE (тип триггера: любой)
- FGST_CURRENT_DB_CONNECTION_STRING (тип триггера: любой)
- FGST_PREVIOUS_DB_ID (тип триггера: после ротации)
- FGST_PREVIOUS_DB_TYPE (тип триггера: после ротации)
- FGST_PREVIOUS_DB_CONNECTION_STRING (тип триггера: после ротации)
- FGST_NEXT_DB_ID (тип триггера: до ротации/ошибка ротации)
- FGST_NEXT_DB_TYPE (тип триггера: до ротации/ошибка ротации)
- FGST_NEXT_DB_CONNECTION_STRING (тип триггера: до ротации/ошибка ротации)
- FGST_MANUAL_ROTATION (значение TRUE при принудительном запуске ротации или параметр не установлен)
Статистика ротации
Для того, чтобы посмотреть статистику записи данных в базы в составе группы ротации, нажмите кнопку Статистика группы в окне Настройка группы ротации либо выберите соответствующую команду в меню настроек группы в окне вкладки Общие.