התצוגה SCHEMATA_REPLICAS

התצוגה INFORMATION_SCHEMA.SCHEMATA_REPLICAS מכילה מידע על העתקים של סכימות.

התפקיד הנדרש

כדי לקבל את ההרשאות שנדרשות להפעלת שאילתה בתצוגה INFORMATION_SCHEMA.SCHEMATA_REPLICAS, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ BigQuery Data Viewer (roles/bigquery.dataViewer) בפרויקט. להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

סכימה

התצוגה INFORMATION_SCHEMA.SCHEMATA_REPLICAS מכילה מידע על העתקים של מערכי נתונים. לתצוגה INFORMATION_SCHEMA.SCHEMATA_REPLICAS יש את הסכימה הבאה:
עמודה סוג תיאור
catalog_name STRING מזהה הפרויקט שמכיל את מערך הנתונים.
schema_name STRING המזהה של מערך הנתונים.
replica_name STRING השם של הרפליקה.
location STRING האזור או מספר האזורים שבהם נוצרה הרפליקה.
replica_primary_assigned BOOL אם הערך הוא TRUE, הרפליקה היא בעלת ההקצאה הראשית. כשמשנים רפליקה משנית לרפליקה ראשית, המצב הזה נכנס לתוקף באופן מיידי.
replica_primary_assignment_complete BOOL אם הערך הוא TRUE, ההקצאה הראשית הושלמה. אם הערך הוא FALSE, הרפליקה אינה (עדיין) הרפליקה הראשית, גם אם replica_primary_assigned שווה ל-TRUE. מידע על משך הזמן שנדרש כדי שרפליקה משנית תהפוך לרפליקה ראשית זמין במאמר קידום הרפליקה המשנית.
creation_time TIMESTAMP מועד היצירה של העותק. כשמשכפלים את הרפליקה בפעם הראשונה, היא לא מסונכרנת באופן מלא עם הרפליקה הראשית עד ש-creation_complete שווה ל-TRUE. הערך של creation_time מוגדר לפני ש-creation_complete שווה ל- TRUE.
creation_complete BOOL אם הערך הוא TRUE, הסנכרון המלא הראשוני של הרפליקה הראשית לרפליקה המשנית הושלם.
replication_time TIMESTAMP

הערך של replication_time מציין את מידת העדכניות של מערך הנתונים.

יכול להיות שחלק מהטבלאות ברפליקה יהיו עדכניות יותר מחותמת הזמן הזו. הערך הזה מוצג רק באזור המשני.

אם מערך הנתונים מכיל טבלה עם נתונים בזמן אמת, הערך של replication_time לא יהיה מדויק.

sync_status JSON הסטטוס של הסנכרון בין הרפליקות הראשיות והמשניות של מערכי נתונים של רפליקציה בין אזורים ושל תוכנית התאוששות מאסון (DR). הפונקציה מחזירה NULL אם העותק הוא עותק ראשי או אם מערך הנתונים לא משתמש בשכפול.
replica_primary_assignment_time TIMESTAMP השעה שבה הופעל המעבר הראשי לרפליקה.
replica_primary_assignment_completion_time TIMESTAMP השעה שבה הושלם המעבר הראשי אל הרפליקה.

כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.

היקף ותחביר

שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן אזור. בטבלה הבאה מוסבר היקף האזור בתצוגה הזו:

שם התצוגה היקף המשאבים היקף האזור
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT] ברמת הפרויקט REGION
מחליפים את מה שכתוב בשדות הבאים:
  • אופציונלי: PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.
  • REGION: כל שם של אזור במערך נתונים. לדוגמה, `region-us`.

דוגמאות

בקטע הזה מפורטות דוגמאות לשאילתות של התצוגה המפורטת INFORMATION_SCHEMA.SCHEMATA_REPLICAS.

דוגמה: הצגת רשימה של כל קבוצות הנתונים המשוכפלות באזור מסוים

בדוגמה הבאה מפורטים כל מערכי הנתונים המשוכפלים באזור US:

SELECT * FROM `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;

התוצאה אמורה להיראות כך:

+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
|    catalog_name     |    schema_name    | replica_name | location | replica_primary_assigned | replica_primary_assignment_complete |    creation_time    | creation_complete | replication_time |
+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+
| myproject           | replica1          | us-east7     | us-east7 |                     true |                                true | 2023-04-17 20:42:45 |              true |             NULL |
| myproject           | replica1          | us-east4     | us-east4 |                    false |                               false | 2023-04-17 20:44:26 |              true |             NULL |
+---------------------+-------------------+--------------+----------+--------------------------+-------------------------------------+---------------------+-------------------+------------------+

דוגמה: הצגת רשימה של מערכי נתונים משוכפלים והעותק הראשי של כל אחד מהם

בדוגמה הבאה מוצגת רשימה של כל מערכי הנתונים המשוכפלים והרפליקה הראשית שלהם באזור US:

SELECT
 catalog_name,
 schema_name,
 replica_name AS primary_replica_name,
 location AS primary_replica_location,
 replica_primary_assignment_complete AS is_primary,
FROM
 `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
WHERE
 replica_primary_assignment_complete = TRUE
 AND replica_primary_assigned = TRUE;

התוצאה אמורה להיראות כך:

+---------------------+-------------+----------------------+--------------------------+------------+
|    catalog_name     | schema_name | primary_replica_name | primary_replica_location | is_primary |
+---------------------+-------------+----------------------+--------------------------+------------+
| myproject           | my_schema1  | us-east4             | us-east4                 |       true |
| myproject           | my_schema2  | us                   | US                       |       true |
| myproject           | my_schema2  | us                   | US                       |       true |
+---------------------+-------------+----------------------+--------------------------+------------+

דוגמה: הצגת רשימה של מערכי נתונים משוכפלים והסטטוס של העותקים שלהם

בדוגמה הבאה מפורטים כל מערכי הנתונים המשוכפלים ומצבי השכפול שלהם:

SELECT
  catalog_name,
  schema_name,
  replica_name,
  CASE
    WHEN (replica_primary_assignment_complete = TRUE AND replica_primary_assigned = TRUE) THEN 'PRIMARY'
    WHEN (replica_primary_assignment_complete = FALSE
    AND replica_primary_assigned = FALSE) THEN 'SECONDARY'
  ELSE
  'PENDING'
END
  AS replica_state,
FROM
  `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS;

התוצאה אמורה להיראות כך:

+---------------------+-------------+--------------+---------------+
|    catalog_name     | schema_name | replica_name | replica_state |
+---------------------+-------------+--------------+---------------+
| myproject           | my_schema1  | us-east4     | PRIMARY       |
| myproject           | my_schema1  | my_replica   | SECONDARY     |
+---------------------+-------------+--------------+---------------+

דוגמה: ציין מתי כל רפליקה נוצרה והאם המילוי הראשוני של הנתונים הושלם

בדוגמה הבאה מוצגת רשימה של כל העותקים המשוכפלים ומועד היצירה שלהם. כשיוצרים רפליקה משנית, הנתונים שלה לא מסונכרנים באופן מלא עם הרפליקה הראשית עד ש-creation_complete שווה ל-TRUE.

SELECT
 catalog_name,
 schema_name,
 replica_name,
 creation_time AS creation_time,
FROM
 `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
WHERE
 creation_complete = TRUE;

התוצאה אמורה להיראות כך:

+---------------------+-------------+--------------+---------------------+
|    catalog_name     | schema_name | replica_name |    creation_time    |
+---------------------+-------------+--------------+---------------------+
| myproject           | my_schema1  | us-east4     | 2023-06-15 00:09:11 |
| myproject           | my_schema2  | us           | 2023-06-15 00:19:27 |
| myproject           | my_schema2  | my_replica2  | 2023-06-15 00:19:50 |
| myproject           | my_schema1  | my_replica   | 2023-06-15 00:16:19 |
+---------------------+-------------+--------------+---------------------+

דוגמה: הצגת הזמן האחרון שסונכרן

בדוגמה הבאה מוצגת חותמת הזמן העדכנית ביותר שבה הרפליקה המשנית הגיעה למצב זהה לרפליקה הראשית.

צריך להריץ את השאילתה הזו באזור שמכיל את הרפליקה המשנית. יכול להיות שחלק מהטבלאות במערך הנתונים יקדימו את זמן השכפול שדווח.

SELECT
 catalog_name,
 schema_name,
 replica_name,
 -- Calculate the replication lag in seconds.
 TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), replication_time, SECOND) AS replication_lag_seconds, -- RLS
 -- Calculate the replication lag in minutes.
 TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), replication_time, MINUTE) AS replication_lag_minutes, -- RLM
 -- Show the last sync time for easier interpretation.
 replication_time AS secondary_replica_fully_synced_as_of_time,
FROM
 `region-us`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS

התוצאה אמורה להיראות כך:

+---------------------+-------------+--------------+-----+-----+-------------------------------------------+
|    catalog_name     | schema_name | replica_name | rls | rlm | secondary_replica_fully_synced_as_of_time |
+---------------------+-------------+--------------+-----+-----+-------------------------------------------+
| myproject           | my_schema1  | us-east4     |  23 |   0 |                       2023-06-15 00:18:49 |
| myproject           | my_schema2  | us           |  67 |   1 |                       2023-06-15 00:22:49 |
| myproject           | my_schema1  | my_replica   |  11 |   0 |                       2023-06-15 00:28:49 |
| myproject           | my_schema2  | my_replica2  | 125 |   2 |                       2023-06-15 00:29:20 |
+---------------------+-------------+--------------+-----+-----+-------------------------------------------+

הערך NULL מציין שהרפליקה המשנית אף פעם לא סונכרנה באופן מלא עם הרפליקה הראשית.