Backup baz danych DB2 w trybie OFFLINE

Podobnie jak w innych rodzajach baz danych tu również wykonuje się kopie zapasowe 😀
Logujemy się do serwera i sprawdzamy nazwę naszej bazy

[db2inst1@localhost ~]$ db2 list db directory

 System Database Directory

 System Database Directory

 Number of entries in the directory = 2

Database 1 entry:

 Database alias                       = TESTOWA
 Database name                        = TESTOWA
 Local database directory             = /db2/db2home/db2inst1
 Database release level               = d.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

Database 2 entry:

 Database alias                       = SAMPLE
 Database name                        = SAMPLE
 Local database directory             = /db2/db2home/db2inst1
 Database release level               = d.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

Interesuje nas wykonanie backupu bazy TESTOWA

[db2inst1@localhost ~]$ db2 connect to TESTOWA

  Database Connection Information

 Database server        = DB2/LINUXX8664 9.7.6
 SQL authorization ID   = DB2INST1
 Local database alias   = TESTOWA

Najprostszym sposobem na wykonanie kopii zapasowej naszej bazy danych TESTOWA jest proste polecenie:

[db2inst1@localhost ~]$ db2 BACKUP DATABASE TESTOWA

Backup successful. The timestamp for this backup image is : 20170222131632

Kopia zapasowa zostanie zapisana w domyślnej lokalizacji zdefiniowanej w katalogu domowym użytkownika DB2INST1 czyli /home/db2inst1.

Wolelibyśmy aby wykonywał się do specjalnie do tego celu utworzonego folderu. Wydajemy polecenie:

[db2inst1@localhost ~]$ mkdir backup_testowa

następnie wykonujemy

[db2inst1@localhost ~]$ db2 BACKUP DATABASE TESTOWA to /home/db2inst1/backupy_testowa

SQL2036N  The path for the file or device "/home/db2inst1/backupybaz" is not
valid.

Błąd, bo nie pamiętaliśmy o wielości liter w nazwie folderu (BackupyBaz).

[db2inst1@localhost ~]$ db2 BACKUP DATABASE TESTOWA to /home/db2inst1/BackupyBaz

Backup successful. The timestamp for this backup image is : 20170222131632

Aby wykonać backup w folderze /home/db2inst1/BackupyBaz możemy też przejść do tego folderu, a następnie wykonać polecenie „db2 BACKUP DATABASE TESTOWA”, które wykona backup do bieżącego folderu.

[db2inst1@localhost ~]$ cd BackupBaz/
[db2inst1@localhost BackupBaz]$ db2 BACKUP DATABASE TESTOWA

Backup successful. The timestamp for this backup image is : 20170222132337

[db2inst1@localhost ~]$ ls -la TESTOWA*

-rw-------. 1 db2inst1 db2iadm1 108597248 Nov 29 23:54 TESTOWA.0.db2inst1.NODE0000.CATN0000.20171129235429.001

Możemy użyć kompresji co znacznie zmniejsza rozmiar plików kopii zapasowej.

[db2inst1@localhost ~]$ db2 BACKUP DATABASE TESTOWA COMPRESS

Backup successful. The timestamp for this backup image is : 20171129235649

[db2inst1@localhost ~]$ ls -la | grep TESTOWA

-rw-------.  1 db2inst1 db2iadm1 108597248 Nov 29 23:54 TESTOWA.0.db2inst1.NODE0000.CATN0000.20171129235429.001
-rw-------.  1 db2inst1 db2iadm1  21151744 Nov 29 23:56 TESTOWA.0.db2inst1.NODE0000.CATN0000.20171129235649.001 

Obecny skompresowany backup bazy ma około 21MB czyli 1/5 rozmiaru pierwszego pliku.

Deaktywujemy bazę (przestawiamy ją w tryb OFFLINE)

[db2inst1@localhost ~]$ db2 deactivate database TESTOWA

SQL1496W  Deactivate database is successful, but the database was not activated.

Czasami baza zwraca komunikat że baza jest używana

[db2inst1@localhost ~]$ db2 deactivate database TESTOWA

SQL1493N  The application is already connected to an active database.

Trzeba najpierw odłączyć userów od bazy danych
Uwaga! Poniższe polecenie odłącza userów od całej instancji a nie od konkretnej bazy.

[db2inst1@localhost ~]$ db2 quiesce database immediate force connections

DB20000I  The QUIESCE DATABASE command completed successfully.

[db2inst1@localhost ~]$ db2 unquiesce database

DB20000I  The UNQUIESCE DATABASE command completed successfully.

A jak nie chce się wykonać to odłączamy się od bazy danych ubijając połączenia
[db2inst1@localhost ~]$ db2 terminate

DB20000I  The TERMINATE command completed successfully.

[db2inst1@localhost ~]$ db2 deactivate database TESTOWA

SQL1496W  Deactivate database is successful, but the database was not activated.

Wykonujemy backup jak wyżej (db2 BACKUP DB TESTOWA COMPRESS)

UWAGA! Wyżej wymienione backupu tego typu są backupami OFFLINE!!!. Zrywane jest połączenie z bazą danych, bo musimy ją deaktywować. Przy próbie wydania kolejnego polecenia na naszej bazie otrzymamy komunikat o braku połączenia.

[db2inst1@localhost BackupBaz]$ db2 "SELECT * FROM MyTable"

SQL1024N  A database connection does not exist.  SQLSTATE=08003

Należy ponownie podłączyć się do bazy i ją aktywować jeśli była deaktywowana (przestawić ją w tryb ONLINE)

[db2inst1@localhost ~]$ db2 list active databases

SQL1611W  No data was returned by Database System Monitor.

[db2inst1@localhost ~]$ db2 activate database TESTOWA

DB20000I  The ACTIVATE DATABASE command completed successfully.

Sprawdzamy aktywne bazy danych

[db2inst1@localhost ~]$ db2 list active databases

                           Active Databases

Database name                              = TESTOWA
Applications connected currently           = 1
Database path                              = /home/db2inst1/db2inst1/NODE0000/SQL00003/

Należy jeszcze pamiętać o naszej drugiej bazie

[db2inst1@localhost backup_testowa]$ db2 activate database SAMPLE

DB20000I  The ACTIVATE DATABASE command completed successfully.


[db2inst1@localhost backup_testowa]$ db2 list active databases

                           Active Databases

Database name                              = TESTOWA
Applications connected currently           = 0
Database path                              = /db2/db2home/db2inst1/db2inst1/NODE0000/SQL00002/

Database name                              = SAMPLE
Applications connected currently           = 0
Database path                              = /db2/db2home/db2inst1/db2inst1/NODE0000/SQL00001/

Możemy się podłączyć do bazy TESTOWA

[db2inst1@localhost ~]$ db2 connect to TESTOWA

   Database Connection Information

 Database server        = DB2/LINUXX8664 9.7.6
 SQL authorization ID   = DB2INST1
 Local database alias   = TESTOWA

Aby wyświetlić historię wykonywanych dla naszej bazy backupów wykonujemy polecenie:

[db2inst1@localhost]$ db2 list history backup all for TESTOWA

                    List History File for TESTOWA

Number of matching file entries = 2


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20171129235429001   F    D  S0000000.LOG S0000000.LOG
 ----------------------------------------------------------------------------
  Contains 2 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP TESTOWA OFFLINE
 Start Time: 20171129235429
   End Time: 20171129235432
     Status: A
 ----------------------------------------------------------------------------
  EID: 1 Location: /db2/db2home/db2inst1/backup_testowa


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20171129235649001   F    D  S0000000.LOG S0000000.LOG
 ----------------------------------------------------------------------------
  Contains 2 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP TESTOWA OFFLINE
 Start Time: 20171129235649
   End Time: 20171129235652
     Status: A
 ----------------------------------------------------------------------------
  EID: 2 Location: /db2/db2home/db2inst1/backup_testowa

Pliki naszych backupów zawierających w nazwach numery SCN to :

TESTOWA.0.db2inst1.NODE0000.CATN0000.20171129235429.001
TESTOWA.0.db2inst1.NODE0000.CATN0000.20171129235649.001

Czyli jak widać wskazują na czas w jakim został backup uruchomiony. Na taki punkt z czasie możemy przywrócić bazę.

W dalszej części objaśnię jak zrobić backup bez wyłączania jej oraz jak wykonać backup pozwalający na jej odtworzenie do punktu w czasie.

Ten wpis został opublikowany w kategorii DB2 i oznaczony tagami , . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz