คุณสามารถใช้บริการส่งออกและนำเข้าที่มีการจัดการของ Cloud Firestore เพื่อกู้คืนจากการลบข้อมูลโดยไม่ตั้งใจ และส่งออกข้อมูลสำหรับการประมวลผลออฟไลน์ คุณสามารถส่งออกเอกสารทั้งหมดหรือเฉพาะคอลเลกชันที่เฉพาะเจาะจงได้ ในทำนองเดียวกัน คุณสามารถนำเข้าข้อมูลทั้งหมดจากการส่งออกหรือเฉพาะคอลเลกชันที่เฉพาะเจาะจงได้ ข้อมูลที่ส่งออกจากฐานข้อมูล Cloud Firestore หนึ่งสามารถนำเข้าไปยังฐานข้อมูล Cloud Firestore อื่นได้ คุณยัง โหลดการส่งออก Cloud Firestore ลงใน BigQuery ได้อีกด้วย
หน้านี้อธิบายวิธีการส่งออกและนำเข้าเอกสาร Cloud Firestore โดยใช้บริการส่งออกและนำเข้าที่มีการจัดการและ Cloud Storage บริการส่งออกและนำเข้าที่มีการจัดการของ Cloud Firestore พร้อมใช้งานผ่านเครื่องมือบรรทัดคำสั่ง gcloud
และ Cloud Firestore API ( REST , RPC )
ก่อนที่คุณจะเริ่ม
ก่อนที่คุณจะสามารถใช้บริการส่งออกและนำเข้าที่มีการจัดการ คุณต้องทำงานต่อไปนี้:
- เปิดใช้การเรียกเก็บเงินสำหรับโครงการ Google Cloud ของคุณ เฉพาะโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินเท่านั้นที่ใช้ฟังก์ชันการส่งออกและนำเข้าได้
- สร้างที่เก็บข้อมูล Cloud Storage สำหรับโปรเจ็กต์ของคุณ ในตำแหน่งใกล้กับ ตำแหน่งฐานข้อมูล Cloud Firestore ของคุณ คุณไม่สามารถใช้ที่เก็บข้อมูล Requester Pays สำหรับการดำเนินการส่งออกและนำเข้า
ตรวจสอบให้แน่ใจว่าบัญชีของคุณมีสิทธิ์ที่จำเป็นสำหรับ Cloud Firestore และ Cloud Storage หากคุณเป็นเจ้าของโครงการ บัญชีของคุณมีสิทธิ์ที่จำเป็น มิฉะนั้น บทบาทต่อไปนี้จะให้สิทธิ์ที่จำเป็นสำหรับการดำเนินการส่งออกและนำเข้า และสำหรับการเข้าถึง Cloud Storage:
- บทบาท Cloud Firestore:
Owner
,Cloud Datastore Owner
หรือCloud Datastore Import Export Admin
บทบาท Cloud Storage:
Owner
หรือStorage Admin
- บทบาท Cloud Firestore:
สิทธิ์ตัวแทนบริการ
การดำเนินการส่งออกและนำเข้าใช้ตัวแทนบริการ Cloud Firestore เพื่อให้สิทธิ์การดำเนินการ Cloud Storage Agent บริการ Cloud Firestore ใช้หลักการตั้งชื่อต่อไปนี้:
- ตัวแทนบริการ Cloud Firestore
-
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตัวแทนบริการ โปรดดูที่ ตัวแทนบริการ
Agent บริการ Cloud Firestore จำเป็นต้องเข้าถึงที่เก็บข้อมูล Cloud Storage ที่ใช้ในการส่งออกหรือนำเข้า หากที่เก็บข้อมูล Cloud Storage ของคุณอยู่ในโปรเจ็กต์เดียวกับฐานข้อมูล Cloud Firestore ตัวแทนบริการ Cloud Firestore จะสามารถเข้าถึงที่เก็บข้อมูลตามค่าเริ่มต้น
หากที่เก็บข้อมูล Cloud Storage อยู่ในโปรเจ็กต์อื่น คุณต้องให้สิทธิ์ตัวแทนบริการ Cloud Firestore เข้าถึงที่เก็บข้อมูล Cloud Storage
กำหนดบทบาทให้กับตัวแทนบริการ
คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง gsutil เพื่อกำหนดบทบาทใดบทบาทหนึ่งด้านล่างนี้ได้ ตัวอย่างเช่น หากต้องการกำหนดบทบาทผู้ดูแลระบบพื้นที่เก็บข้อมูลให้กับตัวแทนบริการ Cloud Firestore ให้รันสิ่งต่อไปนี้:
gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \ gs://[BUCKET_NAME]
แทนที่ PROJECT_NUMBER
ด้วยหมายเลขโปรเจ็กต์ของคุณ ซึ่งใช้เพื่อตั้งชื่อตัวแทนบริการ Cloud Firestore ของคุณ หากต้องการดูชื่อตัวแทนบริการ โปรดดู ดูชื่อตัวแทนบริการ
หรือคุณสามารถ มอบหมายบทบาทนี้โดยใช้คอนโซล GCP
ดูชื่อตัวแทนบริการ
คุณสามารถดูบัญชีที่การดำเนินการนำเข้าและส่งออกของคุณใช้ในการอนุญาตคำขอได้จากหน้า นำเข้า/ส่งออก ในคอนโซล Google Cloud Platform คุณยังดูได้ว่าฐานข้อมูลของคุณใช้ตัวแทนบริการ Cloud Firestore หรือบัญชีบริการ App Engine เดิมหรือไม่
- ดูบัญชีการอนุญาตถัดจาก งานนำเข้า/ส่งออกที่ทำงานเป็น ป้ายกำกับ
ตัวแทนบริการต้องการบทบาท Storage Admin
สำหรับที่เก็บข้อมูล Cloud Storage เพื่อใช้สำหรับการดำเนินการส่งออกหรือนำเข้า
ตั้งค่า gcloud
สำหรับโปรเจ็กต์ของคุณ
คุณสามารถเริ่มต้นการดำเนินการนำเข้าและส่งออกผ่านคอนโซล Google Cloud Platform หรือเครื่องมือบรรทัดคำสั่ง gcloud
หากต้องการใช้ gcloud
ให้ตั้งค่าเครื่องมือบรรทัดคำสั่งและเชื่อมต่อกับโปรเจ็กต์ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
เข้าถึง
gcloud
จากคอนโซล Google Cloud Platform โดยใช้ Cloud Shellตรวจสอบว่าได้กำหนด
gcloud
สำหรับโปรเจ็กต์ที่ถูกต้องแล้ว:gcloud config set project [PROJECT_ID]
ส่งออกข้อมูล
การดำเนินการส่งออกจะคัดลอกเอกสารในฐานข้อมูลของคุณไปยังชุดไฟล์ในที่เก็บข้อมูล Cloud Storage โปรดทราบว่าการส่งออกไม่ใช่สแนปชอตฐานข้อมูลที่แน่นอนที่ถ่าย ณ เวลาเริ่มต้นการส่งออก การส่งออกอาจรวมถึงการเปลี่ยนแปลงที่ทำในขณะที่การดำเนินการกำลังทำงานอยู่
ส่งออกเอกสารทั้งหมด
Google คลาวด์คอนโซล
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก นำเข้า/ส่งออก
คลิก ส่งออก
คลิกตัวเลือก ส่งออกฐานข้อมูลทั้งหมด
ด้านล่าง เลือกปลายทาง ป้อนชื่อที่เก็บข้อมูล Cloud Storage หรือใช้ปุ่ม เรียกดู เพื่อเลือกที่เก็บข้อมูล
คลิก ส่งออก
คอนโซลจะกลับไปที่หน้า นำเข้า/ส่งออก หากการดำเนินการเริ่มต้นได้สำเร็จ เพจจะเพิ่มรายการลงในเพจการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว เพจจะแสดงข้อความแสดงข้อผิดพลาด
gcloud
ใช้คำสั่ง firestore export
เพื่อส่งออกเอกสารทั้งหมดในฐานข้อมูลของคุณ โดยแทนที่ [BUCKET_NAME]
ด้วยชื่อของที่เก็บข้อมูล Cloud Storage ของคุณ เพิ่มแฟล็ก --async
เพื่อป้องกันไม่ให้เครื่องมือ gcloud
รอให้การดำเนินการเสร็จสิ้น
gcloud firestore export gs://[BUCKET_NAME] \ --database=[DATABASE]
แทนที่สิ่งต่อไปนี้:
BUCKET_NAME
: จัดระเบียบการส่งออกของคุณโดยเพิ่มคำนำหน้าไฟล์หลังชื่อที่เก็บข้อมูล เช่นBUCKET_NAME/my-exports-folder/export-name
หากคุณไม่ได้ระบุคำนำหน้าไฟล์ บริการส่งออกที่มีการจัดการจะสร้างคำนำหน้าตามการประทับเวลาปัจจุบันDATABASE
: ชื่อของฐานข้อมูลที่คุณต้องการส่งออกเอกสาร สำหรับฐานข้อมูลดีฟอลต์ ให้ใช้--database='(default)'
เมื่อคุณเริ่มดำเนินการส่งออก การปิดเทอร์มินัลจะไม่ยกเลิกการดำเนินการ โปรดดู ที่ ยกเลิกการดำเนินการ
ส่งออกคอลเลกชันเฉพาะ
Google คลาวด์คอนโซล
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก นำเข้า/ส่งออก
คลิก ส่งออก
คลิกตัวเลือก ส่งออกกลุ่มคอลเลกชันตั้งแต่หนึ่งกลุ่มขึ้นไป ใช้เมนูแบบเลื่อนลงเพื่อเลือกกลุ่มคอลเลกชันตั้งแต่หนึ่งกลุ่มขึ้นไป
ด้านล่าง เลือกปลายทาง ป้อนชื่อที่เก็บข้อมูล Cloud Storage หรือใช้ปุ่ม เรียกดู เพื่อเลือกที่เก็บข้อมูล
คลิก ส่งออก
คอนโซลจะกลับไปที่หน้า นำเข้า/ส่งออก หากการดำเนินการเริ่มต้นได้สำเร็จ เพจจะเพิ่มรายการลงในเพจการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว เพจจะแสดงข้อความแสดงข้อผิดพลาด
gcloud
หากต้องการส่งออกกลุ่มคอลเลกชันเฉพาะ ให้ใช้แฟล็ก --collection-ids
การดำเนินการส่งออกเฉพาะกลุ่มคอลเลกชันที่มีรหัสคอลเลกชันที่กำหนด กลุ่มคอลเลกชันประกอบด้วยคอลเลกชันและคอลเลกชันย่อยทั้งหมด (ในเส้นทางใดก็ได้) พร้อมด้วยรหัสคอลเลกชันที่ระบุ
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \ --database=[DATABASE]
ตัวอย่างเช่น คุณสามารถออกแบบคอลเลกชัน restaurants
ในฐานข้อมูล foo
เพื่อรวมคอลเลกชันย่อยหลายรายการ เช่น ratings
reviews
หรือ outlets
หากต้องการส่ง restaurants
และ reviews
คอลเลกชันที่เฉพาะเจาะจง คำสั่งของคุณจะเป็นดังนี้:
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=restaurants,reviews \ --database='cymbal'
ส่งออกจากการประทับเวลา PITR
คุณส่งออกฐานข้อมูลไปยัง Cloud Storage จาก ข้อมูล PITR ได้โดยใช้คำสั่ง gcloud firestore export
คุณสามารถส่งออกข้อมูล PITR โดยที่การประทับเวลาเป็นการประทับเวลาแบบนาทีทั้งหมดภายในเจ็ดวันที่ผ่านมา แต่ไม่เร็วกว่า earliestVersionTime
หากไม่มีข้อมูลในเวลาประทับที่ระบุ การดำเนินการส่งออกจะล้มเหลว
การดำเนินการส่งออก PITR รองรับตัวกรองทั้งหมด รวมถึงการส่งออกเอกสารทั้งหมดและการส่งออกคอลเลกชันเฉพาะ
ส่งออกฐานข้อมูล โดยระบุพารามิเตอร์
snapshot-time
ไปยังการประทับเวลาการกู้คืนที่ต้องการgcloud
เรียกใช้คำสั่งต่อไปนี้เพื่อส่งออกฐานข้อมูลไปยังบัคเก็ตของคุณ
gcloud firestore export gs://[BUCKET_NAME_PATH] \ --snapshot-time=[PITR_TIMESTAMP] \ --collection-ids=[COLLECTION_IDS] \ --namespace-ids=[NAMESPACE_IDS]
ที่ไหน,
-
PITR_TIMESTAMP
- การประทับเวลา PITR ที่รายละเอียดเป็นนาที เช่น2023-05-26T10:20:00.00Z
โปรดสังเกตประเด็นต่อไปนี้ก่อนที่จะส่งออกข้อมูล PITR:
- ระบุการประทับเวลาใน รูปแบบ RFC 3339 เช่น
2020-09-01T23:59:30.234233Z
- ตรวจสอบให้แน่ใจว่าการประทับเวลาที่คุณระบุเป็นการประทับเวลาทั้งนาทีภายในเจ็ดวันที่ผ่านมา แต่ไม่เร็วกว่า
earliestVersionTime
หากไม่มีข้อมูลในเวลาประทับที่ระบุอีกต่อไป จะเกิดข้อผิดพลาดขึ้น - คุณจะไม่ถูกเรียกเก็บเงินสำหรับการส่งออก PITR ที่ล้มเหลว
-
นำเข้าข้อมูล
เมื่อคุณส่งออกไฟล์ใน Cloud Storage แล้ว คุณจะนำเข้าเอกสารในไฟล์เหล่านั้นกลับเข้าสู่โปรเจ็กต์ของคุณหรือไปยังโปรเจ็กต์อื่นได้ โปรดสังเกตประเด็นต่อไปนี้เกี่ยวกับการดำเนินการนำเข้า:
เมื่อคุณนำเข้าข้อมูล ดัชนีที่จำเป็นจะได้รับการอัปเดตโดยใช้คำจำกัดความดัชนีปัจจุบันของฐานข้อมูลของคุณ การส่งออกไม่มีคำจำกัดความของดัชนี
การนำเข้าไม่ได้กำหนดรหัสเอกสารใหม่ การนำเข้าจะใช้รหัสที่บันทึกไว้ ณ เวลาที่ส่งออก ในขณะที่เอกสารกำลังถูกนำเข้า ID ของเอกสารจะถูกสงวนไว้เพื่อป้องกันการชนกันของ ID หากมีเอกสารที่มี ID เดียวกันอยู่แล้ว การนำเข้าจะเขียนทับเอกสารที่มีอยู่
หากเอกสารในฐานข้อมูลของคุณไม่ได้รับผลกระทบจากการนำเข้า เอกสารนั้นจะยังคงอยู่ในฐานข้อมูลของคุณหลังจากการนำเข้า
การดำเนินการนำเข้าไม่ทริกเกอร์ฟังก์ชันคลาวด์ ผู้ฟังสแนปชอต จะได้รับการอัปเดตที่เกี่ยวข้องกับการดำเนินการนำเข้า
ชื่อไฟล์
.overall_export_metadata
ต้องตรงกับชื่อของโฟลเดอร์หลัก:gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/ PARENT_FOLDER_NAME / PARENT_FOLDER_NAME .overall_export_metadata
หากคุณย้ายหรือคัดลอกไฟล์เอาต์พุตของการส่งออก ให้คงชื่อไฟล์ PARENT_FOLDER_NAME และ
.overall_export_metadata
ไว้เหมือนเดิม
นำเข้าเอกสารทั้งหมดจากการส่งออก
Google คลาวด์คอนโซล
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก นำเข้า/ส่งออก
คลิก นำเข้า
ในฟิลด์ชื่อ ไฟล์ ให้ป้อนชื่อไฟล์ของไฟล์
.overall_export_metadata
จากการดำเนินการส่งออกที่เสร็จสมบูรณ์ คุณสามารถใช้ปุ่ม เรียกดู เพื่อช่วยคุณเลือกไฟล์คลิก นำเข้า
คอนโซลจะกลับไปที่หน้า นำเข้า/ส่งออก หากการดำเนินการเริ่มต้นได้สำเร็จ เพจจะเพิ่มรายการลงในเพจการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว เพจจะแสดงข้อความแสดงข้อผิดพลาด
gcloud
ใช้คำสั่ง firestore import
เพื่ออิมพอร์ตเอกสารจากการดำเนินการเอ็กซ์พอร์ตครั้งก่อน
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]
แทนที่สิ่งต่อไปนี้:
BUCKET_NAME/EXPORT_PREFIX
: ตำแหน่งของไฟล์ส่งออกของคุณDATABASE
: ชื่อของฐานข้อมูล สำหรับฐานข้อมูลดีฟอลต์ ให้ใช้--database='(default)'
ตัวอย่างเช่น:
gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'
คุณยืนยันตำแหน่งของไฟล์ส่งออกได้ในเบราว์เซอร์ Cloud Storage ในคอนโซล Google Cloud Platform ดังนี้
เมื่อคุณเริ่มการดำเนินการนำเข้า การปิดเทอร์มินัลจะไม่ยกเลิกการดำเนินการ โปรดดู ที่ ยกเลิกการดำเนินการ
นำเข้าคอลเลกชันเฉพาะ
Google คลาวด์คอนโซล
คุณไม่สามารถเลือกคอลเลกชันเฉพาะในคอนโซลได้ ใช้ gcloud
แทน
gcloud
หากต้องการนำเข้ากลุ่มคอลเลกชันเฉพาะจากชุดของไฟล์ส่งออก ให้ใช้แฟล็ก --collection-ids
การดำเนินการนำเข้าเฉพาะกลุ่มคอลเลกชันที่มีรหัสคอลเลกชันที่กำหนด กลุ่มคอลเลกชันประกอบด้วยคอลเลกชันและคอลเลกชันย่อยทั้งหมด (ในเส้นทางใดก็ได้) พร้อมด้วยรหัสคอลเลกชันที่ระบุ ระบุชื่อฐานข้อมูลโดยใช้แฟล็ก --database
สำหรับฐานข้อมูลดีฟอลต์ ให้ใช้ --database='(default)'
เฉพาะการส่งออกกลุ่มคอลเลกชันเฉพาะเท่านั้นที่รองรับการนำเข้ากลุ่มคอลเลกชันเฉพาะ คุณไม่สามารถนำเข้าคอลเลกชันเฉพาะจากการส่งออกเอกสารทั้งหมดได้
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \ --database=[DATABASE]
นำเข้าการส่งออก PITR
ใช้ขั้นตอนใน นำเข้าเอกสารทั้งหมด เพื่อนำเข้าฐานข้อมูลที่ส่งออกของคุณ หากมีเอกสารใดอยู่แล้วในฐานข้อมูลของคุณ เอกสารนั้นจะถูกเขียนทับ
การจัดการการดำเนินการส่งออกและนำเข้า
หลังจากที่คุณเริ่มการดำเนินการส่งออกหรือนำเข้าแล้ว Cloud Firestore จะกำหนดชื่อที่ไม่ซ้ำกันให้กับการดำเนินการ คุณสามารถใช้ชื่อการดำเนินการเพื่อลบ ยกเลิก หรือตรวจสอบสถานะการดำเนินการได้
ชื่อการดำเนินการขึ้นต้นด้วย projects/[PROJECT_ID]/databases/(default)/operations/
ตัวอย่างเช่น:
projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
อย่างไรก็ตาม คุณสามารถละคำนำหน้าไว้ได้เมื่อระบุชื่อการดำเนินการสำหรับคำสั่ง describe
cancel
และ delete
แสดงรายการการดำเนินการส่งออกและนำเข้าทั้งหมด
Google คลาวด์คอนโซล
คุณสามารถดูรายการการดำเนินการส่งออกและนำเข้าล่าสุดได้ในหน้า นำเข้า/ส่งออก ของคอนโซล Google Cloud Platform
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก นำเข้า/ส่งออก
gcloud
ใช้คำสั่ง operations list
เพื่อดูการดำเนินการส่งออกและนำเข้าที่ดำเนินการอยู่และเพิ่งเสร็จสิ้นทั้งหมด:
gcloud firestore operations list
ตรวจสอบสถานะการทำงาน
Google คลาวด์คอนโซล
คุณสามารถดูสถานะของการดำเนินการส่งออกหรือนำเข้าล่าสุดได้ในหน้า นำเข้า/ส่งออก ของคอนโซล Google Cloud Platform
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก นำเข้า/ส่งออก
gcloud
ใช้คำสั่ง operations describe
เพื่อแสดงสถานะของการดำเนินการส่งออกหรือนำเข้า
gcloud firestore operations describe [OPERATION_NAME]
ประมาณการเวลาที่เสร็จสมบูรณ์
คำร้องขอสถานะของการดำเนินการที่ใช้เวลานานจะส่งคืนเมทริก workEstimated
และ workCompleted
แต่ละเมตริกเหล่านี้จะถูกส่งกลับทั้งจำนวนไบต์และจำนวนเอนทิตี:
workEstimated
แสดงจำนวนไบต์และเอกสารทั้งหมดโดยประมาณที่การดำเนินการจะประมวลผล Cloud Firestore อาจละเว้นเมตริกนี้หากไม่สามารถประมาณค่าได้workCompleted
แสดงจำนวนไบต์และเอกสารที่ประมวลผลจนถึงตอนนี้ หลังจากการดำเนินการเสร็จสิ้น ค่าจะแสดงจำนวนไบต์และเอกสารทั้งหมดที่ถูกประมวลผลจริง ซึ่งอาจมากกว่าค่าของworkEstimated
แบ่ง workCompleted
ตาม workEstimated
ประมาณการความคืบหน้าคร่าวๆ การประมาณการนี้อาจไม่ถูกต้อง เนื่องจากขึ้นอยู่กับการรวบรวมสถิติที่ล่าช้า
ยกเลิกการดำเนินการ
Google คลาวด์คอนโซล
คุณสามารถยกเลิกการดำเนินการส่งออกหรือนำเข้าที่กำลังดำเนินการอยู่ในหน้า นำเข้า/ส่งออก ของคอนโซล Google Cloud Platform
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก นำเข้า/ส่งออก
ในตาราง การนำเข้าและส่งออกล่าสุด การดำเนินการที่กำลังทำงานอยู่ในปัจจุบันจะมีปุ่ม ยกเลิก ในคอลัมน์ เสร็จสมบูรณ์ คลิกปุ่ม ยกเลิก เพื่อหยุดการดำเนินการ ปุ่มจะเปลี่ยนเป็นข้อความ กำลังยกเลิก และจากนั้นเป็น ยกเลิก เมื่อการดำเนินการหยุดลงอย่างสมบูรณ์
gcloud
ใช้คำสั่ง operations cancel
เพื่อหยุดการดำเนินการที่กำลังดำเนินอยู่:
gcloud firestore operations cancel [OPERATION_NAME]
การยกเลิกการดำเนินการที่กำลังทำงานอยู่ไม่ได้เป็นการยกเลิกการดำเนินการ การดำเนินการส่งออกที่ยกเลิกจะทำให้เอกสารที่ส่งออกไปแล้วใน Cloud Storage และการดำเนินการนำเข้าที่ยกเลิกจะคงไว้ซึ่งการอัปเดตที่ทำไว้แล้วในฐานข้อมูลของคุณ คุณไม่สามารถนำเข้าการส่งออกที่เสร็จสมบูรณ์บางส่วนได้
ลบการดำเนินการ
ใช้คำสั่ง gcloud firestore operations delete
เพื่อลบการดำเนินการออกจากรายการการดำเนินการล่าสุด คำสั่งนี้จะไม่ลบไฟล์ส่งออกออกจาก Cloud Storage
gcloud firestore operations delete [OPERATION_NAME]
การเรียกเก็บเงินและราคาสำหรับการดำเนินการส่งออกและนำเข้า
คุณต้องเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud ก่อนที่จะใช้บริการส่งออกและนำเข้าที่มีการจัดการ
การดำเนินการส่งออกและนำเข้าจะเรียกเก็บเงินสำหรับการอ่านและเขียนเอกสารในอัตราที่ระบุไว้ใน ราคา Cloud Firestore การดำเนินการส่งออกจะต้องมีการดำเนินการอ่านหนึ่งครั้งต่อเอกสารที่ส่งออก การดำเนินการนำเข้าจะต้องมีการดำเนินการเขียนหนึ่งครั้งต่อเอกสารที่นำเข้า
ไฟล์เอาท์พุตที่จัดเก็บไว้ใน Cloud Storage จะนับรวมอยู่ใน ต้นทุนการจัดเก็บข้อมูล Cloud Storage ของคุณ
ต้นทุนการดำเนินการส่งออกและนำเข้าจะไม่นับรวมใน วงเงินการใช้จ่าย ของคุณ การดำเนินการส่งออกหรือนำเข้าจะไม่ทริกเกอร์การแจ้งเตือน งบประมาณ Google Cloud ของคุณจนกว่าจะเสร็จสิ้น ในทำนองเดียวกัน การอ่านและเขียนที่ดำเนินการระหว่างการดำเนินการส่งออกหรือนำเข้าจะถูกนำไปใช้กับ โควต้ารายวัน ของคุณหลังจากการดำเนินการเสร็จสิ้น การดำเนินการส่งออกและนำเข้าจะไม่ส่งผลต่อการใช้งานที่แสดงในส่วนการใช้งานของคอนโซล
การดูต้นทุนการส่งออกและนำเข้า
การดำเนินการส่งออกและนำเข้าจะใช้ป้ายกำกับ goog-firestoremanaged:exportimport
กับการดำเนินการที่เรียกเก็บเงิน ใน หน้ารายงานการเรียกเก็บเงินใน Cloud คุณสามารถใช้ป้ายกำกับนี้เพื่อดูต้นทุนที่เกี่ยวข้องกับการดำเนินการนำเข้าและส่งออก:
ส่งออกไปยัง BigQuery
คุณสามารถโหลดข้อมูลจาก Cloud Firestore ที่ส่งออกไปยัง BigQuery ได้เฉพาะในกรณีที่คุณระบุตัวกรอง collection-ids
ชันเท่านั้น ดู การโหลดข้อมูลจากการส่งออก Cloud Firestore
ขีดจำกัดคอลัมน์ BigQuery
BigQuery กำหนดขีดจำกัดไว้ที่ 10,000 คอลัมน์ต่อตาราง การดำเนินการส่งออกของ Cloud Firestore จะสร้างสคีมาตาราง BigQuery สำหรับแต่ละกลุ่มคอลเลกชัน ในสคีมานี้ แต่ละชื่อฟิลด์ที่ไม่ซ้ำกันภายในกลุ่มคอลเลกชันจะกลายเป็นคอลัมน์สคีมา
หากสคีมา BigQuery ของกลุ่มคอลเลกชันมีเกิน 10,000 คอลัมน์ การดำเนินการส่งออก Cloud Firestore จะพยายามอยู่ภายใต้ขีดจำกัดของคอลัมน์โดยถือว่าช่องแผนที่เป็นไบต์ หากการแปลงนี้ทำให้มีจำนวนคอลัมน์ต่ำกว่า 10,000 คอลัมน์ คุณจะโหลดข้อมูลลงใน BigQuery ได้ แต่จะค้นหาช่องย่อยภายในช่องแผนที่ไม่ได้ หากจำนวนคอลัมน์ยังคงเกิน 10,000 คอลัมน์ การดำเนินการส่งออกจะไม่สร้างสคีมา BigQuery สำหรับกลุ่มคอลเลกชัน และคุณจะโหลดข้อมูลลงใน BigQuery ไม่ได้
ส่งออกไฟล์รูปแบบและข้อมูลเมตา
ผลลัพธ์ของการส่งออกที่มีการจัดการจะใช้ รูปแบบบันทึก LevelDB
ไฟล์ข้อมูลเมตา
การดำเนินการส่งออกจะสร้างไฟล์ข้อมูลเมตาสำหรับแต่ละกลุ่มคอลเลกชันที่คุณระบุ โดยทั่วไปไฟล์ข้อมูลเมตาจะมีชื่อว่า ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata
ไฟล์ข้อมูลเมตาเป็นบัฟเฟอร์โปรโตคอล และคุณสามารถถอดรหัสได้ด้วย คอมไพเลอร์โปรโตคอล protoc
ตัวอย่างเช่น คุณสามารถถอดรหัสไฟล์ข้อมูลเมตาเพื่อกำหนดกลุ่มคอลเลกชันที่ไฟล์ส่งออกประกอบด้วย:
protoc --decode_raw < export0.export_metadata
การโยกย้ายตัวแทนบริการ
Cloud Firestore ใช้ตัวแทนบริการ Cloud Firestore เพื่อให้สิทธิ์การดำเนินการนำเข้าและส่งออกแทนการใช้บัญชีบริการ App Engine ตัวแทนบริการและบัญชีบริการใช้หลักการตั้งชื่อต่อไปนี้:
- ตัวแทนบริการ Cloud Firestore
-
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com
ก่อนหน้านี้ Cloud Firestore ใช้บัญชีบริการเริ่มต้นของ App Engine แทนตัวแทนบริการ Cloud Firestore หากฐานข้อมูลของคุณยังคงใช้บัญชีบริการ App Engine เพื่อนำเข้าหรือส่งออกข้อมูล เราขอแนะนำให้คุณทำตามคำแนะนำในส่วนนี้เพื่อย้ายข้อมูลไปใช้ตัวแทนบริการ Cloud Firestore
- บัญชีบริการ App Engine
-
PROJECT_ID @appspot.gserviceaccount.com
ควรใช้ตัวแทนบริการ Cloud Firestore เนื่องจากมีเฉพาะกับ Cloud Firestore บัญชีบริการ App Engine ได้รับการแชร์โดยบริการมากกว่าหนึ่งรายการ
ดูบัญชีอนุญาต
คุณสามารถดูว่าบัญชีใดที่การดำเนินการนำเข้าและส่งออกของคุณใช้ในการให้สิทธิ์คำขอได้จากหน้า นำเข้า/ส่งออก ในคอนโซล Google Cloud Platform คุณยังดูได้ว่าฐานข้อมูลของคุณใช้ตัวแทนบริการ Cloud Firestore อยู่แล้วหรือไม่
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
- เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก นำเข้า/ส่งออก
- ดูบัญชีการอนุญาตถัดจาก งานนำเข้า/ส่งออกที่ทำงานเป็น ป้ายกำกับ
หากโปรเจ็กต์ของคุณไม่ได้ใช้ตัวแทนบริการ Cloud Firestore คุณสามารถย้ายไปยังตัวแทนบริการ Cloud Firestore ได้โดยใช้เทคนิคอย่างใดอย่างหนึ่งต่อไปนี้
- ย้ายข้อมูลโปรเจ็กต์โดยตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage (แนะนำ)
- เพิ่มข้อจำกัดนโยบายทั่วทั้งองค์กร ที่ส่งผลต่อโครงการทั้งหมดภายในองค์กร
เทคนิคแรกเหล่านี้เหมาะกว่าเนื่องจากจะจำกัดขอบเขตของผลกระทบให้กับโปรเจ็กต์ Cloud Firestore เดียว ไม่แนะนำให้ใช้เทคนิคที่ 2 เนื่องจากไม่ได้ย้ายสิทธิ์ของที่เก็บข้อมูล Cloud Storage ที่มีอยู่ อย่างไรก็ตาม มีการปฏิบัติตามข้อกำหนดด้านความปลอดภัยในระดับองค์กร
ย้ายข้อมูลโดยตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage
กระบวนการย้ายข้อมูลมีสองขั้นตอน:
- อัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage ดูส่วนต่อไปนี้สำหรับรายละเอียด
- ยืนยันการย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore
สิทธิ์ที่เก็บข้อมูลของตัวแทนบริการ
สำหรับการดำเนินการส่งออกหรือนำเข้าที่ใช้ที่เก็บข้อมูล Cloud Storage ในโปรเจ็กต์ อื่น คุณต้องให้สิทธิ์ตัวแทนบริการ Cloud Firestore สำหรับที่เก็บข้อมูลนั้น ตัวอย่างเช่น การดำเนินการที่ย้ายข้อมูลไปยังโปรเจ็กต์อื่นจำเป็นต้องเข้าถึงบัคเก็ตในโปรเจ็กต์อื่นนั้น มิฉะนั้น การดำเนินการเหล่านี้จะล้มเหลวหลังจากย้ายไปยังตัวแทนบริการ Cloud Firestore
เวิร์กโฟลว์นำเข้าและส่งออกที่อยู่ในโปรเจ็กต์เดียวกันไม่จำเป็นต้องเปลี่ยนแปลงสิทธิ์ Agent บริการ Cloud Firestore เข้าถึงที่เก็บข้อมูลในโปรเจ็กต์เดียวกันได้ตามค่าเริ่มต้น
อัปเดตสิทธิ์สำหรับที่เก็บข้อมูล Cloud Storage จากโปรเจ็กต์อื่นเพื่อให้สิทธิ์เข้าถึง service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com
service agent มอบบทบาทตัวแทนบริการ Firestore Service Agent
บทบาท Firestore Service Agent
ให้สิทธิ์อ่านและเขียนสำหรับที่เก็บข้อมูล Cloud Storage หากคุณต้องการให้สิทธิ์อ่านหรือเขียนเท่านั้น ให้ใช้ บทบาทที่กำหนดเอง
กระบวนการย้ายข้อมูลที่อธิบายไว้ในส่วนต่อไปนี้ช่วยคุณระบุที่เก็บข้อมูล Cloud Storage ที่อาจต้องมีการอัปเดตสิทธิ์
ย้ายโปรเจ็กต์ไปยัง Firestore Service Agent
ทำตามขั้นตอนต่อไปนี้เพื่อย้ายจากบัญชีบริการ App Engine ไปยังตัวแทนบริการ Cloud Firestore เมื่อเสร็จสิ้นแล้ว การย้ายข้อมูลจะยกเลิกไม่ได้
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
- เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก นำเข้า/ส่งออก
หากโปรเจ็กต์ของคุณยังไม่ได้ย้ายไปยังตัวแทนบริการ Cloud Firestore คุณจะเห็นแบนเนอร์ที่อธิบายการย้ายและปุ่ม ตรวจสอบสถานะบัคเก็ต ขั้นตอนต่อไปจะช่วยคุณระบุและแก้ไขข้อผิดพลาดในการอนุญาตที่อาจเกิดขึ้น
คลิก ตรวจสอบสถานะบัคเก็ต
เมนูจะปรากฏขึ้นพร้อมกับตัวเลือกในการย้ายข้อมูลและรายการที่เก็บข้อมูล Cloud Storage อาจใช้เวลาสักครู่ก่อนที่รายการจะโหลดเสร็จ
รายการนี้รวมถึงที่เก็บข้อมูลที่ใช้ในการนำเข้าและส่งออกเมื่อเร็วๆ นี้ แต่ขณะนี้ไม่ได้ให้สิทธิ์ในการอ่านและเขียนแก่ตัวแทนบริการ Cloud Firestore
- จดชื่อหลักของตัวแทนบริการ Cloud Firestore ของโปรเจ็กต์ของคุณ ชื่อตัวแทนบริการจะปรากฏใต้ ตัวแทนบริการเพื่อให้สิทธิ์ในการเข้าถึง ป้ายกำกับ
สำหรับบัคเก็ตใดๆ ในรายการที่คุณจะใช้สำหรับการดำเนินการนำเข้าหรือส่งออกในอนาคต ให้ทำตามขั้นตอนต่อไปนี้:
ในแถวตารางของที่เก็บข้อมูลนี้ ให้คลิก แก้ไข ซึ่งจะเปิดหน้าสิทธิ์ของที่เก็บข้อมูลนั้นในแท็บใหม่
- คลิก เพิ่ม
- ในช่อง หลักการใหม่ ให้ป้อนชื่อตัวแทนบริการ Cloud Firestore ของคุณ
- ในฟิลด์ เลือกบทบาท ให้เลือก Service Agent > Firestore Service Agent
- คลิก บันทึก
- กลับไปที่แท็บที่มีหน้านำเข้า/ส่งออก Cloud Firestore
- ทำซ้ำขั้นตอนเหล่านี้กับที่เก็บข้อมูลอื่นๆ ในรายการ ตรวจสอบให้แน่ใจว่าได้ดูทุกหน้าของรายการ
คลิก ย้ายไปยัง Firestore Service Agent หากคุณยังคงมีที่เก็บข้อมูลที่ตรวจสอบสิทธิ์ไม่สำเร็จ คุณต้องยืนยันการย้ายข้อมูลโดยคลิก ย้าย
การแจ้งเตือนจะแจ้งให้คุณทราบเมื่อการย้ายข้อมูลของคุณเสร็จสิ้น การย้ายข้อมูลไม่สามารถเลิกทำได้
ดูสถานะการย้ายข้อมูล
หากต้องการยืนยันสถานะการย้ายข้อมูลของโครงการ ให้ทำดังนี้
ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล
- เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง คลิก นำเข้า/ส่งออก
ค้นหาหลักที่อยู่ถัดจาก งานนำเข้า/ส่งออกที่ทำงานเป็น ป้ายกำกับ
หากตัวการคือ
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com
แสดงว่าโปรเจ็กต์ของคุณได้ย้ายไปยังตัวแทนบริการ Cloud Firestore แล้ว การย้ายข้อมูลไม่สามารถเลิกทำได้หากยังไม่ได้ย้ายโปรเจ็กต์ แบนเนอร์จะปรากฏที่ด้านบนของหน้าพร้อมปุ่ม ตรวจสอบสถานะบัคเก็ต ดู ย้ายไปยังตัวแทนบริการ Firestore เพื่อดำเนินการย้ายให้เสร็จสมบูรณ์
เพิ่มข้อจำกัดนโยบายทั่วทั้งองค์กร
ตั้งค่าข้อจำกัดต่อไปนี้ในนโยบายขององค์กรของคุณ:
ต้องการ Firestore Service Agent สำหรับการนำเข้า/ส่งออก (
firestore.requireP4SAforImportExport
)ข้อจำกัดนี้จำเป็นต้องมีการดำเนินการนำเข้าและส่งออกเพื่อใช้ตัวแทนบริการ Cloud Firestore เพื่อให้สิทธิ์คำขอ หากต้องการตั้งค่าข้อจำกัดนี้ โปรดดูที่ การสร้างและการจัดการนโยบายองค์กร
การใช้ข้อจำกัดนโยบายองค์กรนี้ไม่ได้ให้สิทธิ์ที่เก็บข้อมูล Cloud Storage ที่เหมาะสมสำหรับตัวแทนบริการ Cloud Firestore โดยอัตโนมัติ
หากข้อจำกัดสร้างข้อผิดพลาดในการอนุญาตสำหรับเวิร์กโฟลว์การนำเข้าหรือส่งออก คุณสามารถปิดใช้งานเพื่อกลับไปใช้บัญชีบริการเริ่มต้นได้ หลังจาก ตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage แล้ว คุณจะเปิดใช้ข้อจำกัดได้อีกครั้ง