คุณสามารถใช้บริการการส่งออกและนำเข้าที่มีการจัดการของ 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 คุณไม่สามารถใช้ ที่เก็บข้อมูลการชำระเงินของผู้ส่งคำขอสำหรับการดำเนินการส่งออกและนำเข้า
-
ตรวจสอบว่าบัญชีมีสิทธิ์ที่จําเป็นสําหรับ Cloud Firestore และ Cloud Storage หากคุณเป็นเจ้าของโครงการ บัญชีของคุณมีสิทธิ์ที่จําเป็น มิฉะนั้น รายการต่อไปนี้ บทบาทจะมอบสิทธิ์ที่จำเป็นสำหรับการดำเนินการส่งออกและนำเข้า และ สำหรับการเข้าถึง Cloud Storage:
- บทบาทใน Cloud Firestore:
Owner
,Cloud Datastore Owner
หรือCloud Datastore Import Export Admin
Cloud Storage บทบาท
Owner
หรือStorage Admin
- บทบาทใน Cloud Firestore:
สิทธิ์ของตัวแทนบริการ
การดำเนินการส่งออกและนำเข้าใช้ Agent บริการ Cloud Firestore เพื่อทำสิ่งต่อไปนี้ อนุญาตการดำเนินการ Cloud Storage ตัวแทนบริการของ Cloud Firestore ใช้แบบแผนการตั้งชื่อต่อไปนี้
- ตัวแทนบริการ Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแทนบริการได้ที่ Service Agent
ไม่ได้ตัวแทนบริการของ Cloud Firestore ต้องการสิทธิ์เข้าถึง ใช้ที่เก็บข้อมูล Cloud Storage รายการในการดำเนินการส่งออกหรือนำเข้าแล้ว หากที่เก็บข้อมูล Cloud Storage อยู่ในโปรเจ็กต์เดียวกับฐานข้อมูล Cloud Firestore ตัวแทนบริการ Cloud Firestore จะเข้าถึงที่เก็บข้อมูลดังกล่าวได้โดยค่าเริ่มต้น
หากที่เก็บข้อมูล Cloud Storage อยู่ในโปรเจ็กต์อื่น ให้ทำดังนี้ ต้องให้สิทธิ์เข้าถึง Cloud Storage แก่ตัวแทนบริการของ Cloud Firestore
มอบหมายบทบาทให้กับตัวแทนบริการ
คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง 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 หากต้องการดู
ชื่อตัวแทนบริการ โปรดดูหัวข้อดูชื่อตัวแทนบริการ
อีกวิธีหนึ่งคือ มอบหมายบทบาทนี้โดยใช้คอนโซล Google Cloud
ดูชื่อตัวแทนบริการ
คุณสามารถดูบัญชีที่การดำเนินการนำเข้าและส่งออกใช้ให้สิทธิ์ได้ คำขอจากหน้านำเข้า/ส่งออกในคอนโซล Google Cloud นอกจากนี้คุณยัง ดูว่าฐานข้อมูลของคุณใช้ Cloud Firestore หรือไม่ ตัวแทนบริการหรือบัญชีบริการของ App Engine เดิม
- ดูบัญชีการให้สิทธิ์ข้างป้ายกำกับเรียกใช้งานนำเข้า/ส่งออกในชื่อ
ตัวแทนฝ่ายบริการต้องมีบทบาท Storage Admin
สำหรับที่เก็บข้อมูล Cloud Storage เพื่อใช้ดำเนินการส่งออกหรือนำเข้า
ตั้งค่า gcloud
สำหรับโปรเจ็กต์
คุณจะเริ่มการนำเข้าและส่งออกผ่าน Google Cloud Console หรือ
เครื่องมือบรรทัดคำสั่ง gcloud
หากต้องการใช้ gcloud
ให้ตั้งค่าเครื่องมือบรรทัดคำสั่ง
และเชื่อมต่อกับโปรเจ็กต์ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
เข้าถึง
gcloud
จากคอนโซล Google Cloud Platform โดยใช้ Cloud Shellตรวจสอบว่าได้กำหนดค่า
gcloud
สำหรับโปรเจ็กต์ที่ถูกต้องแล้ว ดังนี้gcloud config set project [PROJECT_ID]
ส่งออกข้อมูล
การดำเนินการส่งออกจะคัดลอกเอกสารในฐานข้อมูลของคุณไปยังชุดของไฟล์ใน ที่เก็บข้อมูล Cloud Storage รายการ โปรดทราบว่าข้อมูลที่ส่งออกไม่ใช่สแนปชอตของฐานข้อมูลที่ถ่ายไว้อย่างถูกต้อง ในเวลาเริ่มต้นการส่งออก การส่งออกอาจรวมการเปลี่ยนแปลงที่เกิดขึ้นในขณะที่ดำเนินการ กำลังทำงาน
ส่งออกเอกสารทั้งหมด
Google Cloud Console
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
คลิกส่งออก
คลิกตัวเลือกส่งออกฐานข้อมูลทั้งหมด
ป้อนชื่อที่เก็บข้อมูล 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 Cloud Console
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
คลิกส่งออก
คลิกตัวเลือกส่งออกกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม ใช้เมนูแบบเลื่อนลง เมนูเพื่อเลือกกลุ่มคอลเล็กชันอย่างน้อยหนึ่งกลุ่ม
ป้อนชื่อที่เก็บข้อมูล 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 โดยที่การประทับเวลาจะเป็นเวลาเต็มนาทีภายใน
ในช่วง 7 วันที่ผ่านมา แต่ไม่เร็วกว่า 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
format [รูปแบบ]
เช่น
2020-09-01T23:59:30.234233Z
- ตรวจสอบว่าการประทับเวลาที่คุณระบุเป็นการประทับเวลาแบบเต็มนาทีภายใน 7 วันที่ผ่านมา แต่ต้องไม่เร็วกว่า
earliestVersionTime
หากข้อมูลไม่อยู่ในตำแหน่งที่ระบุแล้ว การประทับเวลา ข้อผิดพลาดจะสร้างขึ้น - ระบบจะไม่เรียกเก็บเงินสำหรับการส่งออก PITR ที่ล้มเหลว
นำเข้าข้อมูล
เมื่อคุณส่งออกไฟล์ใน Cloud Storage แล้ว คุณจะนำเข้าเอกสารในไฟล์ดังกล่าวได้ ไฟล์กลับเข้าไปในโปรเจ็กต์หรือโปรเจ็กต์อื่น โปรดทราบประเด็นต่อไปนี้ เกี่ยวกับการดำเนินการนำเข้า
เมื่อคุณนำเข้าข้อมูล ดัชนีที่จำเป็นจะได้รับการอัปเดตโดยใช้ คำจำกัดความของดัชนีปัจจุบัน การส่งออกไม่มีคำจำกัดความของดัชนี
การนำเข้าจะไม่กำหนดรหัสเอกสารใหม่ การนำเข้าใช้รหัสที่บันทึกที่ เวลาในการส่งออก เนื่องจากเอกสารอยู่ระหว่างการนำเข้า ระบบจะสงวนรหัสเอกสารไว้ เพื่อป้องกันไม่ให้ ID ชนกัน หากมีเอกสารที่มีรหัสเดียวกันอยู่แล้ว การนําเข้าจะเขียนทับเอกสารที่มีอยู่
หากเอกสารในฐานข้อมูลไม่ได้รับผลกระทบจากการนำเข้า เอกสารจะยังคงอยู่ ในฐานข้อมูลหลังจากนำเข้า
การดำเนินการนำเข้าจะไม่ทริกเกอร์ Cloud Functions ผู้ฟังสแนปชอต ได้รับข้อมูลอัปเดตเกี่ยวกับการดำเนินการนำเข้า
ชื่อไฟล์
.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 Cloud Console
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
คลิกนำเข้า
ในช่องชื่อไฟล์ ให้ป้อนชื่อไฟล์
.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 ได้โดยทำดังนี้
เมื่อคุณเริ่มการนำเข้า การปิดเทอร์มินัลไม่ได้เป็นการยกเลิก โปรดดูยกเลิกการดำเนินการ
นำเข้าคอลเล็กชันที่ระบุ
Google Cloud Console
คุณเลือกคอลเล็กชันที่เฉพาะเจาะจงในคอนโซลไม่ได้ โปรดใช้ 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 Cloud Console
คุณสามารถดูรายการการดำเนินการส่งออกและนำเข้าล่าสุดได้ใน หน้านำเข้า/ส่งออกของคอนโซล Google Cloud
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
gcloud
ใช้คำสั่ง operations list
เพื่อดูการทำงานและ
การส่งออกและนำเข้าที่เพิ่งเสร็จสิ้นไปเมื่อเร็วๆ นี้
gcloud firestore operations list
ตรวจสอบสถานะการดำเนินการ
Google Cloud Console
คุณดูสถานะของการดำเนินการส่งออกหรือนำเข้าล่าสุดได้ในหน้านำเข้า/ส่งออกของคอนโซล Google Cloud
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
gcloud
ใช้คำสั่ง operations describe
เพื่อแสดงสถานะของการส่งออก
หรือการนำเข้า
gcloud firestore operations describe [OPERATION_NAME]
ประมาณเวลาในการดำเนินการ
คำขอสำหรับสถานะของการดำเนินการที่ใช้เวลานานจะแสดงผลเมตริก
workEstimated
และ workCompleted
เมตริกแต่ละรายการต่อไปนี้จะแสดงผลในทั้ง 2 เมตริก
จำนวนไบต์และจำนวนเอนทิตี:
workEstimated
แสดงจำนวนไบต์ทั้งหมดโดยประมาณและเอกสาร จะประมวลผล Cloud Firestore อาจข้ามเมตริกนี้หาก ประเมินราคาไม่ได้workCompleted
แสดงจำนวนไบต์และเอกสารที่ประมวลผลจนถึงตอนนี้ หลังจากการดำเนินการเสร็จสมบูรณ์ ค่าจะแสดงจำนวนทั้งหมดของ จำนวนไบต์และเอกสารที่ผ่านการประมวลผลจริงๆ ซึ่งอาจมีขนาดใหญ่กว่า เป็นworkEstimated
หาร workCompleted
ด้วย workEstimated
เพื่อดูความคืบหน้าโดยประมาณ ช่วงเวลานี้
ค่าประมาณอาจไม่ถูกต้อง เนื่องจากขึ้นอยู่กับสถิติที่ล่าช้า
คอลเล็กชัน
ยกเลิกการดำเนินการ
Google Cloud Console
คุณสามารถยกเลิกการส่งออกหรือนำเข้าที่ทำงานอยู่ได้ใน หน้านำเข้า/ส่งออกของคอนโซล Google Cloud
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
ในตารางการนำเข้าและส่งออกล่าสุด กำลังทำงานอยู่ การดำเนินการจะมีปุ่มยกเลิกในคอลัมน์เสร็จสมบูรณ์ คลิก ปุ่มยกเลิกเพื่อหยุดการดำเนินการ ปุ่มจะเปลี่ยนเป็นยกเลิก จากนั้นเปลี่ยนเป็นยกเลิกเมื่อการดำเนินการหยุดลงอย่างสมบูรณ์
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 pricing สำหรับการดำเนินการส่งออกและนำเข้า การดำเนินการส่งออกจะมีการอ่าน 1 ครั้ง การดำเนินการต่อเอกสารที่ส่งออก การนำเข้าจะมีการดำเนินการเขียน 1 ครั้งต่อ 1 รายการ นำเข้าเอกสารแล้ว
ไฟล์เอาต์พุตที่จัดเก็บไว้ใน Cloud Storage จะนับรวมใน ค่าใช้จ่ายสำหรับพื้นที่เก็บข้อมูล Cloud Storage
ค่าใช้จ่ายในการส่งออกและนำเข้าจะไม่นับรวมกับการใช้จ่ายของคุณ ขีดจำกัด การส่งออกหรือนำเข้าจะไม่ทริกเกอร์ ระบบจะแจ้งเตือนงบประมาณ Google Cloud จนกว่าจะเสร็จสมบูรณ์ ในทํานองเดียวกัน การอ่านและการเขียนที่ดําเนินการระหว่างการดำเนินการส่งออกหรือนําเข้าจะมีผลกับโควต้ารายวันหลังจากการดำเนินการเสร็จสมบูรณ์ การดำเนินการส่งออกและนำเข้าจะไม่ส่งผลต่อการใช้งานที่แสดงในส่วนการใช้งานของคอนโซล
การดูต้นทุนการส่งออกและนำเข้า
การดำเนินการส่งออกและนำเข้าจะใช้ goog-firestoremanaged:exportimport
ป้ายกำกับสำหรับการดำเนินการที่เรียกเก็บเงิน ในหน้ารายงานการเรียกเก็บเงินในระบบคลาวด์ คุณสามารถใช้ป้ายกำกับนี้เพื่อดูค่าใช้จ่ายที่เกี่ยวข้องกับการดำเนินการนำเข้าและส่งออก
ส่งออกไปยัง BigQuery
คุณโหลดข้อมูลจากการส่งออก Cloud Firestore ไปยัง BigQuery ได้
ก็ต่อเมื่อคุณระบุตัวกรอง collection-ids
เท่านั้น ดูหัวข้อการโหลดข้อมูลจากการส่งออก Cloud Firestore
ขีดจํากัดของคอลัมน์ BigQuery
BigQuery จำกัดจำนวนคอลัมน์ไว้ที่ 10,000 คอลัมน์ต่อตาราง Cloud Firestore การดำเนินการส่งออกจะสร้างสคีมาตาราง BigQuery สำหรับกลุ่มคอลเล็กชันแต่ละกลุ่ม ในสคีมานี้ ชื่อช่องที่ไม่ซ้ำกันแต่ละชื่อภายใน กลุ่มคอลเล็กชันจะกลายเป็นคอลัมน์สคีมา
หากสคีมา BigQuery ของกลุ่มคอลเล็กชันมีจำนวนคอลัมน์เกิน 10,000 คอลัมน์ การดำเนินการส่งออก Cloud Firestore จะพยายามรักษาจำนวนคอลัมน์ให้ไม่เกินขีดจำกัดโดยถือว่าช่องแผนที่เป็นไบต์ หาก Conversion นี้ทำให้เกิด จำนวนคอลัมน์ที่ต่ำกว่า 10,000 คอลัมน์ คุณสามารถโหลดข้อมูลลงใน BigQuery แต่คุณค้นหาฟิลด์ย่อยภายในฟิลด์แผนที่ไม่ได้ หากจำนวนคอลัมน์ยังคงเกิน 10,000 คอลัมน์ การดำเนินการส่งออกจะไม่ สร้างสคีมา BigQuery สำหรับกลุ่มคอลเล็กชัน แต่โหลดไม่ได้ ลงใน BigQuery
ส่งออกไฟล์รูปแบบและไฟล์ข้อมูลเมตา
เอาต์พุตของการส่งออกที่มีการจัดการจะใช้เมธอด รูปแบบบันทึก LevelDB
ไฟล์ข้อมูลเมตา
การดำเนินการส่งออกจะสร้างไฟล์ข้อมูลเมตาสำหรับกลุ่มคอลเล็กชันแต่ละกลุ่ม
ที่คุณระบุ โดยปกติจะตั้งชื่อไฟล์ข้อมูลเมตา
ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata
ไฟล์ข้อมูลเมตาคือบัฟเฟอร์โปรโตคอล และคุณสามารถถอดรหัสด้วย
protoc
คอมไพเลอร์โปรโตคอล
เช่น คุณสามารถถอดรหัสไฟล์ข้อมูลเมตาเพื่อระบุกลุ่มคอลเล็กชันที่ไฟล์การส่งออกมีข้อมูลต่อไปนี้
protoc --decode_raw < export0.export_metadata
การย้ายข้อมูล Agent บริการ
Cloud Firestore ใช้ตัวแทนบริการ Cloud Firestore เพื่อให้สิทธิ์การดำเนินการนำเข้าและส่งออกแทนการใช้บัญชีบริการ App Engine ตัวแทนบริการและบัญชีบริการใช้รูปแบบการตั้งชื่อต่อไปนี้
- ตัวแทนบริการ Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
ก่อนหน้านี้ Cloud Firestore ใช้บริการเริ่มต้น App Engine บัญชี แทนที่จะเป็น Agent บริการ Cloud Firestore หากฐานข้อมูลของคุณ ยังคงใช้บัญชีบริการของ App Engine เพื่อนำเข้าหรือส่งออกข้อมูล ขอแนะนำให้คุณทำตามวิธีการในส่วนนี้เพื่อย้ายข้อมูล ในการใช้ Agent บริการ Cloud Firestore
- บัญชีบริการ App Engine บัญชี
PROJECT_ID@appspot.gserviceaccount.com
คุณควรใช้ตัวแทนบริการ Cloud Firestore เนื่องจากมีไว้สำหรับ Cloud Firestore โดยเฉพาะ บัญชีบริการ App Engine มีการแชร์โดยบริการมากกว่า 1 รายการ
ดูบัญชีการให้สิทธิ์
คุณดูบัญชีที่การดำเนินการนำเข้าและส่งออกใช้เพื่อให้สิทธิ์คำขอได้จากหน้านำเข้า/ส่งออกในคอนโซล Google Cloud นอกจากนี้ คุณยังดูได้ว่าฐานข้อมูลใช้ตัวแทนบริการ Cloud Firestore อยู่แล้วหรือไม่
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
-
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
- ดูบัญชีการให้สิทธิ์ถัดจาก งานการนำเข้า/ส่งออกทำงานเป็นป้ายกำกับ
หากโปรเจ็กต์ไม่ได้ใช้ Agent บริการ Cloud Firestore คุณจะ สามารถย้ายข้อมูลไปยัง Agent บริการ Cloud Firestore ได้โดยใช้ เทคนิคเหล่านี้
- ย้ายข้อมูลโปรเจ็กต์โดยการตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage รายการ (แนะนำ)
- เพิ่มข้อจำกัดนโยบายทั่วทั้งองค์กรที่มีผลต่อโปรเจ็กต์ทั้งหมดภายใน กับองค์กร
เทคนิคแรกดีกว่าเนื่องจากแปลขอบเขตของ ส่งผลต่อโปรเจ็กต์ Cloud Firestore โปรเจ็กต์เดียว เทคนิคที่สองคือ แนะนําเนื่องจากไม่ได้ย้ายข้อมูลที่เก็บข้อมูล Cloud Storage ที่มีอยู่ สิทธิ์ แต่ก็มีการรักษาความปลอดภัยในระดับองค์กร
ย้ายข้อมูลโดยการตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage รายการ
กระบวนการย้ายข้อมูลมี 2 ขั้นตอนดังนี้
- อัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage รายการ โปรดดูส่วนต่อไปนี้สำหรับ รายละเอียด
- ยืนยันการย้ายข้อมูลไปยัง Agent บริการ Cloud Firestore
สิทธิ์ที่เก็บข้อมูลของ Agent บริการ
สําหรับการดําเนินการส่งออกหรือนําเข้าที่ใช้ที่เก็บข้อมูล Cloud Storage ในโปรเจ็กต์อื่น คุณต้องให้สิทธิ์ตัวแทนบริการ Cloud Firestore สําหรับที่เก็บข้อมูลนั้น เช่น การดำเนินการที่ย้ายข้อมูลไปยังรายการอื่น โปรเจ็กต์จำเป็นต้องเข้าถึงที่เก็บข้อมูลในโปรเจ็กต์อื่นดังกล่าว มิเช่นนั้น การดำเนินการเหล่านี้จะดำเนินการไม่สำเร็จหลังจากย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore
เวิร์กโฟลว์การนําเข้าและส่งออกที่อยู่ในโปรเจ็กต์เดียวกันไม่จําเป็นต้องเปลี่ยนแปลงสิทธิ์ โดยค่าเริ่มต้น ตัวแทนบริการ Cloud Firestore จะเข้าถึงที่เก็บข้อมูลในโปรเจ็กต์เดียวกันได้
อัปเดตสิทธิ์สำหรับที่เก็บข้อมูล Cloud Storage รายการจากโปรเจ็กต์อื่นๆ เพื่อให้สิทธิ์
สิทธิ์เข้าถึง
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
ตัวแทนบริการ มอบบทบาท Firestore Service Agent
ให้กับตัวแทนบริการ
บทบาท Firestore Service Agent
ให้สิทธิ์อ่านและเขียนสำหรับที่เก็บข้อมูล Cloud Storage หากต้องการมอบสิทธิ์การอ่านหรือเขียนเท่านั้น ให้ใช้บทบาทที่กำหนดเอง
ขั้นตอนการย้ายข้อมูลตามที่อธิบายไว้ในส่วนต่อไปนี้ ช่วยให้คุณระบุ Cloud Storage ได้ ที่เก็บข้อมูลที่อาจจำเป็นต้องอัปเดตสิทธิ์
ย้ายข้อมูลโปรเจ็กต์ไปยัง Agent บริการ Firestore
ทําตามขั้นตอนต่อไปนี้เพื่อย้ายข้อมูลจากบัญชีบริการ App Engine ไปยังตัวแทนบริการ Cloud Firestore เมื่อเสร็จสิ้น การย้ายข้อมูลจะไม่สามารถ เลิกทำแล้ว
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
-
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
-
หากยังไม่ได้ย้ายข้อมูลโปรเจ็กต์ไปยังบริการ Cloud Firestore คุณจะเห็นแบนเนอร์ที่อธิบายการย้ายข้อมูลและ ปุ่มตรวจสอบสถานะที่เก็บข้อมูล ขั้นตอนถัดไปจะช่วยให้คุณระบุและ แก้ไขข้อผิดพลาดที่อาจเกิดขึ้นได้
คลิกตรวจสอบสถานะที่เก็บข้อมูล
เมนูจะปรากฏขึ้นพร้อมตัวเลือกเพื่อย้ายข้อมูลและ รายการที่เก็บข้อมูล Cloud Storage รายการ อาจใช้เวลา 2-3 นาทีเพื่อ เพื่อให้โหลดเสร็จ
รายการนี้ประกอบด้วยที่เก็บข้อมูลที่เพิ่ง ที่ใช้ในการนำเข้าและส่งออก แต่ไม่ได้ให้สิทธิ์อ่านและ สิทธิ์การเขียนถึง Agent บริการ Cloud Firestore
- จดชื่อหลักของ Cloud Firestore ของโปรเจ็กต์ ตัวแทนบริการ ชื่อตัวแทนบริการจะปรากฏใต้ ป้ายกำกับ Service Agent สำหรับให้สิทธิ์เข้าถึง
-
สำหรับที่เก็บข้อมูลในรายการที่คุณจะ ที่ใช้สำหรับการนำเข้าหรือส่งออกในอนาคต ให้กรอกข้อมูลต่อไปนี้ ขั้นตอน:
-
ในแถวตารางของที่เก็บข้อมูลนี้ ให้คลิกแก้ไข ซึ่งจะเป็นการเปิดหน้าสิทธิ์ของที่เก็บข้อมูลในแท็บใหม่
- คลิกเพิ่ม
- ในช่องผู้ใช้หลักใหม่ ให้ป้อนชื่อ ตัวแทนบริการของ Cloud Firestore
- ในช่องเลือกบทบาท ให้เลือก ตัวแทนบริการ > Agent บริการ Firestore
- คลิกบันทึก
- กลับไปที่แท็บที่มีหน้านำเข้า/ส่งออก Cloud Firestore
- ทำขั้นตอนเหล่านี้ซ้ำกับที่เก็บข้อมูลอื่นๆ ในรายการ อย่าลืมดูทุกหน้าของรายการ
-
-
คลิกย้ายข้อมูลไปยังตัวแทนบริการ Firestore หากคุณ ยังมีที่เก็บข้อมูลที่ ตรวจสอบสิทธิ์ไม่สำเร็จ คุณต้องยืนยันการย้ายข้อมูลโดยคลิกย้ายข้อมูล
การแจ้งเตือนจะแจ้งให้คุณทราบเมื่อการย้ายข้อมูลเสร็จสมบูรณ์ ย้ายข้อมูลไม่ได้ เลิกทำแล้ว
ดูสถานะการย้ายข้อมูล
วิธียืนยันสถานะการย้ายข้อมูลของโปรเจ็กต์
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
-
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
-
มองหารายการหลักถัดจากป้ายกำกับงานนำเข้า/ส่งออกทำงานเป็น
หากหลักประกันคือ
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
แสดงว่าโปรเจ็กต์ของคุณได้ย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore แล้ว การย้ายข้อมูลจะยกเลิกไม่ได้หากยังไม่ได้ย้ายข้อมูลโปรเจ็กต์ แบนเนอร์จะปรากฏที่ด้านบนของหน้า ด้วยปุ่มตรวจสอบสถานะที่เก็บข้อมูล โปรดดู ย้ายข้อมูลไปยัง Agent บริการ Firestore เพื่อย้ายข้อมูลให้สมบูรณ์
เพิ่มข้อจำกัดนโยบายทั่วทั้งองค์กร
-
ตั้งค่าข้อจำกัดต่อไปนี้ในนโยบายขององค์กร
ต้องมี Agent บริการ Firestore สำหรับการนำเข้า/ส่งออก (
firestore.requireP4SAforImportExport
)ข้อจำกัดนี้ต้องมีการดำเนินการนำเข้าและส่งออกเพื่อใช้แอตทริบิวต์ ตัวแทนบริการของ Cloud Firestore จะให้สิทธิ์คำขอ หากต้องการตั้งค่าข้อจำกัดนี้ โปรดดู การสร้างและจัดการนโยบายองค์กร
การใช้ข้อจำกัดของนโยบายองค์กรนี้ไม่ได้ให้สิทธิ์เข้าถึงที่เก็บข้อมูล Cloud Storage ที่เหมาะสมแก่ตัวแทนบริการ Cloud Firestore โดยอัตโนมัติ
หากข้อจำกัดทำให้เกิดข้อผิดพลาดเกี่ยวกับสิทธิ์สำหรับเวิร์กโฟลว์การนำเข้าหรือส่งออก คุณจะปิดใช้เพื่อกลับไปใช้บัญชีบริการเริ่มต้นได้ หลังจากตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage แล้ว คุณจะเปิดใช้ข้อจำกัดอีกครั้งได้