หน้านี้จะอธิบายวิธีใช้การสำรองข้อมูลตามกำหนดการของ Cloud Firestore ใช้ข้อมูลสำรองเพื่อปกป้องข้อมูลของคุณจากข้อมูลระดับแอปพลิเคชัน เกิดความเสียหายหรือจากการลบข้อมูลโดยไม่ตั้งใจ
การสำรองข้อมูลช่วยให้คุณกำหนดกำหนดการสำรองข้อมูลเป็นรายวันหรือรายสัปดาห์ได้ ฐานข้อมูลที่ระบุ จากนั้นคุณสามารถใช้ข้อมูลสำรองเหล่านี้เพื่อกู้คืน ไปยังฐานข้อมูลใหม่
เกี่ยวกับข้อมูลสำรอง
ข้อมูลสำรองคือสำเนาที่สอดคล้องกันของฐานข้อมูลในช่วงเวลาหนึ่ง ข้อมูลสำรองประกอบด้วยการกำหนดค่าข้อมูลและดัชนีทั้งหมด ณ เวลานั้น ให้ทันเวลา ข้อมูลสำรองจะไม่มีนโยบาย Time to Live ของฐานข้อมูล ข้อมูลสำรองจะอยู่ในตำแหน่งเดียวกับฐานข้อมูลต้นทาง
ข้อมูลสำรองจะมีระยะเวลาเก็บรักษาที่กำหนดค่าได้ และข้อมูลสำรองจะจัดเก็บไว้จนกระทั่งมีการเก็บรักษา ระยะเวลาหมดอายุหรือจนกว่าคุณจะลบข้อมูลสำรอง การลบฐานข้อมูลต้นทาง จะไม่ลบข้อมูลสำรองที่เกี่ยวข้องโดยอัตโนมัติ
Cloud Firestore จัดเก็บข้อมูลเมตาที่เกี่ยวข้องกับข้อมูลสำรองและข้อมูลสำรอง กำหนดการที่เกี่ยวข้องกับฐานข้อมูล Cloud Firestore จะเก็บข้อมูลเมตานี้ไว้ จนกว่าข้อมูลสำรองทั้งหมดสำหรับฐานข้อมูลจะหมดอายุหรือถูกลบ
การสร้างหรือการเก็บรักษาข้อมูลสำรองจะไม่ส่งผลต่อประสิทธิภาพของการอ่านหรือ เขียนในฐานข้อมูลแบบสดของคุณ
ค่าใช้จ่าย
เมื่อใช้ข้อมูลสำรอง ระบบจะเรียกเก็บเงินสำหรับสิ่งต่อไปนี้
- ปริมาณพื้นที่เก็บข้อมูลที่ใช้โดยข้อมูลสำรองแต่ละรายการ
- ในการดำเนินการกู้คืน ระบบจะเรียกเก็บเงินตามขนาดของข้อมูลสำรอง
ดูรายละเอียดเพิ่มเติมและราคาที่แน่นอนได้ในหน้าราคา
ก่อนเริ่มต้น
ฟีเจอร์นี้ต้องใช้แพ็กเกจราคา Blazeบทบาทที่จำเป็น
หากต้องการรับสิทธิ์ที่ต้องใช้ในการจัดการการสำรองข้อมูลและกำหนดเวลาการสำรองข้อมูล ให้ทำดังนี้ โปรดขอให้ผู้ดูแลระบบอนุญาต Identity and Access Management ดังต่อไปนี้อย่างน้อย 1 รายการ บทบาท:
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 firestore backups schedules create
หรือคำสั่ง firebase firestore:databases:backups:schedules
สร้างกำหนดการสํารองข้อมูลรายวัน
gcloud
หากต้องการสร้างกำหนดเวลาการสำรองข้อมูลรายวัน ให้ตั้งค่าสถานะ--recurrence
เป็น daily
ดังนี้
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=daily \ --retention=RETENTION_PERIOD
โดยแทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสของฐานข้อมูลที่จะสำรองข้อมูล กำหนดเป็น
'(default)'
สำหรับฐานข้อมูลเริ่มต้น - RETENTION_PERIOD: ตั้งค่านี้เป็นค่าไม่เกิน 14 สัปดาห์ (
14w
)
Firebase CLI
หากต้องการสร้างกำหนดเวลาการสำรองข้อมูลรายวัน ให้ตั้งค่าสถานะ--recurrence
เป็น DAILY
ดังนี้
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'DAILY' \ --retention RETENTION_PERIOD
โดยแทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสของฐานข้อมูลที่จะสำรองข้อมูล กำหนดเป็น
'(default)'
สำหรับฐานข้อมูลเริ่มต้น - RETENTION_PERIOD: ตั้งค่านี้เป็นค่าไม่เกิน 14 สัปดาห์ (
14w
)
Terraform
หากต้องการสร้างกำหนดเวลาการสำรองข้อมูลรายวัน ให้สร้างทรัพยากรgoogle_firestore_backup_schedule
resource "google_firestore_backup_schedule" "daily-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS daily_recurrence {} }
โดยแทนที่ค่าต่อไปนี้
- PROJECT_ID: รหัสของโปรเจ็กต์
- DATABASE_ID: รหัสของฐานข้อมูลที่จะสำรองข้อมูล กำหนดเป็น
'(default)'
สำหรับฐานข้อมูลเริ่มต้น
นอกจากนี้ คุณยังสามารถใช้การอ้างอิงทรัพยากรเพื่อ
ทรัพยากร Terraform ของประเภท - RETENTION_PERIOD_SECONDS: ตั้งเป็นค่าเป็นวินาที ตามด้วย "s" ค่าสูงสุดคือ
8467200s
(14 สัปดาห์)
google_firestore_database
สร้างกำหนดการสำรองข้อมูลรายสัปดาห์
gcloud
หากต้องการสร้างกำหนดการดำเนินการสำรองข้อมูลรายสัปดาห์ ให้ตั้งค่าสถานะ--recurrence
เป็น weekly
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAYโดยแทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสของฐานข้อมูลที่จะสำรองข้อมูล กำหนดเป็น
'(default)'
สำหรับฐานข้อมูลเริ่มต้น - RETENTION_PERIOD: ตั้งค่านี้เป็นค่าไม่เกิน 14 สัปดาห์ (
14w
) - DAY: วันของสัปดาห์ที่จะทำข้อมูลสำรอง กำหนดเป็น
ดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
SUN
สำหรับวันอาทิตย์MON
สำหรับวันจันทร์TUE
สำหรับวันอังคารWED
สำหรับวันพุธTHU
สำหรับวันพฤหัสบดีFRI
สำหรับวันศุกร์SAT
สำหรับวันเสาร์
Firebase CLI
หากต้องการสร้างกำหนดการดำเนินการสำรองข้อมูลรายสัปดาห์ ให้ตั้งค่าสถานะ--recurrence
เป็น WEEKLY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAYโดยแทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสของฐานข้อมูลที่จะสำรองข้อมูล กำหนดเป็น
'(default)'
สำหรับฐานข้อมูลเริ่มต้น - RETENTION_PERIOD: ตั้งค่านี้เป็นค่าไม่เกิน 14 สัปดาห์ (
14w
) - DAY: วันของสัปดาห์ที่จะทำข้อมูลสำรอง กำหนดเป็น
ดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
SUNDAY
สำหรับวันอาทิตย์MONDAY
สำหรับวันจันทร์TUESDAY
สำหรับวันอังคารWEDNESDAY
สำหรับวันพุธTHURSDAY
สำหรับวันพฤหัสบดีFRIDAY
สำหรับวันศุกร์SATURDAY
สำหรับวันเสาร์
Terraform
หากต้องการสร้างกำหนดเวลาการสำรองข้อมูลรายสัปดาห์ ให้สร้างทรัพยากรgoogle_firestore_backup_schedule
resource "google_firestore_backup_schedule" "weekly-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS weekly_recurrence { day = DAY } }
โดยแทนที่ค่าต่อไปนี้
- PROJECT_ID: รหัสของโปรเจ็กต์
- DATABASE_ID: รหัสของฐานข้อมูลที่จะสำรองข้อมูล กำหนดเป็น
'(default)'
สำหรับฐานข้อมูลเริ่มต้น
นอกจากนี้ คุณยังสามารถใช้การอ้างอิงทรัพยากรเพื่อ
ทรัพยากร Terraform ของประเภท - RETENTION_PERIOD_SECONDS: ตั้งเป็นค่าเป็นวินาที ตามด้วย "s" ค่าสูงสุดคือ
8467200s
(14 สัปดาห์) - DAY: วันของสัปดาห์ที่จะทำข้อมูลสำรอง กำหนดเป็น
ดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
SUNDAY
สำหรับวันอาทิตย์MONDAY
สำหรับวันจันทร์TUESDAY
สำหรับวันอังคารWEDNESDAY
สำหรับวันพุธTHURSDAY
สำหรับวันพฤหัสบดีFRIDAY
สำหรับวันศุกร์SATURDAY
สำหรับวันเสาร์
google_firestore_database
แสดงรายการกำหนดเวลาการสำรองข้อมูล
หากต้องการแสดงรายการกำหนดการสำรองข้อมูลทั้งหมดสำหรับฐานข้อมูล ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
gcloud
ใช้คำสั่งgcloud firestore backups schedules list
gcloud firestore backups schedules list \ --database='DATABASE_ID'แทนที่ DATABASE_ID ด้วยรหัสของฐานข้อมูล ใช้
'(default)'
สำหรับฐานข้อมูลเริ่มต้น
Firebase CLI
ใช้คำสั่งfirebase firestore:backups:schedules:list
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'แทนที่ DATABASE_ID ด้วยรหัสของฐานข้อมูล ใช้
'(default)'
สำหรับฐานข้อมูลเริ่มต้น
อธิบายกำหนดการสำรองข้อมูล
หากต้องการเรียกข้อมูลเกี่ยวกับกำหนดการสำรอง ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
gcloud
ใช้เมนู คำสั่งgcloud firestore backups schedules describe
gcloud firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDโดยแทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสของฐานข้อมูลที่จะสำรองข้อมูล กำหนดเป็น
'(default)'
สำหรับฐานข้อมูลเริ่มต้น - BACKUP_SCHEDULE_ID: รหัสของกำหนดการสำรอง คุณ ดูรหัสของกำหนดการสำรองข้อมูลแต่ละกำหนดได้ ระบุกำหนดการสำรองข้อมูลทั้งหมด
อัปเดตกําหนดการสํารองข้อมูล
หากต้องการอัปเดตระยะเวลาเก็บรักษาของกำหนดการสำรองข้อมูล ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
gcloud
ใช้คำสั่งgcloud firestore backups schedules update
gcloud firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIODโดยแทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสของฐานข้อมูลที่จะสำรองข้อมูล กำหนดเป็น
'(default)'
สำหรับฐานข้อมูลเริ่มต้น - BACKUP_SCHEDULE_ID: รหัสของกำหนดการสำรอง คุณ ดูรหัสของกำหนดการสำรองข้อมูลแต่ละกำหนดได้ ระบุกำหนดการสำรองข้อมูลทั้งหมด
- RETENTION_PERIOD: ตั้งค่านี้เป็นค่าไม่เกิน 14 สัปดาห์ (
14w
)
Firebase CLI
ใช้คำสั่งfirebase firestore:backups:schedules:update
ดังนี้
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIODโดยแทนที่ค่าต่อไปนี้
- BACKUP_SCHEDULE: ชื่อทรัพยากรแบบเต็มของกำหนดการสำรองข้อมูล คุณ สามารถดูชื่อของกำหนดการสำรองข้อมูลแต่ละรายการเมื่อคุณ ระบุกำหนดการสำรองข้อมูลทั้งหมด
- RETENTION_PERIOD: ตั้งค่านี้เป็นค่าไม่เกิน 14 สัปดาห์ (
14w
)
คุณอัปเดตระยะเวลาเก็บรักษาของกำหนดการสำรองข้อมูลได้ แต่จะอัปเดตระยะเวลาเก็บรักษาของกำหนดการซ้ำไม่ได้ หากจำเป็นต้องใช้กำหนดเวลาการสำรองข้อมูลด้วยการเกิดซ้ำอื่น ให้ลบกำหนดการสำรองข้อมูลเก่าหากไม่จำเป็นต้องใช้แล้ว แล้วสร้างกำหนดการสำรองข้อมูลใหม่โดยกำหนดเวลาการเกิดซ้ำตามต้องการ
ลบกำหนดการสำรองข้อมูล
หากต้องการลบกำหนดเวลาการสำรองข้อมูล ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
gcloud
ใช้คำสั่งgcloud firestore backups schedules delete
gcloud firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDโดยแทนที่ค่าต่อไปนี้
- DATABASE_ID: รหัสของฐานข้อมูลที่จะสำรองข้อมูล กำหนดเป็น
'(default)'
สำหรับฐานข้อมูลเริ่มต้น - BACKUP_SCHEDULE_ID: รหัสของกำหนดการสำรอง คุณ ดูรหัสของกำหนดการสำรองข้อมูลแต่ละกำหนดได้ ระบุกำหนดการสำรองข้อมูลทั้งหมด
Firebase CLI
ใช้คำสั่งfirebase firestore:backups:schedules:delete
ดังนี้
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULEโดยแทนที่ค่าต่อไปนี้
- BACKUP_SCHEDULE: ชื่อทรัพยากรแบบเต็มของกำหนดการสำรองข้อมูล คุณ สามารถดูชื่อของกำหนดการสำรองข้อมูลแต่ละรายการเมื่อคุณ ระบุกำหนดการสำรองข้อมูลทั้งหมด
โปรดทราบว่าการลบกำหนดการสำรองข้อมูลจะไม่ลบข้อมูลสำรองที่สร้างไว้แล้วโดย กำหนดการนี้ คุณสามารถรอให้รหัสเหล่านั้นหมดอายุหลังจากระยะเวลาเก็บรักษา หรือ หากต้องการลบข้อมูลสำรองด้วยตนเอง โปรดดูหัวข้อลบข้อมูลสำรอง
จัดการข้อมูลสำรอง
สร้างรายการข้อมูลสำรอง
หากต้องการแสดงรายการข้อมูลสำรองที่มีอยู่ ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
gcloud
ใช้คำสั่งgcloud firestore backups list
gcloud firestore backups list \ --format="table(name, database, state)"แฟล็ก
--format="table(name, database, state)"
จะจัดรูปแบบเอาต์พุตเป็น
รูปแบบที่อ่านง่ายขึ้น
หากต้องการแสดงเฉพาะข้อมูลสำรองจากตำแหน่งที่เจาะจง ให้ใช้แฟล็ก --location
ดังนี้
gcloud firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"แทนที่
LOCATION
ด้วยชื่อของ Cloud Firestore
ตำแหน่งนั้น
Firebase CLI
ใช้คำสั่งfirebase firestore:backups:list
ดังนี้
firebase firestore:backups:listหากต้องการแสดงเฉพาะข้อมูลสำรองจากตำแหน่งที่เจาะจง ให้ใช้แฟล็ก
--location
ดังนี้
firebase firestore:backups:list \ --location=LOCATIONแทนที่
LOCATION
ด้วยชื่อของ Cloud Firestore
ตำแหน่งนั้น
อธิบายข้อมูลสำรอง
หากต้องการดูรายละเอียดเกี่ยวกับข้อมูลสำรอง ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
gcloud
ใช้คำสั่งgcloud firestore backups describe
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_IDโดยแทนที่ค่าต่อไปนี้
- LOCATION: ตำแหน่งของฐานข้อมูล
- BACKUP_ID: รหัสของข้อมูลสำรอง คุณ ดูรหัสของข้อมูลสำรองแต่ละรายการได้เมื่อคุณแสดงรายการข้อมูลสำรองทั้งหมด
Firebase CLI
ใช้คำสั่งfirebase firestore:backups:get
ดังนี้
firebase firestore:backups:get BACKUPโดยแทนที่ค่าต่อไปนี้
- BACKUP: ชื่อทรัพยากรแบบเต็มของข้อมูลสำรอง คุณจะดูชื่อของข้อมูลสำรองแต่ละรายการได้เมื่อแสดงรายการข้อมูลสำรองทั้งหมด
ลบข้อมูลสำรอง
gcloud
ใช้คำสั่งgcloud firestore backups delete
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_IDโดยแทนที่ค่าต่อไปนี้
- LOCATION: ตำแหน่งของฐานข้อมูล
- BACKUP_ID: รหัสของข้อมูลสำรอง คุณ ดูรหัสของข้อมูลสำรองแต่ละรายการได้เมื่อคุณแสดงรายการข้อมูลสำรองทั้งหมด
Firebase CLI
ใช้คำสั่งfirebase firestore:backups:delete
ดังนี้
firebase firestore:backups:delete \ BACKUPโดยแทนที่ค่าต่อไปนี้
- BACKUP: ชื่อทรัพยากรแบบเต็มของข้อมูลสำรอง คุณดูชื่อของข้อมูลสำรองแต่ละรายการได้ เมื่อคุณระบุข้อมูลสำรองทั้งหมด
กู้คืนข้อมูลจากฐานข้อมูลสำรอง
การดำเนินการกู้คืนจะเขียนข้อมูลจากข้อมูลสำรองไปยัง Cloud Firestore ใหม่ ฐานข้อมูล
หากต้องการเริ่มการดำเนินการกู้คืน ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
gcloud
ใช้คำสั่งgcloud firestore databases restore
gcloud firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'โดยแทนที่ค่าต่อไปนี้
- PROJECT_ID: รหัสโปรเจ็กต์
- LOCATION: ตำแหน่งของข้อมูลสำรองของฐานข้อมูลและ ตำแหน่งของฐานข้อมูลใหม่ที่สร้างขึ้นสำหรับข้อมูลที่กู้คืนแล้ว
- BACKUP_ID: รหัสของข้อมูลสำรอง คุณจะดูรหัสของข้อมูลสำรองแต่ละรายการได้เมื่อแสดงรายการข้อมูลสำรองทั้งหมด
- DATABASE_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
Firebase CLI
ใช้คำสั่งfirebase firestore:databases:restore
ดังนี้
firebase firestore:databases:restore \ --backup 'BACKUP' \ --database 'DATABASE_ID'โดยแทนที่ค่าต่อไปนี้
- BACKUP: ชื่อทรัพยากรแบบเต็มของข้อมูลสำรอง คุณจะดูชื่อของข้อมูลสำรองแต่ละรายการได้เมื่อแสดงรายการข้อมูลสำรองทั้งหมด
- DATABASE_ID: รหัสฐานข้อมูลสำหรับ ฐานข้อมูล คุณจะใช้รหัสฐานข้อมูลที่ใช้งานอยู่แล้วไม่ได้