ส่งออกและนำเข้าข้อมูล

คุณสามารถใช้บริการส่งออกและนำเข้าที่มีการจัดการใน Cloud Firestore ไปยัง กู้คืนจากการลบข้อมูลโดยไม่ตั้งใจและส่งออกข้อมูลสำหรับออฟไลน์ การประมวลผล คุณสามารถส่งออกเอกสารทั้งหมดหรือเฉพาะคอลเล็กชันที่ระบุได้ ในทำนองเดียวกัน คุณสามารถนำเข้าข้อมูลทั้งหมดจากการส่งออกหรือเฉพาะคอลเล็กชันที่ระบุได้ ข้อมูล ที่ส่งออกจากฐานข้อมูล Cloud Firestore หนึ่งไปยังฐานข้อมูลอื่นได้ ฐานข้อมูล Cloud Firestore คุณยังสามารถโหลด Cloud Firestore จะส่งออกไปยัง BigQuery

หน้านี้อธิบายวิธีการส่งออกและนำเข้าเอกสาร Cloud Firestore โดยใช้ บริการส่งออกและนำเข้าที่มีการจัดการ รวมถึง Cloud Storage บริการส่งออกและนำเข้าที่มีการจัดการใน Cloud Firestore พร้อมใช้งานผ่าน gcloud เครื่องมือบรรทัดคำสั่งและ Cloud Firestore API (REST, RPC)

ก่อนเริ่มต้น

คุณต้องดำเนินการต่อไปนี้ให้เสร็จสิ้นก่อน จึงจะใช้บริการส่งออกและนำเข้าที่มีการจัดการได้ งานต่อไปนี้:

  1. เปิดใช้งาน การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud เฉพาะ Google Cloud โปรเจ็กต์ที่เปิดใช้การเรียกเก็บเงินสามารถใช้ฟังก์ชันการส่งออกและนำเข้าได้
  2. สร้าง ที่เก็บข้อมูล Cloud Storage สำหรับโปรเจ็กต์ของคุณในตำแหน่งใกล้ ตำแหน่งฐานข้อมูล Cloud Firestore คุณไม่สามารถใช้ ที่เก็บข้อมูลการชำระเงินของผู้ส่งคำขอสำหรับการดำเนินการส่งออกและนำเข้า
  3. ตรวจสอบว่าบัญชีมีสิทธิ์ที่จําเป็นสําหรับ Cloud Firestore และ Cloud Storage หากคุณเป็นเจ้าของโครงการ บัญชีของคุณมีสิทธิ์ที่จําเป็น มิฉะนั้น รายการต่อไปนี้ บทบาทจะมอบสิทธิ์ที่จำเป็นสำหรับการดำเนินการส่งออกและนำเข้า และ สำหรับการเข้าถึง Cloud Storage:

สิทธิ์ของตัวแทนบริการ

การดำเนินการส่งออกและนำเข้าใช้ Agent บริการ Cloud Firestore ในการ อนุญาตการดำเนินการของ Cloud Storage Agent บริการ Cloud Firestore ใช้แบบแผนการตั้งชื่อต่อไปนี้

Agent บริการ Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแทนบริการได้ที่ Service Agent

Agent บริการ Cloud Firestore ต้องการเข้าถึง ที่เก็บข้อมูล Cloud Storage ที่ใช้ในการดำเนินการส่งออกหรือนำเข้า หาก ที่เก็บข้อมูล Cloud Storage อยู่ในโปรเจ็กต์เดียวกันกับ Cloud Firestore Agent บริการ Cloud Firestore จะเข้าถึง โดยค่าเริ่มต้น

หากที่เก็บข้อมูล Cloud Storage อยู่ในโปรเจ็กต์อื่น ให้ทำดังนี้ ต้องมอบสิทธิ์เข้าถึง Cloud Storage ให้กับ Agent บริการ Cloud Firestore

มอบหมายบทบาทให้กับตัวแทนบริการ

คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง gsutil เพื่อ กำหนดบทบาทใดบทบาทหนึ่งด้านล่าง เช่น หากต้องการมอบหมายบทบาทผู้ดูแลระบบพื้นที่เก็บข้อมูล กับ Agent บริการ Cloud Firestore ให้เรียกใช้คำสั่งต่อไปนี้

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

แทนที่ PROJECT_NUMBER ด้วยหมายเลขโปรเจ็กต์ ใช้เพื่อตั้งชื่อ Agent บริการ Cloud Firestore หากต้องการดู ชื่อตัวแทนบริการ โปรดดูหัวข้อดูชื่อตัวแทนบริการ

อีกวิธีหนึ่งคือ มอบหมายบทบาทนี้โดยใช้คอนโซล GCP

ดูชื่อตัวแทนบริการ

คุณสามารถดูบัญชีที่การดำเนินการนำเข้าและส่งออกใช้ให้สิทธิ์ได้ คำขอจากหน้านำเข้า/ส่งออกในคอนโซล Google Cloud Platform นอกจากนี้คุณยัง ดูว่าฐานข้อมูลของคุณใช้ Cloud Firestore หรือไม่ ตัวแทนบริการหรือบัญชีบริการของ App Engine เดิม

  1. ดูบัญชีการให้สิทธิ์ถัดจาก งานการนำเข้า/ส่งออกทำงานเป็นป้ายกำกับ

Agent บริการต้องการบทบาท Storage Admin สำหรับ Cloud Storage ที่จะใช้สำหรับการดำเนินการส่งออกหรือนำเข้า

ตั้งค่า gcloud สำหรับโปรเจ็กต์

คุณจะเริ่มการนำเข้าและส่งออกผ่านคอนโซล Google Cloud Platform หรือ เครื่องมือบรรทัดคำสั่ง gcloud หากต้องการใช้ gcloud ให้ตั้งค่าเครื่องมือบรรทัดคำสั่ง และเชื่อมต่อกับโปรเจ็กต์ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

ส่งออกข้อมูล

การดำเนินการส่งออกจะคัดลอกเอกสารในฐานข้อมูลของคุณไปยังชุดของไฟล์ใน ที่เก็บข้อมูล Cloud Storage โปรดทราบว่าข้อมูลที่ส่งออกไม่ใช่สแนปชอตของฐานข้อมูลที่ถ่ายไว้อย่างถูกต้อง ในเวลาเริ่มต้นการส่งออก การส่งออกอาจรวมการเปลี่ยนแปลงที่เกิดขึ้นในขณะที่ดำเนินการ กำลังทำงาน

ส่งออกเอกสารทั้งหมด

Google Cloud Console

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก

  4. คลิกส่งออก

  5. คลิกตัวเลือกส่งออกฐานข้อมูลทั้งหมด

  6. ป้อนชื่อที่เก็บข้อมูล Cloud Storage ในส่วนเลือกปลายทาง หรือใช้ปุ่มเรียกดูเพื่อเลือกที่เก็บข้อมูล

  7. คลิกส่งออก

คอนโซลจะกลับไปที่หน้านำเข้า/ส่งออก หากเริ่มต้นการดำเนินการสำเร็จ หน้านี้จะเพิ่มรายการลงในหน้าการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว หน้าเว็บจะแสดงข้อความแสดงข้อผิดพลาด

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

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก

  4. คลิกส่งออก

  5. คลิกตัวเลือกส่งออกกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม ใช้เมนูแบบเลื่อนลง เมนูเพื่อเลือกกลุ่มคอลเล็กชันอย่างน้อยหนึ่งกลุ่ม

  6. ป้อนชื่อที่เก็บข้อมูล Cloud Storage ในส่วนเลือกปลายทาง หรือใช้ปุ่มเรียกดูเพื่อเลือกที่เก็บข้อมูล

  7. คลิกส่งออก

คอนโซลจะกลับไปที่หน้านำเข้า/ส่งออก หากเริ่มต้นการดำเนินการสำเร็จ หน้านี้จะเพิ่มรายการลงในหน้าการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว หน้าเว็บจะแสดงข้อความแสดงข้อผิดพลาด

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 สนับสนุนตัวกรองทั้งหมด รวมถึงการส่งออกเอกสารทั้งหมด และการส่งออกคอลเล็กชันที่ระบุ

  1. ส่งออกฐานข้อมูล โดยระบุพารามิเตอร์ 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

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก

  4. คลิกนำเข้า

  5. ในช่องชื่อไฟล์ ให้ป้อนชื่อไฟล์ .overall_export_metadata ไฟล์จากการดำเนินการส่งออกที่เสร็จสมบูรณ์แล้ว คุณสามารถ ใช้ปุ่มเรียกดูเพื่อช่วยเลือกไฟล์

  6. คลิกนำเข้า

คอนโซลจะกลับไปที่หน้านำเข้า/ส่งออก หากเริ่มต้นการดำเนินการสำเร็จ หน้านี้จะเพิ่มรายการลงในหน้าการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว หน้าเว็บจะแสดงข้อความแสดงข้อผิดพลาด

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

เปิดเบราว์เซอร์ Cloud Storage

เมื่อคุณเริ่มการนำเข้า การปิดเทอร์มินัลไม่ได้เป็นการยกเลิก โปรดดูยกเลิกการดำเนินการ

นำเข้าคอลเล็กชันที่ระบุ

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 Platform

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก

gcloud

ใช้คำสั่ง operations list เพื่อดูการทำงานและ การส่งออกและนำเข้าที่เพิ่งเสร็จสิ้นไปเมื่อเร็วๆ นี้

gcloud firestore operations list

ตรวจสอบสถานะการดำเนินการ

Google Cloud Console

คุณสามารถดูสถานะของการดำเนินการส่งออกหรือนำเข้าล่าสุดได้ใน หน้านำเข้า/ส่งออกของคอนโซล Google Cloud Platform

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก

gcloud

ใช้คำสั่ง operations describe เพื่อแสดงสถานะของการส่งออก หรือการนำเข้า

gcloud firestore operations describe [OPERATION_NAME]

ประมาณเวลาที่ใช้ดำเนินการเสร็จสมบูรณ์

คำขอสำหรับสถานะของการดำเนินการที่ใช้เวลานานจะแสดงผลเมตริก workEstimated และ workCompleted แต่ละเมตริกเหล่านี้จะแสดงผลในทั้ง 2 เมตริก จำนวนไบต์และจำนวนเอนทิตี:

  • workEstimated แสดงจำนวนไบต์ทั้งหมดโดยประมาณและเอกสาร จะประมวลผล Cloud Firestore อาจข้ามเมตริกนี้หาก ประเมินราคาไม่ได้

  • workCompleted แสดงจำนวนไบต์และเอกสารที่ประมวลผลจนถึงปัจจุบัน หลังจากการดำเนินการเสร็จสมบูรณ์ ค่าจะแสดงจำนวนทั้งหมดของ จำนวนไบต์และเอกสารที่ผ่านการประมวลผลจริงๆ ซึ่งอาจมีขนาดใหญ่กว่า เป็น workEstimated

หาร workCompleted ด้วย workEstimated เพื่อดูความคืบหน้าโดยประมาณ ช่วงเวลานี้ ค่าประมาณอาจไม่ถูกต้อง เนื่องจากขึ้นอยู่กับสถิติที่ล่าช้า คอลเล็กชัน

ยกเลิกการดำเนินการ

Google Cloud Console

คุณสามารถยกเลิกการส่งออกหรือนำเข้าที่ทำงานอยู่ได้ใน หน้านำเข้า/ส่งออกของคอนโซล Google Cloud Platform

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก

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

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 การดำเนินการส่งออกจะมีการอ่าน 1 ครั้ง การดำเนินการต่อเอกสารที่ส่งออก การนำเข้าจะมีการดำเนินการเขียน 1 ครั้งต่อ 1 รายการ นำเข้าเอกสารแล้ว

ไฟล์เอาต์พุตที่จัดเก็บไว้ใน Cloud Storage จะนับรวมใน ค่าใช้จ่ายสำหรับพื้นที่เก็บข้อมูล Cloud Storage

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

การดูค่าใช้จ่ายในการส่งออกและนำเข้า

การดำเนินการส่งออกและนำเข้าจะใช้ goog-firestoremanaged:exportimport ป้ายกำกับสำหรับการดำเนินการที่เรียกเก็บเงิน ในหน้ารายงานการเรียกเก็บเงินใน Cloud ให้ทำดังนี้ คุณสามารถใช้ป้ายกำกับนี้เพื่อดูค่าใช้จ่ายที่เกี่ยวข้องกับการดำเนินการนำเข้าและส่งออก

เข้าถึงป้ายกำกับ goog-firestoremanaged จากเมนูตัวกรอง

ส่งออกไปยัง 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 ใช้ Agent บริการ Cloud Firestore เพื่อให้สิทธิ์การนำเข้า และส่งออกการดำเนินการแทนการใช้บัญชีบริการ App Engine ตัวแทนบริการและบัญชีบริการใช้รูปแบบการตั้งชื่อต่อไปนี้

Agent บริการ 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

Agent บริการ Cloud Firestore เป็นตัวเลือกที่ดีกว่าเนื่องจากมีความเฉพาะเจาะจง ไปยัง Cloud Firestore แชร์บัญชีบริการ App Engine แล้ว มากกว่า 1 บริการ

ดูบัญชีการให้สิทธิ์

คุณสามารถดูว่าการดำเนินการนำเข้าและส่งออกของคุณใช้ในการให้สิทธิ์บัญชีใด คำขอจากหน้านำเข้า/ส่งออกในคอนโซล Google Cloud Platform นอกจากนี้คุณยัง ดูว่าฐานข้อมูลใช้ Cloud Firestore อยู่แล้วหรือไม่ ตัวแทนบริการ

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก

  4. ดูบัญชีการให้สิทธิ์ถัดจาก งานการนำเข้า/ส่งออกทำงานเป็นป้ายกำกับ

หากโปรเจ็กต์ไม่ได้ใช้ Agent บริการ Cloud Firestore ย้ายข้อมูลไปยัง Agent บริการ Cloud Firestore ได้โดยใช้ เทคนิคเหล่านี้

เทคนิคแรกดีกว่าเนื่องจากแปลขอบเขตของ ต่อโปรเจ็กต์ Cloud Firestore เดียว เทคนิคที่สองคือ ต้องการเนื่องจากจะไม่ย้ายข้อมูลที่เก็บข้อมูล Cloud Storage ที่มีอยู่ สิทธิ์ แต่ให้การปฏิบัติตามข้อกำหนดด้านความปลอดภัยในองค์กร

ย้ายข้อมูลโดยการตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage

กระบวนการย้ายข้อมูลมี 2 ขั้นตอนดังนี้

  1. อัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage โปรดดูส่วนต่อไปนี้สำหรับ รายละเอียด
  2. ยืนยันการย้ายข้อมูลไปยัง Agent บริการ Cloud Firestore

สิทธิ์ที่เก็บข้อมูลของ Agent บริการ

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

เวิร์กโฟลว์การนำเข้าและส่งออกที่อยู่ภายในโปรเจ็กต์เดียวกันไม่จำเป็นต้องใช้ การเปลี่ยนแปลงสิทธิ์ Agent บริการ 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 ไปยัง Agent บริการ Cloud Firestore เมื่อเสร็จสิ้น การย้ายข้อมูลจะไม่สามารถ เลิกทำแล้ว

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก

  4. หากยังไม่ได้ย้ายข้อมูลไปยังบริการ Cloud Firestore คุณจะเห็นแบนเนอร์ที่อธิบายการย้ายข้อมูลและ ปุ่มตรวจสอบสถานะที่เก็บข้อมูล ขั้นตอนถัดไปจะช่วยให้คุณระบุและ แก้ไขข้อผิดพลาดที่อาจเกิดขึ้นได้

    คลิกตรวจสอบสถานะที่เก็บข้อมูล

    เมนูจะปรากฏขึ้นพร้อมตัวเลือกเพื่อย้ายข้อมูลและ รายการที่เก็บข้อมูล Cloud Storage อาจใช้เวลา 2-3 นาทีเพื่อ เพื่อให้โหลดเสร็จ

    รายการนี้ประกอบด้วยที่เก็บข้อมูลที่เพิ่ง ที่ใช้ในการนำเข้าและส่งออก แต่ไม่ได้ให้สิทธิ์อ่านและ สิทธิ์การเขียนไปยัง Agent บริการ Cloud Firestore

  5. จดชื่อหลักของ Cloud Firestore ของโปรเจ็กต์ ตัวแทนบริการ ชื่อตัวแทนบริการจะปรากฏใต้ ป้ายกำกับ Service Agent สำหรับให้สิทธิ์เข้าถึง
  6. สำหรับที่เก็บข้อมูลในรายการที่คุณจะ ที่ใช้สำหรับการนำเข้าหรือส่งออกในอนาคต ให้กรอกข้อมูลต่อไปนี้ ขั้นตอน:

    1. ในแถวตารางของที่เก็บข้อมูลนี้ ให้คลิกแก้ไข ซึ่งจะเป็นการเปิดหน้าสิทธิ์ของที่เก็บข้อมูลในแท็บใหม่

    2. คลิกเพิ่ม
    3. ในช่องผู้ใช้หลักใหม่ ให้ป้อนชื่อ Agent บริการ Cloud Firestore
    4. ในช่องเลือกบทบาท ให้เลือก ตัวแทนบริการ > Agent บริการ Firestore
    5. คลิกบันทึก
    6. กลับไปที่แท็บที่มีหน้านำเข้า/ส่งออก Cloud Firestore
    7. ทำขั้นตอนเหล่านี้ซ้ำกับที่เก็บข้อมูลอื่นๆ ในรายการ อย่าลืมดู ทุกหน้าของรายการ
  7. คลิกย้ายข้อมูลไปยัง Agent บริการ Firestore หากคุณ ยังมีที่เก็บข้อมูลที่ ตรวจสอบสิทธิ์ไม่สำเร็จ คุณต้องยืนยันการย้ายข้อมูลโดยคลิกย้ายข้อมูล

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

ดูสถานะการย้ายข้อมูล

วิธียืนยันสถานะการย้ายข้อมูลของโปรเจ็กต์

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก

  4. มองหารายการหลักถัดจากป้ายกำกับงานนำเข้า/ส่งออกทำงานเป็น

    หากผู้ใช้หลักคือ service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com แสดงว่าโปรเจ็กต์ได้ย้ายข้อมูลไปยัง Cloud Firestore แล้ว ตัวแทนบริการ การย้ายข้อมูลจะยกเลิกไม่ได้

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

เพิ่มข้อจำกัดนโยบายทั่วทั้งองค์กร

  • ตั้งค่าข้อจำกัดต่อไปนี้ในนโยบายขององค์กร

    ต้องมี Agent บริการ Firestore สำหรับการนำเข้า/ส่งออก (firestore.requireP4SAforImportExport)

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

การใช้ข้อจำกัดนโยบายองค์กรนี้ไม่ได้ให้สิทธิ์ สิทธิ์ที่เหมาะสมของที่เก็บข้อมูล Cloud Storage สำหรับ Agent บริการ Cloud Firestore

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