[DB2] Backup offline/online and database logs

จดไว้กันตายและกัน หลังๆไม่ค่อยได้เตะตัว DB2 แล้ว พอมาดูเคสอีกที เอ๋อแดรก เป็น Dev ที่สวมหลายหมวกแล้วมืนจริงๆ 555 เริ่มต้นด้วย

BACKUP

มันมี 2 แบบ Offline / Online แล้วที่นี้มันต่างกันยังไง

  • Offline - ใช้กับ Log แบบ Circular logging ตอน Backup มีงานสะดุด เพราะต้องปิด Service โดยคำสั่งที่สื่อไปในทางปิด Service จะประมาณนี้
--stop service
db2 force application all
db2 deactivate db INVSDB
--backup
db2 connect to INVSDB 
db2 backup db INVSDB
  • Online - ใช้กับ Log แบบ archive log ใน DB Configuration ต้องมีการกำหนดค่า Property logarchmeth1 ไว้ด้วย คำสั่ง backup / restore จะแตกต่างนิดนึง
# ================================================
# Backup mode online + include logs
db2 connect to $dbname 
db2 backup db $dbname online to $path include logs WITHOUT PROMPTING

# ================================================
# Restore
db2 restore db $dbname from $path taken at $dbdate TO $datapath  LOGTARGET $logpath  WITHOUT PROMPTING
# rollforward database log
db2 rollforward db $dbname to end of backup and complete;

ถ้าดูสถานะ Log ใช้ db2pd -db INVSDB -logs

db2inst1@invubuntudb2tsy:~$ db2pd -db INVSDB -logs

Database Member 0 -- Database INVSDB -- Active -- Up 55 days 21:09:46 -- Date 2024-06-05-12.14.59.314889

Logs:
Current Log Number            11
Pages Written                 110
Cur Commit Disk Log Reads     0
Cur Commit Total Log Reads    29
Method 1 Archive Status       n/a
Method 1 Next Log to Archive  n/a
Method 1 First Failure        n/a
Method 2 Archive Status       n/a
Method 2 Next Log to Archive  n/a
Method 2 First Failure        n/a
Log Chain ID                  0
Current LSO                   42234397027
Current LSN                   0x000000000A557EDE

Address            StartLSN         StartLSO             State      Size       Pages      Filename
0x00007F734AE7CEF8 000000000A5520A3 42229772993          0x00000000 1024       1024       S0000010.LOG
0x00007F734AE7C598 000000000A557889 42233946817          0x00000000 1024       1024       S0000011.LOG
0x00007F734A50A1B8 0000000000000000 42238120641          0x00000000 1024       1024       S0000012.LOG
0x00007F734AE80738 0000000000000000 42242294465          0x00000000 1024       1024       S0000000.LOG
0x00007F7348228C38 0000000000000000 42246468289          0x00000000 1024       1024       S0000001.LOG
0x00007F7348229598 0000000000000000 42250642113          0x00000000 1024       1024       S0000002.LOG
0x00007F734AE7FDD8 0000000000000000 42254815937          0x00000000 1024       1024       S0000003.LOG
0x00007F734AE81098 0000000000000000 42258989761          0x00000000 1024       1024       S0000004.LOG
0x00007F734AE7F478 0000000000000000 42263163585          0x00000000 1024       1024       S0000005.LOG
0x00007F734AE7EB18 0000000000000000 42267337409          0x00000000 1024       1024       S0000006.LOG
0x00007F734AE7E1B8 0000000000000000 42271511233          0x00000000 1024       1024       S0000007.LOG
0x00007F734AE7D858 0000000000000000 42275685057          0x00000000 1024       1024       S0000008.LOG
0x00007F734AE819F8 0000000000000000 42279858881          0x00000000 1024       1024       S0000009.LOG

Circular logging  & Archive logging 

Log ในที่นี้หมายถึงพวก Transaction Logs นะ

ใน DB ทั่วไปมี Log 2 แบบเหมือนกันนะ Circular log กับ Archive log โดยที่

PropertyValue
LOGARCHMETH1OFF
Property ที่ดูว่าเป็น Circular logging 
  • Archive logging ให้เก็บไปเรื่อยๆ ทำ Online Backup / HADR / roll forward recovery แต่ต้องระวังเรื่อง Disk เต็ม
    Note: ถ้าเต็มจะเจอ Error แบบนี้ SQL0968C The file system is full
    การแก้ไปไล่ลบ Archive Log ทิ้ง
PropertyValue
LOGARCHMETH1ค่าที่เป็นได้
1. LOGRETAIN
2. USEREXIT - ใช้ USER Exit จัดการ Automating log file archiving and retrieval with user exit programs - IBM Documentation //ส่วนตัวไม่เคยใช้
3. DISK - เป็นพื้นที่ที่จองไว้ เช้น
DISK:/invsins1/INVSDB/archive/invsins1/BFMDB/NODE0000/LOGSTREAM0000
4. DB2REMOTE - เหมือน Disk จะเป็นพวก S3 บน Cloud แทน เช่น
DB2REMOTE://<alias>/<container>/<object>
5. TSM - ยกให้ TSM จัดการ
LOGARCHMETH2ปกติจะ OFF ยกเว้นถ้า LOGARCHMETH1 เป็น DISK / DB2REMOTE / TSM
Property ที่ดูว่าเป็น Archive logging 
Log อื่นๆ
  • Property NEWLOGPATH - เอาไว้กำหนด Log Path แยกใหม่ ปกติ Log กับ Data มันจะอยู่ที่เดียวกัน เผื่อสำหรับเคสเติมพื้นที่ แยก physical disk เลย data อันนึง / log อีกอัน
dbname=INVSDB
db2usr=invsins1

db2 update db cfg for $dbname USING NEWLOGPATH $logpath;

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.