หน้านี้อธิบายวิธีใช้คุณสมบัติการสำรองข้อมูลตามกำหนดการของ 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
แทนที่สิ่งต่อไปนี้:
-
DATABASE_ID
: ID ของฐานข้อมูลที่จะสำรอง ตั้งค่าเป็น(default)
สำหรับฐานข้อมูลเริ่มต้น -
BACKUP_SCHEDULE_ID
: ID ของกำหนดเวลาการสำรองข้อมูล คุณสามารถดู 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
แทนที่สิ่งต่อไปนี้:
-
DATABASE_ID
: ID ของฐานข้อมูลที่จะสำรอง ตั้งค่าเป็น(default)
สำหรับฐานข้อมูลเริ่มต้น -
BACKUP_SCHEDULE_ID
: ID ของกำหนดเวลาการสำรองข้อมูล คุณสามารถดู 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
-
LOCATION
: ตำแหน่งของฐานข้อมูล -
BACKUP_ID
: ID ของข้อมูลสำรอง คุณสามารถดูรหัสข้อมูลสำรองแต่ละรายการได้เมื่อคุณ แสดงรายการข้อมูลสำรองทั้งหมด
ลบข้อมูลสำรอง
หากต้องการลบข้อมูลสำรอง ให้ใช้คำสั่ง gcloud alpha firestore backups delete
ดังนี้
gcloud alpha firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
-
LOCATION
: ตำแหน่งของฐานข้อมูล -
BACKUP_ID
: 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