Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

สำรองและกู้คืนฐานข้อมูล Vertica

เพื่อให้แน่ใจว่าคุณสามารถกู้คืนข้อมูลได้ในกรณีที่ข้อมูลเสียหายหรือการลบโดยไม่ได้ตั้งใจ ให้สำรองข้อมูลฐานข้อมูลเป็นกิจกรรมการบำรุงรักษาตามปกติ โพสต์นี้สำรวจการสำรองและกู้คืนฐานข้อมูลVertica®

แนะนำตัว

Vertica ซึ่งเป็นระบบจัดการฐานข้อมูลเชิงวิเคราะห์ เป็นแพลตฟอร์มพื้นที่เก็บข้อมูลแบบเสาที่ออกแบบมาเพื่อจัดการข้อมูลปริมาณมาก ทำให้สามารถสืบค้นข้อมูลได้อย่างรวดเร็วในสถานการณ์ที่ใช้ทรัพยากรจำนวนมาก

Vertica มีข้อดีดังต่อไปนี้:

  • ปรับปรุงประสิทธิภาพการสืบค้นมากกว่าระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบเดิม
  • ให้ความพร้อมใช้งานสูง
  • ให้ความสามารถในการปรับขนาดระดับเพตะไบต์บนเซิร์ฟเวอร์สินค้าโภคภัณฑ์ระดับองค์กร

กลไกการสำรองและกู้คืนฐานข้อมูลช่วยลดเวลาหยุดทำงานระหว่างการบำรุงรักษาและการกู้คืนจากความเสียหาย

สำรองและกู้คืนฐานข้อมูล

ด้วย Vertica คุณสามารถสร้างการสำรองข้อมูลด่วน สำเนาที่เพิ่มขึ้นโดยมีจุดคืนค่าจำนวนไม่ จำกัด และการสำรองข้อมูลของฐานข้อมูลทั้งหมดหรือชุดย่อย (สคีมา ตาราง และอื่นๆ) ของฐานข้อมูล มีระดับการสำรองข้อมูลต่อไปนี้:

  • เต็มระดับ :ระดับนี้ช่วยให้แน่ใจว่าคุณสามารถสำรองและกู้คืนฐานข้อมูล Vertica ทั้งหมดได้
  • ระดับที่เพิ่มขึ้น :ระดับนี้เป็นข้อมูลสำรองที่ตามมาซึ่งประกอบด้วยข้อมูลใหม่หรือข้อมูลที่เปลี่ยนแปลงเท่านั้น
  • ระดับวัตถุ :ระดับนี้เป็นข้อมูลสำรองของวัตถุสำหรับการกู้คืน

Vertica มอบความยืดหยุ่นและระดับความละเอียดในการกู้คืนอ็อบเจ็กต์เฉพาะ (เช่น สคีมาและตาราง) จากการสำรองข้อมูลเต็มรูปแบบ

สแนปชอต

สแนปชอตฐานข้อมูลจับภาพที่สอดคล้องกันของออบเจ็กต์และข้อมูลทั้งหมดในฐานข้อมูล คุณสามารถเลือกชุดย่อยของออบเจ็กต์ฐานข้อมูลที่จะรวมไว้ในสแนปชอตระดับอ็อบเจ็กต์ ซึ่งประกอบด้วยข้อมูลที่เกี่ยวข้องในฐานข้อมูล ณ เวลาที่สแนปชอตและออบเจ็กต์อื่นๆ ในกราฟการขึ้นต่อกัน คุณสามารถตั้งชื่อสแนปชอตของคุณได้ตามต้องการ (เช่น snap, objectnap1, fullsnap เป็นต้น)

ตำแหน่งสำรอง

ตำแหน่งสำรองคือไดเร็กทอรีบนโฮสต์สำรองที่คุณบันทึกสแน็ปช็อตและไฟล์เก็บถาวรที่เกี่ยวข้อง เนื่องจากสแน็ปช็อตเข้ากันได้ คุณสามารถใช้สแน็ปช็อตออบเจ็กต์ใดก็ได้จากตำแหน่งสำรองเดียวกัน หลังจากที่คุณกู้คืนฐานข้อมูลจากสแน็ปช็อตของฐานข้อมูลแบบเต็ม สแนปชอตทั้งหมดในไฟล์แชร์ดาต้าตำแหน่งสำรองเดียวกันผ่านฮาร์ดลิงก์

Vertica ให้สำเนาต้นทุนต่ำและประหยัดพื้นที่ (การสำรองข้อมูลในเครื่องแบบฮาร์ดลิงก์ ) ของการสำรองข้อมูลฐานข้อมูลในโครงสร้างพื้นฐานคลัสเตอร์ภายใน คุณสามารถดึงข้อมูลสำรองเหล่านี้ได้เร็วขึ้น เนื่องจากระบบไม่ได้คัดลอกข้อมูลผู้ใช้ไปยังสภาพแวดล้อมภายนอก Vertica คัดลอกเฉพาะข้อมูลแค็ตตาล็อกและเริ่มฮาร์ดลิงก์บน Linux® ภายในระบบไฟล์

สำรองและกู้คืนฐานข้อมูล Vertica

แหล่งที่มาของรูปภาพ :https://www.vertica.com/wp-content/uploads/2016/04/sidestep1.png

ข้อมูลสำรองเหล่านี้ใช้บล็อกพื้นที่เก็บข้อมูลชุดเดียวกัน และข้อมูลสำรองแต่ละรายการจะติดตามสำเนา ณ เวลานั้น ระบบไม่ได้จัดเก็บเนื้อหาเดียวกันไว้หลายที่

ขั้นตอนการสำรองข้อมูลและการกู้คืน

ขั้นตอนการสำรองข้อมูลและการกู้คืนประกอบด้วยขั้นตอนต่อไปนี้:

  1. เลือกประเภทสแนปชอต เช่น การสำรองข้อมูลแบบเต็ม ส่วนเพิ่ม หรือระดับออบเจ็กต์
  2. สร้างไฟล์การกำหนดค่าโดยใช้เครื่องมือ Vertica Backup and Recovery
  3. เริ่มต้นตำแหน่งสำรองเพื่อจัดเก็บไฟล์สำรอง
  4. สำรองข้อมูลโดยใช้ไฟล์การกำหนดค่า
  5. ตรวจสอบข้อมูลสำรองในตำแหน่งสำรอง
  6. กู้คืนฐานข้อมูลหรืออ็อบเจ็กต์ฐานข้อมูลทั้งหมดบนคลัสเตอร์ Vertica ที่คล้ายกันหรือต่างกัน
สำรองและกู้คืนฐานข้อมูล Vertica

แหล่งที่มาของรูปภาพ :https://www.vertica.com/kb/Copy-and-Restore-Data-from-a-Vertica-Cluster-to-a-Backup/Content/BestPractices/Copy-and-Restore-Data-from-a -Vertica-Cluster-to-a-Backup.htm

สร้างไฟล์การกำหนดค่า

vbr.py ยูทิลิตีสร้างไฟล์การกำหนดค่าที่มีข้อมูลที่ Verticare กำหนดให้สำรองและกู้คืนสแน็ปช็อตแบบเต็ม ที่เพิ่มขึ้น หรือระดับออบเจ็กต์ คุณไม่สามารถสำรองหรือกู้คืนฐานข้อมูลหรืออ็อบเจ็กต์โดยไม่มีไฟล์การกำหนดค่า และไม่มีไฟล์เริ่มต้น

คุณสามารถสร้างไฟล์คอนฟิกูเรชันสำรองได้มากเท่าที่คุณต้องการ (เช่น ไฟล์แบบเต็ม orincremental ออบเจ็กต์หรือไฟล์เฉพาะสคีมา หรือไฟล์เฉพาะตำแหน่ง)

ไฟล์การกำหนดค่าการสำรองข้อมูลแบบเต็ม

ขั้นตอนต่อไปนี้ช่วยในการสร้างไฟล์การกำหนดค่าเพื่อสำรองข้อมูลฐานข้อมูลทั้งหมด

$ vbr.py --setupconfig
Snapshot name (backup_snapshot): full_bkp_snap
Backup vertica configurations? (n) [y/n]: y
Number of restore points (1):
Specify objects (no default):
Vertica user name (dbadmin): dbadmin
Save password to avoid runtime prompt? (n) [y/n]: n
Node v_testdb_node0001
Backup host name (no default): v_testdb_node0001
Backup directory (no default): /vert_backup/backup
Node v_testdb_node0002
Backup host name (no default): v_testdb_node0002
Backup directory (no default): /vert_backup/backup
Node v_testdb_node0003
Backup host name (no default): v_testdb_node0003
Backup directory (no default): /vert_backup/backup
Config file name (full_bkp_snap.ini): /vert_backup/backup_conf/full_bkp_snap.ini
Change advanced settings? (n) [y/n]: n
Saved vbr configuration to /vert_backup/backup_conf/full_bkp_snap.ini.
ไฟล์การกำหนดค่าการสำรองข้อมูลเฉพาะออบเจ็กต์

ทำตามขั้นตอนต่อไปนี้เพื่อสร้างไฟล์การกำหนดค่าเฉพาะออบเจ็กต์:

  1. แสดงรายการวัตถุในฐานข้อมูลและเลือกวัตถุที่จะใช้ ออบเจ็กต์ต่อไปนี้มีอยู่ในฐานข้อมูล Vertica ของเรา:

              List of tables
      Schema | Name  | Kind  |  Owner  | Comment
     --------+-------+-------+---------+---------
      public | tab1  | table | dbadmin |
      public | tab2  | table | dbadmin |
      public | tab3  | table | dbadmin |
      (3 rows)
    
  2. เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างไฟล์การกำหนดค่าเพื่อสำรองข้อมูลของ public.tab1 ตาราง:

     $ vbr.py --setupconfig
     Snapshot name (backup_snapshot): tab1_bkp_snap
     Backup vertica configurations? (n) [y/n]: n
     Number of restore points (1):
     Specify objects (no default): public.tab1
     Vertica user name (dbadmin): dbadmin
     Save password to avoid runtime prompt? (n) [y/n]: n
     Node v_testdb_node0001
     Backup host name (no default): v_testdb_node0001
     Backup directory (no default): /vert_backup/backup
     Node v_testdb_node0002
     Backup host name (no default): v_testdb_node0002
     Backup directory (no default): /vert_backup/backup
     Node v_testdb_node0003
     Backup host name (no default): v_testdb_node0003
     Backup directory (no default): /vert_backup/backup
     Config file name (tab1_bkp_snap.ini): /vert_backup/backup_conf/tab1_bkp_snap.ini
     Change advanced settings? (n) [y/n]: n
     Saved vbr configuration to /vert_backup/backup_conf/tab1_bkp_snap.ini.
    
  3. เรียกใช้คำสั่งต่อไปนี้เพื่อแสดงรายการไฟล์การกำหนดค่าสำรองที่สร้างขึ้น:

     $ cd /vert_backup/backup_conf/
     $ ls -la
     total 20
     drwxr-xr-x. 2 dbadmin dbadmin 4096 Jan 20 14:21 .
     -rw-rw-r--. 1 dbadmin dbadmin  488 Jan 20 14:21 tab1_bkp_snap.ini
     -rw-rw-r--. 1 dbadmin dbadmin  475 Jan 20 14:04 full_bkp_snap.ini
    

เริ่มต้นตำแหน่งสำรอง

ในการเริ่มต้นตำแหน่งสำรองสำหรับการสำรองข้อมูลแบบเต็มและระดับออบเจ็กต์บนคลัสเตอร์ต้นทาง ให้เรียกใช้ init ต่อไปนี้ คำชี้แจง:

$ /opt/vertica/bin/vbr.py -t init --config-file full_bkp_snap.ini
$ /opt/vertica/bin/vbr.py -t init --config-file tab1_bkp_snap.ini

สำรองข้อมูล

ใช้ฐานข้อมูลแบบเต็มหรือการสำรองข้อมูลระดับออบเจ็กต์

สำรองข้อมูลฐานข้อมูลทั้งหมด

สำรองข้อมูลฐานข้อมูลทั้งหมดโดยใช้ไฟล์การกำหนดค่าที่สร้างไว้ก่อนหน้านี้full_bkp_snap.ini :

$ vbr.py --task backup --config-file full_bkp_snap.ini
Please input vertica password:
pparing...
Found Database port:  5433
Copying...
348900 out of 348900, 100%
All child processes terminated successfully.
Committing changes on all backup sites...
backup done!
การสำรองข้อมูลออบเจ็กต์เดี่ยว

ใช้ไฟล์การกำหนดค่า tab1_bkp_snap.ini เพื่อทำการสำรองข้อมูลระดับออบเจ็กต์:

$ vbr.py --task backup --config-file tab1_bkp_snap.ini
Please input vertica password:
pparing...
Found Database port:  5433
Copying...
78920 out of 78920, 100%
All child processes terminated successfully.
Committing changes on all backup sites...
backup done!

ตรวจสอบตำแหน่งสำรอง

เรียกใช้คำสั่งต่อไปนี้เพื่อตรวจสอบตำแหน่งสำรอง:

$ cd vert_backup/
$ ls -la
total 16
drwxr-xr-x.  4 dbadmin dbadmin 4096 Jan 20 13:40 .
dr-xr-xr-x. 28 root    root    4096 Jan 20 13:53 ..
drwxr-xr-x.  5 dbadmin dbadmin 4096 Jan 20 15:22 backup
drwxr-xr-x.  2 dbadmin dbadmin 4096 Jan 20 15:29 backup_conf
$ cd backup/
$ ll
total 12
drwxrwxr-x. 8 dbadmin dbadmin 4096 Jan 20 15:29 v_testdb_node0001
drwxrwxr-x. 8 dbadmin dbadmin 4096 Jan 20 15:29 v_testdb_node0002
drwxrwxr-x. 8 dbadmin dbadmin 4096 Jan 20 15:29 v_testdb_node0003
$ cd v_testdb_node0001/
$ ll
total 12
drwx------. 3 dbadmin dbadmin 4096 Jan 20 15:29 tab1_bkp_snap
drwx------. 3 dbadmin dbadmin 4096 Jan 20 15:22 full_bkp_snap

กู้คืนข้อมูลสำรอง

คืนค่าการสำรองข้อมูลทั้งหมดหรือระดับออบเจ็กต์

กู้คืนจากการสำรองข้อมูลฐานข้อมูลเต็มรูปแบบ

หมายเหตุ :ฐานข้อมูลต้องหยุดทำงานเพื่อกู้คืนข้อมูลสำรองทั้งหมด

ใช้ขั้นตอนต่อไปนี้เพื่อดำเนินการกู้คืนฐานข้อมูลแบบเต็ม:

  1. วางอ็อบเจ็กต์ทั้งหมดในฐานข้อมูลของคุณและกู้คืนด้วยข้อมูลสำรองที่สร้างขึ้นล่าสุด:

     cluster=> dt
                    List of tables
      Schema | Name  | Kind  |  Owner  | Comment
     --------+-------+-------+---------+---------
      public | tab1  | table | dbadmin |
      public | tab2  | table | dbadmin |
      public | tab3  | table | dbadmin |
     (3 rows)
    
     cluster=> drop table tab1,tab2,tab3;
     DROP TABLE
     cluster=> dt
     No relations found.
    
  2. เมื่อฐานข้อมูลไม่ทำงาน ให้กู้คืนฐานข้อมูลโดยใช้ข้อมูลสำรองแบบเต็ม:

     $ vbr.py --task restore --config-file full_bkp_snap.ini
     Please input vertica password:
     Preparing...
     Found Database port:  5433
     Copying...
     248556 out of 248556, 100%
     All child processes terminated successfully.
     restore done!
    
  3. เริ่มฐานข้อมูลและตรวจสอบว่าการกู้คืนวัตถุสำเร็จหรือไม่ ตัวอย่างต่อไปนี้แสดงว่าการคืนค่าสำเร็จ:

     cluster=> dt
                    List of tables
      Schema | Name  | Kind  |  Owner  | Comment
     --------+-------+-------+---------+---------
      public | tab1  | table | dbadmin |
      public | tab2  | table | dbadmin |
      public | tab3  | table | dbadmin |
     (3 rows)
    
คืนค่าการสำรองข้อมูลระดับออบเจ็กต์

หมายเหตุ :ฐานข้อมูลต้องเปิดทำงานสำหรับการกู้คืนระดับอ็อบเจ็กต์

ในการกู้คืนอ็อบเจ็กต์ คุณต้องใช้การสำรองข้อมูลระดับอ็อบเจ็กต์ที่มีอยู่ รหัสต่อไปนี้ลดลง tab1 ในการเตรียมการบูรณะ:

cluster=> drop table tab1;
DROP TABLE
cluster=> dt
         List of tables
Schema | Name  | Kind  |  Owner  | Comment
-------+-------+-------+---------+---------
public | tab2  | table | dbadmin |
public | tab3  | table | dbadmin |
(2 rows)

ทำตามขั้นตอนต่อไปนี้เพื่อกู้คืนอ็อบเจ็กต์จากการสำรองข้อมูลระดับอ็อบเจ็กต์:

  1. คืนค่าวัตถุ:

     $ vbr.py --task restore --config-file tab1_bkp_snap.ini
     Please input vertica password:xxxxxxxx
     Preparing...
     Found Database port:  5433
     Copying...
      out of , 100%
     All child processes terminated successfully.
     Copying...
     2970 out of 2970, 100%
     All child processes terminated successfully.
     restore done!
    
  2. ตรวจสอบว่าการกู้คืนวัตถุสำเร็จหรือไม่ ตัวอย่างต่อไปนี้แสดงการกู้คืนที่ประสบความสำเร็จของ public.tab1 จากการสำรองข้อมูลระดับออบเจ็กต์:

     $ vsql
     Password:xxxxxxx
    
     dbadmin=> dt
            List of tables
      Schema | Name  | Kind  |  Owner  | Comment
     --------+-------+-------+---------+---------
      public | tab1  | table | dbadmin |
      public | tab2  | table | dbadmin |
      public | tab3  | table | dbadmin |
     (3 rows)
    
     dbadmin=> d tab1 ;
                                 List of Fields by Tables
      Schema | Table | Column |     Type     | Size | Default | Not Null | Primary Key | Foreign Key
     --------+-------+--------+--------------+------+---------+----------+-------------+-------------
      public | tab1  | col1   | numeric(3,)  |    8 |         | f        | f           |
    

บทสรุป

โพสต์นี้เน้นย้ำถึงตรรกะเบื้องหลังกระบวนการสำรองและกู้คืนฐานข้อมูล Vertica นอกจากนี้ยังมีขั้นตอนในการสำรองและกู้คืนฐานข้อมูล Vertica ในระดับต่างๆ เช่น แบบเต็ม ส่วนเพิ่ม และระดับวัตถุ

เรียนรู้เพิ่มเติมเกี่ยวกับฐานข้อมูล

ไปที่ www.rackspace.com และคลิก แชทขาย เพื่อเริ่มการสนทนา

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม