
Многопоточное восстановление базы данных: оптимизация процесса
Процесс резервного копирования и восстановления является критически важным компонентом стратегии обеспечения непрерывности бизнес-процессов в управлении базами данных. В контексте использования программного обеспечения Progress настоятельно рекомендуется выполнять резервное копирование исходной базы данных перед проведением любых восстановительных операций. Это позволяет создать резервную копию данных, которая может быть использована в случае, если процесс восстановления приведет к некорректной работе базы данных или ее полной неработоспособности.
После успешного восстановления базы данных и подтверждения ее корректного функционирования, необходимо создать резервную копию данной версии перед ее внедрением в рабочую среду. В случае использования технологии репликации OpenEdge, восстановление резервной копии данных является обязательным этапом для формирования целевых баз данных, которые будут участвовать в процессе репликации.
Сокращение времени, необходимого для выполнения восстановительных операций, способствует минимизации времени простоя системы. В условиях, когда восстановление после сбоя базы данных является критически важным, каждая минута имеет значение. Быстрое создание целевой базы данных в процессе репликации снижает вероятность потери данных и обеспечивает непрерывность работы системы.
В версии OpenEdge 12.8 LTS представлены новые функциональные возможности утилиты PROREST, которые оптимизируют процесс восстановления данных за счет многопоточной обработки.
Многопоточная технология предназначена для повышения эффективности восстановления как сжатых, так и несжатых резервных копий данных. Данная функция позволяет значительно ускорить процесс восстановления, что особенно актуально при работе с большими объемами данных.
Для активации многопоточной обработки в утилите PROREST необходимо использовать параметр -thread. Синтаксис команды имеет следующий вид:
prorest db-name device-name -thread n -threadnum n -rbf n -wbf n
Параметр -thread определяет количество потоков, используемых для восстановления данных. Если значение параметра -thread равно 0, многопоточное восстановление будет отключено.
Пример команды для отключения многопоточного восстановления:
prorest newb testdb.bk -thread 0
При значении параметра -thread, равном 1, многопоточное восстановление будет включено. Если параметр -threadnum не указан, количество потоков будет автоматически установлено в соответствии с количеством процессоров в системе. По умолчанию коэффициенты буфера чтения и буфера записи, которые определяют объем памяти, используемой для чтения и записи данных, устанавливаются на уровне 1024.
Пример команды для включения многопоточного восстановления с автоматическим определением количества потоков:
prorest newb testdb.bk -thread 1 ... Start of extending target DB to needed size... (9432) It will require a minimum of 1082 blocks to restore. (6763) Number of threads not specified. The default number of threads used is 4. (20669) Start of restoring the target DB... (9433) Restore the backup file with 4 worker threads. (20649) Read buffer factor (-rbf): 1024 (20707) Write buffer factor (-wbf): 1024 (20786) Restore has spawned 4 worker threads. (20648)This is a full backup of /.../testdb.db. (6759) This backup was taken Tue Oct 14 11:28:04 2022. (6760) This backup was compressed using ZSTD compression. (20281) The compression level used in the backup is 3. (20282) The blocksize is 4096. (6994) Start of extending target DB to needed size... (9432) It will require a minimum of 1082 blocks to restore. (6763) Start of restoring the target DB... (9433) Restore the backup file with 4 worker threads. (20649) Read buffer factor (-rbf): 1024 (20707) Write buffer factor (-wbf): 1024 (20786) Restore has spawned 4 worker threads (20648) Read 1076 db blocks in 00:00:02
Если количество потоков, указанное в параметре -threadnum, превышает количество процессоров в системе более чем в два раза, утилита PROREST автоматически ограничит максимальное количество потоков до значения, которое в два раза превышает количество доступных процессоров.
Пример команды для многопоточного восстановления в системе с четырьмя процессорами:
prorest newb testdb.bk -thread 1 -threadnum 10 ... Start of extending target DB to needed size... (9432) It will require a minimum of 1082 blocks to restore. (6763) Threads number specified exceeds 2 times CPU. Maximum number of threads running is 8. (14775) Restore has spawned 8 worker threads.
Для получения дополнительной информации о синтаксисе и использовании утилиты PROREST, рекомендуется обратиться к официальной документации: PROREST utility.