콘텐츠로 이동

2. Бекап СУБД#

2.1. Типы бекапов в СУБД.#

СУБД поддерживает несколько типов бекапов:

Тип бекапа Онлайн Оффлайн
Логический + -
Физический + +

Логический бекап - в бекап помещаются скрипты воссоздания таблиц, индексов и данных.
Физический бекап - в бекап помещаются копии файлов данных, контрольных и журнальных файлов.
Онлайн бекап - бекап выполняется при работающей СУБД.
Оффлайн бекап - бекап выполняется при неработающей СУБД.

Физический онлайн бекап требует работы СУБД в режиме Archivelog mode.

2.2. Типы архивирования журналов в СУБД.#

СУБД поддерживает два типа архивирования журналов.

Archivelog mode - архивируются копии журналов, что позволяет сделать онлайн бекап и восстановление СУБД на текущий момент времени.
Noarchivelog mode - не архивируются копии журналов, восстановление СУБД на текущий момент времени невозможно.

Для проверки текущего режима Archivelog mode выполните запрос:

select decode(archive_mode,0,'archivelog mode is disable',1,'archivelog mode is enable') from V$ARCHIVE;

2.3. Включение режима archivelog mode.#

Включение режима archvielog mode доступно только администратору СУБД, база должна быть запущена в фазе Control Phase.

Для включение режима archivelog mode выполните команды, приведенные ниже.

Проверьте текущий режим archivelog mode и текущую фазу запуска:

iSQL(sysdba)> select decode(archive_mode,0,'archivelog mode is disable',1,'archivelog mode is enable') from V$ARCHIVE;
DECODE(ARCHIVE_MODE,0,'ARCHIVELOGMODEISDIS
----------------------------------------------
archivelog mode is disable
1 row selected.
iSQL(sysdba)>
iSQL(sysdba)> select startup_phase from v$instance;
STARTUP_PHASE
-----------------
SERVICE
1 row selected.
iSQL(sysdba)> alter database archivelog;
[ERR-1103E : ALTER DATABASE ARCHIVELOG or NOARCHIVELOG is only allowed during the control phase.]
iSQL(sysdba)>

Остановите базу в нормальном режиме:

iSQL(sysdba)> shutdown immediate;
Ok..Shutdown Proceeding....

TRANSITION TO PHASE : Shutdown Altibase
  [RP] Finalization : PASS
shutdown immediate success.
iSQL(sysdba)>

Запустите базу в фазе control phase:

iSQL(sysdba)> startup control;
Connecting to the DB server..... Connected.

TRANSITION TO PHASE : PROCESS

TRANSITION TO PHASE : CONTROL
Command executed successfully.
iSQL(sysdba)>

Переключите баз в режим archivelog mode:

iSQL(sysdba)> alter database archivelog;
Alter success.
iSQL(sysdba)>

Выполните следующие фазы запуска базы:

iSQL(sysdba)> startup service;
The database server is already up and running.

TRANSITION TO PHASE : META
  [SM] Recovery Phase - 1 : Preparing Database
                          : Dynamic Memory Version => Parallel Loading
  [SM] Recovery Phase - 2 : Loading Database
  [SM] Recovery Phase - 3 : Skipping Recovery & Starting Threads...
                            Refining Disk Table
  [SM] Refine Memory Table : .................................................................................................................................... [SUCCESS]
  [SM] Rebuilding Indices [Total Count:135] ....................................................................................................................................... [SUCCESS]

TRANSITION TO PHASE : SERVICE
  [CM] Listener started : TCP on port 20300 [IPV4]
  [CM] Listener started : UNIX
  [CM] Listener started : IPC
  [RP] Initialization : [PASS]

--- STARTUP Process SUCCESS ---
Command executed successfully.

Проверьте текущий режим archivelog mode и текущую фазу запуска:

iSQL(sysdba)> select startup_phase from v$instance;
STARTUP_PHASE
-----------------
SERVICE
1 row selected.
iSQL(sysdba)> select decode(archive_mode,0,'archivelog mode is disable',1,'archivelog mode is enable') from V$ARCHIVE;
DECODE(ARCHIVE_MODE,0,'ARCHIVELOGMODEISDIS
----------------------------------------------
archivelog mode is enable
1 row selected.

2.4. Выполнение физического оффлайн бекапа.#

Определите список директорий, файлы в которых необходимо поместить в бекап. Для этого сделайте следующий запрос в базе:

iSQL(sysdba)> set vertical on;
iSQL(sysdba)> select * from V$PROPERTY where name in ('MEM_DB_DIR','DEFAULT_DISK_DB_DIR','LOGANCHOR_DIR','LOG_DIR');
NAME        : MEM_DB_DIR
STOREDCOUNT : 1
ATTR        : 1459683586
MIN         :
MAX         :
VALUE1      : /home/altibase/altibase_home/dbs
VALUE2      :
VALUE3      :
VALUE4      :
VALUE5      :
VALUE6      :
VALUE7      :
VALUE8      :

NAME        : DEFAULT_DISK_DB_DIR
STOREDCOUNT : 1
ATTR        : 1459617794
MIN         :
MAX         :
VALUE1      : /home/altibase/altibase_home/dbs
VALUE2      :
VALUE3      :
VALUE4      :
VALUE5      :
VALUE6      :
VALUE7      :
VALUE8      :

NAME        : LOG_DIR
STOREDCOUNT : 1
ATTR        : 1459683586
MIN         :
MAX         :
VALUE1      : /home/altibase/altibase_home/logs
VALUE2      :
VALUE3      :
VALUE4      :
VALUE5      :
VALUE6      :
VALUE7      :
VALUE8      :

NAME        : LOGANCHOR_DIR
STOREDCOUNT : 3
ATTR        : 1459684098
MIN         :
MAX         :
VALUE1      : /home/altibase/altibase_home/logs
VALUE2      : /home/altibase/altibase_home/logs
VALUE3      : /home/altibase/altibase_home/logs
VALUE4      :
VALUE5      :
VALUE6      :
VALUE7      :
VALUE8      :

4 rows selected.

Все файлы директорий параметров VALUE* необходимо поместить в бекап (это список для бекапа).

Остановите базу в нормальном режиме:

iSQL(sysdba)> shutdown immediate;
Ok..Shutdown Proceeding....

TRANSITION TO PHASE : Shutdown Altibase
  [RP] Finalization : PASS
shutdown immediate success.
iSQL(sysdba)>

Используя команды ОС для копирования файлов скопируйте все файлы из списка для бекапа в папку бекапа.

Далее запустите базу в обычном режиме:

iSQL(sysdba)> startup service;

2.5. Выполнение физического онлайн бекапа.#

Для выполнения полного физического онлайн бекапа базы выполните команды, приведенные ниже как пример.

Проверьте наличие каталога для бекапа (/home/altibase/backup_dir):

iSQL(sysdba)> ! ls ~/ | grep backup
backup_dir

Сделайте бекап базы:

iSQL(sysdba)> ALTER DATABASE BACKUP DATABASE TO '/home/altibase/backup_dir';
Alter success.

Заархивируйте текущий журнальный файл:

iSQL(sysdba)> ALTER SYSTEM SWITCH LOGFILE;

Проверьте наличие файлов в каталоге бекапа:

iSQL(sysdba)> ! ls ~/backup_dir
loganchor0  loganchor1  loganchor2  SYS_TBS_MEM_DATA-0-0  SYS_TBS_MEM_DIC-0-0  system001.dbf  undo001.dbf