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

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

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

เกี่ยวกับการสำรองข้อมูล

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

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

Cloud Firestore จัดเก็บข้อมูลเมตาที่เกี่ยวข้องกับการสำรองข้อมูลและกำหนดเวลาการสำรองข้อมูลที่เกี่ยวข้องกับฐานข้อมูล Cloud Firestore จะเก็บข้อมูลเมตานี้จนกว่าข้อมูลสำรอง ทั้งหมด สำหรับฐานข้อมูลจะหมดอายุหรือถูกลบ

การสร้างหรือการเก็บรักษาข้อมูลสำรองจะไม่ส่งผลต่อประสิทธิภาพการอ่านหรือเขียนในฐานข้อมูลสดของคุณ

ค่าใช้จ่าย

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

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

สำหรับรายละเอียดเพิ่มเติมและอัตราที่แน่นอน โปรดดูที่หน้า ราคา

ก่อนที่คุณจะเริ่ม

คุณลักษณะนี้ต้องใช้ แผนการกำหนดราคา Blaze

บทบาทที่จำเป็น

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

  • roles/datastore.owner : สิทธิ์เข้าถึงฐานข้อมูล Cloud Firestore โดยสมบูรณ์
  • บทบาทต่อไปนี้ยังใช้งานได้แต่ไม่ปรากฏในคอนโซล Google Cloud Platform ใช้ Google Cloud CLI เพื่อกำหนดบทบาทเหล่านี้:

    • roles/datastore.backupsAdmin : สิทธิ์การอ่านและเขียนข้อมูลสำรอง
    • roles/datastore.backupsViewer : สิทธิ์การอ่านข้อมูลสำรอง
    • roles/datastore.backupSchedulesAdmin : สิทธิ์การอ่านและเขียนตารางเวลาการสำรองข้อมูล
    • roles/datastore.backupSchedulesViewer : สิทธิ์การอ่านตารางการสำรองข้อมูล
    • roles/datastore.restoreAdmin : สิทธิ์ในการเริ่มต้นการดำเนินการกู้คืน

สร้างและจัดการกำหนดการสำรองข้อมูล

ตัวอย่างด้านล่างสาธิตวิธีการตั้งค่ากำหนดเวลาการสำรองข้อมูล สำหรับแต่ละฐานข้อมูล คุณสามารถกำหนดค่ากำหนดการสำรองข้อมูลรายวันได้สูงสุดหนึ่งรายการ และกำหนดการสำรองข้อมูลรายสัปดาห์สูงสุดหนึ่งรายการ คุณไม่สามารถกำหนดตารางเวลาการสำรองข้อมูลรายสัปดาห์หลายรายการสำหรับวันต่างๆ ของสัปดาห์ได้

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

สร้างกำหนดการสำรองข้อมูล

หากต้องการสร้างกำหนดเวลาการสำรองข้อมูลสำหรับฐานข้อมูล ให้ใช้คำสั่ง gcloud alpha firestore backups schedules create

สร้างกำหนดการสำรองข้อมูลรายวัน

หากต้องการสร้างกำหนดการสำรองข้อมูลรายวัน ให้ตั้งค่าสถานะ --recurrence เป็น daily :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

แทนที่สิ่งต่อไปนี้:

  • DATABASE_ID : ID ของฐานข้อมูลที่จะสำรอง ตั้งค่าเป็น (default) สำหรับฐานข้อมูลเริ่มต้น
  • RETENTION_PERIOD : สำหรับการสำรองข้อมูล daily ให้ตั้งค่านี้เป็นค่าสูงสุด 7 วัน ( 7d ) หากคุณตั้งค่าการเกิดซ้ำของการสำรองข้อมูล weekly ให้ตั้งค่านี้เป็นค่าสูงสุด 14 สัปดาห์ ( 14w )

สร้างกำหนดการสำรองข้อมูลรายสัปดาห์

หากต้องการสร้างกำหนดการสำรองข้อมูลรายสัปดาห์ ให้ตั้งค่าสถานะ --recurrence เป็น weekly :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY

แทนที่สิ่งต่อไปนี้:

  • DATABASE_ID : ID ของฐานข้อมูลที่จะสำรอง ตั้งค่าเป็น (default) สำหรับฐานข้อมูลเริ่มต้น
  • RETENTION_PERIOD : สำหรับการสำรองข้อมูลราย weekly ให้ตั้งค่านี้เป็นค่าสูงสุด 14 สัปดาห์ ( 14w )
  • DAY : วันในสัปดาห์ที่จะสำรองข้อมูล ตั้งค่าเป็นอย่างใดอย่างหนึ่งต่อไปนี้:
    • SUN สำหรับวันอาทิตย์
    • MON สำหรับวันจันทร์
    • TUE สำหรับวันอังคาร
    • WED สำหรับวันพุธ
    • THU สำหรับวันพฤหัสบดี
    • FRI สำหรับวันศุกร์
    • SAT สำหรับวันเสาร์

แสดงรายการกำหนดการสำรองข้อมูล

หากต้องการแสดงรายการกำหนดเวลาการสำรองข้อมูลทั้งหมดสำหรับฐานข้อมูล ให้ใช้คำสั่ง gcloud alpha firestore backups schedules list คำสั่งนี้ส่งคืนข้อมูลเกี่ยวกับกำหนดเวลาการสำรองข้อมูลทั้งหมด

gcloud alpha firestore backups schedules list \
--database='DATABASE_ID'

แทนที่ DATABASE_ID ด้วย ID ของฐานข้อมูล ใช้ (default) สำหรับฐานข้อมูลเริ่มต้น

อธิบายกำหนดการสำรองข้อมูล

หากต้องการดึงข้อมูลเกี่ยวกับกำหนดการสำรองข้อมูล ให้ใช้คำสั่ง gcloud alpha firestore backups schedules describe ดังนี้

gcloud alpha firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

แทนที่สิ่งต่อไปนี้:

อัปเดตกำหนดการสำรองข้อมูล

หากต้องการอัปเดตระยะเวลาเก็บรักษากำหนดการสำรองข้อมูล ให้ใช้คำสั่ง gcloud alpha firestore backups schedules update ดังนี้

gcloud alpha firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
--retention=RETENTION_PERIOD

แทนที่สิ่งต่อไปนี้:

  • DATABASE_ID : ID ของฐานข้อมูลที่จะสำรอง ตั้งค่าเป็น (default) สำหรับฐานข้อมูลเริ่มต้น
  • BACKUP_SCHEDULE_ID : ID ของกำหนดเวลาการสำรองข้อมูล คุณสามารถดู ID กำหนดการสำรองข้อมูลแต่ละรายการได้เมื่อคุณ แสดงรายการกำหนดการสำรองข้อมูลทั้งหมด
  • RETENTION_PERIOD : หากคุณตั้งค่าการเกิดซ้ำของการสำรองข้อมูล daily ให้ตั้งค่านี้เป็นค่าสูงสุด 7 วัน ( 7d ) หากคุณตั้งค่าการเกิดซ้ำของการสำรองข้อมูล weekly ให้ตั้งค่านี้เป็นค่าสูงสุด 14 สัปดาห์ ( 14w )

ลบกำหนดเวลาการสำรองข้อมูล

หากต้องการลบกำหนดเวลาการสำรองข้อมูล ให้ใช้คำสั่ง gcloud alpha firestore backups schedules delete ดังนี้

gcloud alpha firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

แทนที่สิ่งต่อไปนี้:

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

จัดการการสำรองข้อมูล

แสดงรายการข้อมูลสำรอง

หากต้องการแสดงรายการข้อมูลสำรองที่มีอยู่ ให้ใช้คำสั่ง gcloud alpha firestore backups list ดังนี้

gcloud alpha firestore backups list \
--format="table(name, database, state)"

--format="table(name, database, state)" แฟล็กจะจัดรูปแบบเอาต์พุตให้อยู่ในรูปแบบที่อ่านง่ายขึ้น

หากต้องการแสดงรายการเฉพาะข้อมูลสำรองจากตำแหน่งใดตำแหน่งหนึ่ง ให้ใช้แฟล็ก --location :

gcloud alpha firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"

แทนที่ LOCATION ด้วยชื่อของตำแหน่ง Cloud Firestore

อธิบายการสำรองข้อมูล

หากต้องการดูรายละเอียดเกี่ยวกับการสำรองข้อมูล ให้ใช้คำสั่ง gcloud alpha firestore backups describe :

gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID

ลบข้อมูลสำรอง

หากต้องการลบข้อมูลสำรอง ให้ใช้คำสั่ง gcloud alpha firestore backups delete ดังนี้

gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID

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

การดำเนินการกู้คืนจะเขียนข้อมูลจากข้อมูลสำรองไปยังฐานข้อมูล Cloud Firestore ใหม่ หากต้องการเริ่มการดำเนินการกู้คืน ให้ใช้คำสั่ง gcloud alpha firestore databases restore ดังนี้

gcloud alpha firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
  • PROJECT_ID : รหัสโครงการของคุณ
  • LOCATION : ตำแหน่งของการสำรองฐานข้อมูลและตำแหน่งของฐานข้อมูลใหม่ที่สร้างขึ้นสำหรับข้อมูลที่กู้คืน
  • BACKUP_ID : ID ของข้อมูลสำรอง คุณสามารถดูรหัสข้อมูลสำรองแต่ละรายการได้เมื่อคุณ แสดงรายการข้อมูลสำรองทั้งหมด
  • DATABASE_ID : ID ฐานข้อมูลสำหรับฐานข้อมูลใหม่ คุณไม่สามารถใช้ ID ฐานข้อมูลที่ใช้งานอยู่แล้วได้

ผลลัพธ์จะรวมถึง metadata name และส่วนประกอบ response :

metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1.RestoreDatabaseMetadata
  backup: projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
  database: projects/PROJECT_ID/databases/DATABASE_ID
  operationState: PROCESSING
  progressPercentage:
    completedWork: '20'
    estimatedWork: '100'
  startTime: '2023-12-06T14:20:17.398325Z'
name: projects/PROJECT_ID/databases/DATABASE_ID/operations/operation_uuid
response:
  '@type': type.googleapis.com/google.firestore.admin.v1.Database
  createTime: '2023-12-06T14:20:17.398325Z'
  name: projects/PROJECT_ID/databases/DATABASE_ID
  ...

ฟิลด์ metadata ประกอบด้วยองค์ประกอบ progressPercentage ซึ่งแสดงรายละเอียดความคืบหน้าโดยประมาณของการกู้คืนจนถึงขณะนี้ และ operationState ที่ระบุสถานะโดยรวมของการกู้คืน

หากต้องการดึงข้อมูลนี้อีกครั้ง ให้ใช้ gcloud firestore operations list :

gcloud firestore operations list --database=DATABASE_ID

หรือใช้ฟิลด์ name จากเอาต์พุตที่อธิบายไว้ข้างต้น โดยมี gcloud firestore operations describe :

gcloud firestore operations describe OPERATION_NAME