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

วิธีสำรองและกู้คืนฐานข้อมูล Vertica อย่างปลอดภัย

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

บทนำ

Vertica เป็น Analytic Database Management System เป็น Columnar-Storage Platform ที่ออกแบบมาเพื่อจัดการข้อมูลปริมาณมาก ช่วยให้ Query Performance เร็วในสถานการณ์ที่ใช้ทรัพยากรมากแบบดั้งเดิม

Vertica เสนอข้อได้เปรียบดังต่อไปนี้:

  • ปรับปรุง Query Performance มากกว่า Relational Database Management Systems แบบดั้งเดิม
  • ให้ High Availability
  • ให้ Petabyte Scalability บน Commodity Enterprise Servers

กลไก Database Backup และ Recovery ลด Downtime ระหว่าง Maintenance และ Disaster Recovery

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

ด้วย Vertica คุณสามารถสร้าง Hot Backups, Incremental Copies พร้อม Indefinite Restore Points และ Backups ของทั้ง Database หรือ Subset (Schemas, Tables, ฯลฯ) ของ Database ระดับ Backup ต่อไปนี้พร้อมใช้งาน:

  • Full Level: ระดับนี้รับรองว่าคุณสามารถ Backup และ Restore Full Vertica Database ได้
  • Incremental Level: ระดับนี้เป็น Backup ต่อเนื่องที่ประกอบด้วยข้อมูลใหม่หรือที่เปลี่ยนแปลงเท่านั้น
  • Object-Level: ระดับนี้เป็น Backup ของ Object เพื่อ Restoration

Vertica ให้ Flexibility และระดับ Granularity ในการ Restore Specific Objects (เช่น Schemas และ Tables) จาก Full Backup

Snapshots

Database Snapshots จับภาพ Consistent Image ของ Objects และ Data ทั้งหมดใน Database คุณสามารถเลือก Subset ของ Database Objects เพื่อรวมใน Object-Level Snapshot ซึ่งมี Associated Data ใน Database ณ เวลาของ Snapshot และ Objects อื่นๆ ใน Dependency Graph คุณสามารถตั้งชื่อ Snapshot ของคุณได้ตามต้องการ (เช่น: snap, objectsnap1, fullsnap, และอื่นๆ)

Backup Location

Backup Location คือ Directory บน Backup Host ที่คุณบันทึก Snapshots และ Archives ที่เกี่ยวข้อง เนื่องจาก Snapshots เข้ากันได้ คุณสามารถใช้ Object Snapshot ใดๆ จาก Backup Location เดียวกันหลังจาก Restore Database จาก Full Database Snapshot ทุก Snapshots ใน Backup Location เดียวกันแชร์ Data Files ผ่าน Hard Links

Hard-Link Backups

Vertica ให้ Low-Cost และ Space-Efficient Copies (Hard-Link Local Backups) ของ Database Backups ใน Local Cluster Infrastructure คุณสามารถเรียกคืน Backups นี้ได้เร็วกว่าเพราะระบบไม่ Copy User Data ไป External Backup Environment Vertica Copy เฉพาะ Catalog Data และ Initiate Linux®-Based Hard Links ภายใน File System

วิธีสำรองและกู้คืนฐานข้อมูล Vertica อย่างปลอดภัย

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

Backups เหล่านี้แชร์ Storage Blocks ชุดเดียวกัน และแต่ละ Backup ติดตาม Point-in-Time Copy ของมันเอง ระบบไม่จัดเก็บเนื้อหาเดียวกันในหลายตำแหน่ง

Backup และ Restoration Process Flow

Backup และ Restoration Flow ประกอบด้วยขั้นตอนต่อไปนี้:

  1. เลือก Snapshot Type เช่น Full, Incremental หรือ Object-Level Backup
  2. สร้าง Configuration File โดยใช้ Vertica Backup และ Recovery Tool
  3. Initialize Backup Location เพื่อจัดเก็บ Backup Files
  4. Backup โดยใช้ Configuration File
  5. Verify Backups ใน Backup Location
  6. Restore Full Database หรือ Database Objects บน Vertica Clusters ที่คล้ายหรือต่างกัน
วิธีสำรองและกู้คืนฐานข้อมูล 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

สร้าง Configuration File

Utility vbr.py สร้าง Configuration File ด้วยข้อมูลที่ Vertica ต้องการเพื่อ Backup และ Restore Full, Incremental หรือ Object-Level Snapshots คุณไม่สามารถ Backup หรือ Restore Databases หรือ Objects ได้โดยไม่มี Configuration File และไม่มี Default File อยู่

คุณสามารถสร้าง Backup Configuration Files ได้มากเท่าที่คุณต้องการ (เช่น Full หรือ Incremental, Object หรือ Schema-Specific, หรือ Location-Specific Files)

Full Backup Configuration File

ขั้นตอนต่อไปนี้ช่วยสร้าง Configuration File เพื่อ Backup Full Database

$ 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. 

Object-Specific Backup Configuration File

ทำตามขั้นตอนต่อไปนี้เพื่อสร้าง Object-Specific Configuration File:

  1. List Objects ใน Database และเลือกว่าจะใช้ตัวไหน Objects ต่อไปนี้อยู่ใน Vertica Database ของเรา:
 List of tables Schema | Name | Kind | Owner | Comment --------+-------+-------+---------+--------- public | tab1 | table | dbadmin | public | tab2 | table | dbadmin | public | tab3 | table | dbadmin | (3 rows) 
  1. รันคำสั่งต่อไปนี้เพื่อสร้าง Configuration File เพื่อ Backup ตาราง 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. 
  1. รันคำสั่งต่อไปนี้เพื่อ List Backup Configuration Files ที่สร้าง:
 $ 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 

Initialize Backup Location

เพื่อ Initialize Backup Locations สำหรับ Full และ Object-Level Backups บน Source Cluster ให้รันคำสั่ง 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 

Backup

Backup ไม่ว่าจะ Full Database หรือ Object-Level

Full Database Backup

Backup Full Database โดยใช้ Configuration File ที่สร้างไว้ก่อนหน้า 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! 

Single Object Backup

ใช้ Configuration File tab1_bkp_snap.ini เพื่อ Backup Object-Level:

$ 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! 

Verify Backup Location

รันคำสั่งต่อไปนี้เพื่อ Verify Backup Location:

$ 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 

Restore Backup

Restore ไม่ว่าจะ Full หรือ Object-Level Backup

Restore จาก Full Database Backup

หมายเหตุ: Database ต้อง Down เพื่อ Restore Full Backup

ใช้ขั้นตอนต่อไปนี้เพื่อทำ Full-Database Restore:

  1. Drop ทุก Objects ใน Database ของคุณและ Restore ด้วย Backup ที่สร้างเมื่อเร็วๆ นี้:
 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. 
  1. ด้วย Database Down ให้ Restore Database โดยใช้ Full Backup:
 $ 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! 
  1. Start Database และตรวจสอบว่า Object Restoration สำเร็จ ตัวอย่างต่อไปนี้แสดงว่า Restore สำเร็จ:
 cluster=> dt List of tables Schema | Name | Kind | Owner | Comment --------+-------+-------+---------+--------- public | tab1 | table | dbadmin | public | tab2 | table | dbadmin | public | tab3 | table | dbadmin | (3 rows) 

Restore Object-Level Backup

หมายเหตุ: Database ต้อง Up และ Running สำหรับ Object-Level Restore

เพื่อ Restore Object คุณต้องใช้ Object-Level Backup ที่มีอยู่ โค้ดต่อไปนี้ Drop tab1 เพื่อเตรียม Restoration:

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) 

ทำตามขั้นตอนต่อไปนี้เพื่อ Restore Object จาก Object-Level Backup:

  1. Restore Object:
 $ 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! 
  1. ตรวจสอบว่า Object Restoration สำเร็จ ตัวอย่างต่อไปนี้แสดง Restoration ที่สำเร็จของ public.tab1 จาก Object-Level Backup:
 $ 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 | 

สรุป

โพสต์นี้เน้น Logic หลัง Vertica Database Backup และ Recovery Process มันยังให้ขั้นตอนในการ Backup และ Restore Vertica Database ในระดับต่างๆ เช่น Full, Incremental และ Object-Level

เรียนรู้เพิ่มเติมเกี่ยวกับ Databases

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

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