DB2 Database Step by Step Backup and Restoration testing wih TSM [Thai]

** Credit K.Vitaya Lorsrichandr
การ Backup มีด้วยกัน 2 แบบ
1. Backup แบบ offline จะเป็น Database ที่เก็บ Transaction โดยจะทำการนำ Log ที่มีอยู่ นำมา วนใช้ จะเป็น Log แบบ Circular log
2. Backup แบบ Online จะเป็น Database ที่เก็บ Transaction โดยจะเป็นแบบ
Archive Log
การ Restore มีด้วยกัน 2 แบบ1. Restore แบบ OFFLINE คือ Restore ข้อมูลจากการ Backup Offline โดยการ
Restore แบบ OFFILINE สามารถกำหนดเป็นแบบ Point In Time ได้ และตามด้วย
คำสั่ง with out rollingforward
2. Restore แบบ ONLINE คือ Restore ข้อมูลจากการ Backup Online โดยกำหนด Log
แบบ END OF LOGS หรือ Point In Time ณ ช่วงเวลานั้นก่อนที่ Database เกิด การ
crash ไป และตามด้วย Command Rollforward


Step การทดสอบ การ Backup Online P502 DB Testrest & Restore Full Database
บนระบบ Testrest ที่อยู่ใน Instance SAMP2 จะมี Database อยู่ 2 Database TESTREST , SAMPLE ในกรณีนี้เราใช้ Database TESTREST ในการ TEST
image
2. $> db2 list db directory
3. $> db2 get db cfg for testrest |grep –i log (Log ตัวสุดท้ายของระบบที่เกิดขึ้น
SOOOOO92.LOG)
image
 
4.เปลี่ยน directory $>cd scpinsert
 clip_image008[7]
โดยเราทำการ TEST โดยการ Insert Data เข้าไปทีละวัน ตามที่ทำการ Create File ไว้แต่ละวัน
clip_image010[7]
เปรียบเสมือนว่า บนระบบจริงมีการ Insert, Update, Delete ข้อมูลในแต่ละวัน Log จะมีการ เปลี่ยนแปลง ทุกครั้ง เมื่อเกิด การ Commit หรือ Rollback ของ Transaction โดยจะ Archive ไปที่ TSM
6. ไปดู $> db2 get db cfg for testrest |grep –i log (Log เกิดการเปลี่ยนแปลง เป็น Log ตัวที่
S0000099.LOG)
image
 
NOTE : บนระบบจริง ของ ESUP, ESEARCH จะมีการ Backup database แบบ Online
7. $> db2 backup db testrest online use tsm
ระบบจะทำการ Backup Database แบบ online โดยทำการ Copy Image ไปที่ TSM และทำการ Time STAMP ณ เวลาขนาดนั้น
image
โดยเราดูได้จาก คำสั่ง db2adutl query full db testrestv
8. $>db2adutl query full db testrest
clip_image018[7]
9.$> db2 drop db testrest
image
NOTE :สมมุติเกิด Database crash ไป ในช่วงระยะเวลา หนึ่ง โดยการ Test เราทำการ
Drop Databaseทิ้งไปหลังจากนั้น เราจะเริ่มทำการ restore database กลับมา ระบบจะ
ทำการ Restore Database โดยทำการ Restore Image จาก TSM Server
11.$>db2 restore db testrest use tsm จะทำการ restore database จาก tsm server
clip_image023[7]
12. $>db2 list db directory
image
 
NOTE : Database กลับมาแต่ทำ การ connect แล้ว จะเกิด rollforward pending เพราะ DB2
ทำการรอ Transaction Commad ที่จะทำการ rollforward build ลง database
13.$>db2 connect to testrest
clip_image027[12]
14 $> db2 get db cfg for testrest |more จะเห็นว่า rollforward pending ยังติดอยู่ในระดับ DATABASE
image
15.$> db2 rollforward db testrest to end of logs and complete ทำการ rollforward db มายัง log สุดท้ายและทำการหยุด
clip_image032[7]
NOTE: DB2 จะทำการ rollforward db มา Log ตัวสุดท้าย
16 $> db2 get db cfg for testrest |more จะเห็นว่า rollforward pending เปลี่ยนสถานะเป็น NO
image
17 $>db2 connect to testrest
clip_image037[7]













Step การทดสอบ Restore DB แบบ Point In Time
Ex. สมมุติ Database เราเกิด การ Crash ไปในช่วง 11:25.52 ของวันที่ 18-01-2007
1. Step ที่ 1 เราทำการ db2adutl query full db testrest ดู สถานะLog ตัวสุดท้ายที่ TSM SERVER Backupไว้ก่อน เวลาที่ database crash ไป จะเป็น LOG ตัวที่ S0000079.LOG คือ TIME STAMP 20070118112359
image
2. Step ที่ สอง ใช้คำสั่ง db2 restore db testrest use tsm taken at 20070118112359 คือจะทำการ restore database จาก tsm server โดยทำการระบุ TIME STAMP 20070118112359 โดย จะมี warning เตือน Restore existing database จะทำการ Restore ต่อ หรือไม่ ตอบ Y
clip_image042[7]
3.STEP ที่ สาม db2 rollforward db testrest to 2007-01-18-11.25.52 using local time คือทำการ rollforward database testrest ณ เวลาที่เกิดการ crash ไป จากตัวอย่าง อยู่ในเวลา 11:25.52 ของวันที่ 18-01-2007
clip_image044[7]
NOTE : Using local time คือเวลาที่เครื่องใช้อยู่ โดยบนระบบใช้เวลาประเทศไทย
$> db2 connect to testrest ทำการ TEST CONNECT
clip_image027[13]
$> db2 get db cfg for testrest |more (จะเห็นว่า rollforward pending ยังติดอยู่ในระดับ DATABASE)
image
4. STEP ที่ 4 db2 rollforward db testrest stop (ทำการหยุดการ rollforward)
clip_image047[7]
$> db2 get db cfg for testrest |more จะเห็นว่า rollforward pending เปลี่ยนสถานะเป็น NO
image
 
$>db2 connect to testrest
clip_image050[7]







Step การทดสอบ Restore DB Table space
Ex. สมมุติ Database เราเกิด Tablespace หายไป หรือเกิด การ เสียหาย
อันดับแรก เราต้องมีโครง ของ ตัว Database และ ตัว lv ของ OS ของ Tablespace นั้นๆ ก่อน ที่เราจะทำการ restor tablespace มา
1.$>db2 list tablespace show detail จะเห็น tablespace T_Testex อยู่
clip_image052[7]
2. $> db2 drop tablespace T_TESTEX ทำการ Drop tablespace
3.ไปที่ db2 control center
clip_image054[7]
4. คลิกขวา ไปที่ Restore
clip_image056[7]
5.มี Dialog block ขึ้นมาให้ใส่ User id samp2 password samp2 ตามแต่ละ instance นั้นๆ
clip_image058[7]
6. เลือก Restore to an exiting database คลิก NEXT
clip_image060[7]
7. กด เลือก restore the entire database คลิก next
clip_image062[7]
8.กดเลือก select the backup image from the list provide และทำการ เลือก image ที่ database backup ไว้ครั้งล่าสุด จาก available image ไปยัง select backup image คลิก NEXT
clip_image064[7]
จากรูป : เป็นวันที่ Jan22,2007 2:50:59
9. คลิกเลือก Enable table space containers to be redirected during the restore operation จากนั้น
image with table space containers to be redirected เลือก 20070122145059 จากนั้น
table space with containers to be redirected เลือก table space ที่เราทำการ drop ไป คลิก
NEXT
clip_image066[7]
NOTE : 20070122145059 คือ image ล่าสุด ที่ DB2 ทำการ Backup ไว้
10. เลือก restor only คลิก NEXT
clip_image068[7]
11 Final State คลิก NEXT
clip_image070[7]
12.Choose your restore option คลิก NEXT
clip_image072[7]
13. select performance options for the restore คลิก NEXT
clip_image074[7]
14 Review the actions that will take place when you คลิก FINISH
clip_image076[7]
15
clip_image078[7]
Success
16 ไปที่ Command
$> db2adutl query full db testrest ดู Log ที่ Backup Image ตัวล่าสุด 20070122263420
$> db2 rollforward db testrest to 2007-01-22-16-34 using local time (ทำการ rollforward db ณ เวลาที่เกิดการ crash หรือ เวลาที่เราจะทำการ rollforward มาลงใหม่ โดยใช้เวลา เครื่อง)
image
17. db2 rollforward db testrest stop (ทำการ หยุด การ rollforward)
clip_image083[7]
18.$> db2 connect to testrest
$> db2 list tablespaces show detail จะได้ Tablespace T_TESTEX กลับมา
clip_image085[7]
clip_image087[7]

2 comments:

newDBA said...

Thank you mak krub

palmmie said...

ขอบคุณมากค่ะ มีประโยชน์มากๆ

Loading