คุณสามารถใช้Cloud Firestoreบริการนำเข้าและส่งออกที่มีการจัดการเพื่อกู้คืนข้อมูลจากการลบโดยไม่ตั้งใจและส่งออกข้อมูลสำหรับการประมวลผลแบบออฟไลน์ คุณส่งออกเอกสารทั้งหมดหรือเฉพาะคอลเล็กชันที่ต้องการได้ ในทำนองเดียวกัน คุณสามารถนำเข้าข้อมูลทั้งหมดจากการส่งออกหรือเฉพาะคอลเล็กชันที่ต้องการก็ได้ คุณสามารถนำเข้าข้อมูล ที่ส่งออกจากCloud Firestoreฐานข้อมูลหนึ่งไปยังCloud Firestoreฐานข้อมูลอื่นได้ นอกจากนี้ คุณยังโหลด Cloud Firestoreการส่งออกลงใน BigQuery ได้ด้วย
หน้านี้อธิบายวิธีส่งออกและนำเข้าCloud Firestoreเอกสารโดยใช้
บริการส่งออกและนำเข้าที่มีการจัดการและ Cloud Storage
Cloud Firestore บริการส่งออกและนำเข้าที่จัดการพร้อมให้บริการผ่าน
เครื่องมือบรรทัดคำสั่ง gcloud
และ API Cloud Firestore (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:
สิทธิ์ของตัวแทนบริการ
การดำเนินการส่งออกและนำเข้าจะใช้Cloud Firestore ตัวแทนบริการเพื่อ ให้สิทธิ์การดำเนินการ Cloud Storage Cloud Firestore ตัวแทนบริการ ใช้รูปแบบการตั้งชื่อต่อไปนี้
- Cloud Firestore ตัวแทนบริการ
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแทนบริการได้ที่ ตัวแทนบริการ
ไม่ได้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 Console ได้ นอกจากนี้ คุณยังดูได้ว่าฐานข้อมูลใช้Cloud Firestore ตัวแทนบริการหรือบัญชีบริการ App Engine เดิม
- ดูบัญชีการให้สิทธิ์ข้างป้ายกำกับงานนำเข้า/ส่งออกที่เรียกใช้เป็น
ตัวแทนบริการต้องมีบทบาท Storage Admin
สำหรับ Cloud Storage
ที่ใช้สำหรับการดำเนินการส่งออกหรือนำเข้า
ตั้งค่า gcloud
สำหรับโปรเจ็กต์
คุณเริ่มการดำเนินการนำเข้าและส่งออกได้ผ่านคอนโซล Google Cloud หรือ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 กลุ่ม ใช้เมนูแบบเลื่อนลง เพื่อเลือกกลุ่มคอลเล็กชันอย่างน้อย 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 ได้
คุณสามารถส่งออกข้อมูล PITR ที่การประทับเวลาเป็นเวลาเต็มนาทีภายใน
7 วันที่ผ่านมา แต่ไม่เร็วกว่าวันที่ earliestVersionTime
หากไม่มีข้อมูลอีกต่อไปที่การประทับเวลาที่ระบุ การดำเนินการส่งออกจะล้มเหลว
การดำเนินการส่งออก PITR รองรับตัวกรองทั้งหมด รวมถึงการส่งออกเอกสารทั้งหมดและการส่งออกคอลเล็กชันที่เฉพาะเจาะจง
โปรดทราบประเด็นต่อไปนี้ก่อนส่งออกข้อมูล PITR
- ระบุการประทับเวลาในรูปแบบ RFC 3339 เช่น
2023-05-26T10:20:00.00Z
- ตรวจสอบว่าการประทับเวลาที่คุณระบุเป็นการประทับเวลาแบบเต็มนาที
ภายใน 7 วันที่ผ่านมา แต่ไม่เร็วกว่า
earliestVersionTime
หากไม่มีข้อมูลที่ การประทับเวลาที่ระบุแล้ว ระบบจะสร้างข้อผิดพลาด - ระบบจะไม่เรียกเก็บเงินจากการส่งออก PITR ที่ไม่สำเร็จ
คอนโซล
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
ไปที่ฐานข้อมูล - เลือกฐานข้อมูลจากรายการฐานข้อมูล
- ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
- คลิกส่งออก
- กำหนดค่าแหล่งที่มาของการส่งออกเพื่อส่งออกทั้งฐานข้อมูลหรือเฉพาะคอลเล็กชันที่ต้องการ
ในส่วนเลือกสถานะของฐานข้อมูลที่จะส่งออก ให้เลือกส่งออกจากช่วงเวลาที่ผ่านมา
เลือกเวลาสแนปชอตที่จะใช้สำหรับการส่งออก
- ในส่วนปลายทาง ให้ป้อนชื่อCloud Storage ที่เก็บข้อมูล หรือใช้ปุ่มเรียกดูเพื่อเลือกที่เก็บข้อมูล
-
คลิกส่งออก
คอนโซลจะกลับไปที่หน้านำเข้า/ส่งออก หากการดำเนินการเริ่มต้นสำเร็จ หน้าเว็บจะเพิ่มรายการไปยังหน้านำเข้าและส่งออกล่าสุด หากไม่สำเร็จ หน้าเว็บจะแสดงข้อความแสดงข้อผิดพลาด
gcloud
คุณสามารถส่งออกฐานข้อมูลไปยัง Cloud Storage จากข้อมูล PITR ได้โดยใช้คำสั่ง gcloud firestore export
ส่งออกฐานข้อมูลโดยระบุพารามิเตอร์ snapshot-time
เป็นการประทับเวลาการกู้คืน เรียกใช้คำสั่งต่อไปนี้เพื่อส่งออกฐานข้อมูลไปยังที่เก็บข้อมูล
gcloud firestore export gs://[BUCKET_NAME_PATH] \ --snapshot-time=[PITR_TIMESTAMP]
โดย PITR_TIMESTAMP
คือการประทับเวลา PITR ที่มีความละเอียดระดับนาที เช่น 2023-05-26T10:20:00.00Z
เพิ่มแฟล็ก --collection-ids
เพื่อส่งออกคอลเล็กชันที่เฉพาะเจาะจง
นำเข้าข้อมูล
เมื่อมีไฟล์ส่งออกใน Cloud Storage แล้ว คุณจะนำเข้าเอกสารในไฟล์เหล่านั้นกลับไปยังโปรเจ็กต์เดิมหรือโปรเจ็กต์อื่นได้ โปรดทราบประเด็นต่อไปนี้ เกี่ยวกับการดำเนินการนำเข้า
เมื่อนำเข้าข้อมูล ระบบจะอัปเดตดัชนีที่จำเป็นโดยใช้คำจำกัดความดัชนีปัจจุบันของฐานข้อมูล การส่งออกไม่มีคำจำกัดความดัชนี
การนำเข้าจะไม่กำหนดรหัสเอกสารใหม่ การนำเข้าใช้รหัสที่บันทึกไว้ ในเวลาที่ส่งออก ขณะนำเข้าเอกสาร ระบบจะสงวนรหัสของเอกสาร เพื่อป้องกันการชนกันของรหัส หากมีเอกสารที่มีรหัสเดียวกันอยู่แล้ว การนำเข้าจะเขียนทับเอกสารที่มีอยู่
หากเอกสารในฐานข้อมูลไม่ได้รับผลกระทบจากการนำเข้า เอกสารนั้นจะยังคงอยู่ในฐานข้อมูลหลังจากการนำเข้า
การดำเนินการนำเข้าจะไม่ทริกเกอร์ Cloud Functions Listener ของสแนปชอต จะได้รับการอัปเดตที่เกี่ยวข้องกับการดำเนินการนำเข้า
.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
ระบบจะแสดงผลเมตริกแต่ละรายการเหล่านี้ทั้งใน
จำนวนไบต์และจำนวนเอนทิตี
workEstimated
แสดงจำนวนไบต์และเอกสารทั้งหมดโดยประมาณที่การดำเนินการจะประมวลผล Cloud Firestore อาจละเว้นเมตริกนี้หาก ประมาณค่าไม่ได้workCompleted
แสดงจำนวนไบต์และเอกสารที่ประมวลผลแล้วจนถึงตอนนี้ หลังจากดำเนินการเสร็จสมบูรณ์ ค่าจะแสดงจำนวนไบต์และเอกสารทั้งหมดที่ประมวลผลจริง ซึ่งอาจมากกว่าค่าของworkEstimated
นำ workCompleted
มาหารด้วย workEstimated
เพื่อดูความคืบหน้าโดยประมาณ การประมาณนี้อาจไม่ถูกต้องเนื่องจากขึ้นอยู่กับการรวบรวมสถิติที่ล่าช้า
ยกเลิกการดำเนินการ
Google Cloud Console
คุณยกเลิกการดำเนินการส่งออกหรือนำเข้าที่กำลังทำงานได้ในหน้านำเข้า/ส่งออกของ Google Cloud Console
ในคอนโซล 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ราคา การดำเนินการส่งออกจะทำให้เกิดการดำเนินการอ่าน 1 รายการต่อเอกสารที่ส่งออก การดำเนินการนำเข้าจะทำให้เกิดการดำเนินการเขียน 1 ครั้งต่อเอกสารที่นำเข้า
ไฟล์เอาต์พุตที่จัดเก็บไว้ใน 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การดำเนินการส่งออกจะพยายามไม่ให้เกินขีดจำกัดของคอลัมน์ โดยถือว่าฟิลด์แผนที่เป็นไบต์ หาก Conversion นี้ทําให้จํานวนคอลัมน์ต่ำกว่า 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 มีการแชร์ โดยบริการมากกว่า 1 รายการ
ดูบัญชีการให้สิทธิ์
คุณดูได้ว่าการดำเนินการนำเข้าและส่งออกใช้บัญชีใดในการให้สิทธิ์ คำขอจากหน้านำเข้า/ส่งออกใน Google Cloud Console นอกจากนี้ คุณยังดูได้ว่าฐานข้อมูลใช้Cloud Firestore ตัวแทนบริการอยู่แล้วหรือไม่
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
-
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
- ดูบัญชีการให้สิทธิ์ข้างป้ายกำกับงานนำเข้า/ส่งออกที่เรียกใช้เป็น
หากโปรเจ็กต์ไม่ได้ใช้Cloud Firestore คุณสามารถย้ายข้อมูลไปยังCloud Firestoreได้โดยใช้เทคนิคใดเทคนิคหนึ่งต่อไปนี้
- ย้ายข้อมูลโปรเจ็กต์โดยการตรวจสอบและอัปเดตCloud Storageสิทธิ์ของที่เก็บข้อมูล (แนะนำ)
- เพิ่มข้อจํากัดด้านนโยบายระดับองค์กรที่มีผลกับโปรเจ็กต์ทั้งหมดภายในองค์กร
เทคนิคแรกเป็นวิธีที่แนะนำเนื่องจากจะจำกัดขอบเขตของผลลัพธ์ไว้ในโปรเจ็กต์ Cloud Firestore เดียว เราไม่แนะนำให้ใช้เทคนิคที่ 2 เนื่องจากไม่ได้ย้ายข้อมูลสิทธิ์ของที่เก็บข้อมูล Cloud Storage ที่มีอยู่ แต่จะมีการปฏิบัติตามข้อกำหนดด้านความปลอดภัยในระดับองค์กร
ย้ายข้อมูลโดยตรวจสอบและอัปเดตCloud Storageสิทธิ์ของที่เก็บข้อมูล
กระบวนการย้ายข้อมูลมี 2 ขั้นตอนดังนี้
- อัปเดตสิทธิ์ที่เก็บข้อมูล Cloud Storage ดูรายละเอียดได้ในส่วนต่อไปนี้
- ยืนยันการย้ายข้อมูลไปยังตัวแทนบริการของ Cloud Firestore
สิทธิ์ที่เก็บข้อมูลของตัวแทนบริการ
สำหรับการดำเนินการส่งออกหรือนำเข้าที่ใช้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 ที่อาจต้องมีการอัปเดตสิทธิ์
ย้ายข้อมูลโปรเจ็กต์ไปยังตัวแทนบริการ Firestore
ทำตามขั้นตอนต่อไปนี้เพื่อย้ายข้อมูลจากบัญชีบริการ App Engine ไปยังตัวแทนบริการ Cloud Firestore เมื่อดำเนินการย้ายข้อมูลเสร็จเรียบร้อยแล้วจะย้อนกลับไม่ได้
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
-
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
-
หากโปรเจ็กต์ยังไม่ได้ย้ายข้อมูลไปยังCloud Firestore เอเจนต์บริการ คุณจะเห็นแบนเนอร์ที่อธิบายการย้ายข้อมูลและ ปุ่มตรวจสอบสถานะที่เก็บข้อมูล ขั้นตอนถัดไปจะช่วยคุณระบุและ แก้ไขข้อผิดพลาดเกี่ยวกับสิทธิ์ที่อาจเกิดขึ้น
คลิกตรวจสอบสถานะที่เก็บข้อมูล
เมนูจะปรากฏขึ้นพร้อมตัวเลือกในการย้ายข้อมูลให้เสร็จสมบูรณ์และ รายการCloud Storage บัคเก็ต การโหลดรายการอาจใช้เวลา 2-3 นาที
รายการนี้ประกอบด้วยที่เก็บข้อมูลที่ใช้ในการดำเนินการนำเข้าและส่งออกเมื่อเร็วๆ นี้ แต่ปัจจุบันไม่ได้ให้สิทธิ์อ่านและ สิทธิ์เขียนแก่ตัวแทนบริการ Cloud Firestore
- จดชื่อหลักของCloud Firestore ตัวแทนบริการของโปรเจ็กต์ ชื่อตัวแทนบริการจะปรากฏในป้ายกำกับ ตัวแทนบริการที่จะให้สิทธิ์เข้าถึง
-
สำหรับที่เก็บข้อมูลใดๆ ในรายการที่คุณจะใช้สำหรับการนำเข้าหรือส่งออกในอนาคต ให้ทำตามขั้นตอนต่อไปนี้
-
คลิกแก้ไขในแถวตารางของที่เก็บข้อมูลนี้ ซึ่งจะเปิดหน้าสิทธิ์ของที่เก็บข้อมูลนั้นในแท็บใหม่
- คลิกเพิ่ม
- ในช่องผู้รับมอบอำนาจใหม่ ให้ป้อนชื่อของ Cloud Firestore ตัวแทนบริการ
- ในช่องเลือกบทบาท ให้เลือก ตัวแทนบริการ > ตัวแทนบริการ Firestore
- คลิกบันทึก
- กลับไปที่แท็บที่มีCloud Firestoreหน้านำเข้า/ส่งออก
- ทำขั้นตอนเหล่านี้ซ้ำสำหรับที่เก็บข้อมูลอื่นๆ ในรายการ อย่าลืมดู ทุกหน้าของรายการ
-
-
คลิกย้ายข้อมูลไปยังตัวแทนบริการ Firestore หากคุณ ยังมีที่เก็บข้อมูลที่มีการตรวจสอบสิทธิ์ไม่สำเร็จ คุณ ต้องยืนยันการย้ายข้อมูลโดยคลิกย้ายข้อมูล
การแจ้งเตือนจะแจ้งให้คุณทราบเมื่อการย้ายข้อมูลเสร็จสมบูรณ์ การย้ายข้อมูลจะยกเลิกไม่ได้
ดูสถานะการย้ายข้อมูล
วิธีตรวจสอบสถานะการย้ายข้อมูลของโปรเจ็กต์
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
-
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
-
มองหาผู้ดูแลระบบข้างป้ายกำกับงานนำเข้า/ส่งออกที่เรียกใช้เป็น
หากหลักการคือ
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
แสดงว่าโปรเจ็กต์ของคุณได้ย้ายข้อมูลไปยังCloud Firestore ตัวแทนบริการแล้ว การย้ายข้อมูลจะยกเลิกไม่ได้หากยังไม่ได้ย้ายข้อมูลโปรเจ็กต์ แบนเนอร์จะปรากฏที่ด้านบนของหน้า พร้อมปุ่มตรวจสอบสถานะของที่เก็บข้อมูล โปรดดูหัวข้อย้ายข้อมูลไปยังตัวแทนบริการ Firestore เพื่อทำการย้ายข้อมูลให้เสร็จสมบูรณ์
เพิ่มข้อจํากัดด้านนโยบายทั่วทั้งองค์กร
-
ตั้งค่าข้อจำกัดต่อไปนี้ในนโยบายขององค์กร
กำหนดให้มีตัวแทนบริการ Firestore สำหรับการนำเข้า/ส่งออก (
firestore.requireP4SAforImportExport
)ข้อจำกัดนี้กำหนดให้การดำเนินการนำเข้าและส่งออกต้องใช้Cloud Firestoreตัวแทนบริการเพื่อให้สิทธิ์คำขอ หากต้องการตั้งค่าข้อจํากัดนี้ โปรดดู การสร้างและจัดการนโยบายขององค์กร
การใช้ข้อจำกัดของนโยบายขององค์กรนี้ไม่ได้ให้สิทธิ์ในCloud Storageที่เหมาะสมโดยอัตโนมัติสำหรับ Cloud Firestoreตัวแทนบริการ
หากข้อจำกัดทำให้เกิดข้อผิดพลาดเกี่ยวกับสิทธิ์สำหรับเวิร์กโฟลว์การนำเข้าหรือส่งออกใดๆ คุณสามารถปิดใช้ข้อจำกัดเพื่อกลับไปใช้บัญชีบริการเริ่มต้นได้ หลังจากตรวจสอบและอัปเดตCloud Storageสิทธิ์ของที่เก็บข้อมูล แล้ว คุณจะเปิดใช้ข้อจํากัดอีกครั้งได้