גיבוי ושחזור של סכימת Ranger

בדף הזה מוסבר איך לגבות ולשחזר סכימת Ranger ב-Managed Service for Apache Spark עם אשכולות Ranger.

לפני שמתחילים

  1. אם צריך, יוצרים קטגוריה. צריכה להיות לכם גישה לקטגוריה של Cloud Storage, שבה תשתמשו כדי לאחסן ולשחזר סכימת Ranger.

    כדי ליצור קטגוריה:

    1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

      כניסה לדף Buckets

    2. לוחצים על יצירה.
    3. ממלאים את פרטי הקטגוריה בדף Create a bucket. כדי לעבור לשלב הבא לוחצים על Continue.
      1. בקטע Get started (תחילת העבודה), מבצעים את הפעולות הבאות:
      2. בקטע Choose where to store your data, מבצעים את הפעולות הבאות:
        1. בוחרים סוג מיקום.
        2. בתפריט הנפתח Location type, בוחרים מיקום שבו יישמרו נתוני הקטגוריה באופן קבוע.
        3. כדי להגדיר שכפול בין מאגרי מידע, בוחרים באפשרות הוספת שכפול בין מאגרי מידע באמצעות Storage Transfer Service ופועלים לפי השלבים הבאים:

          הגדרה של רפליקציה בין דליים

          1. בתפריט Bucket, בוחרים באפשרות הרצויה.
          2. בקטע הגדרות השכפול, לוחצים על הגדרה כדי להגדיר את ההגדרות של משימת השכפול.

            מופיעה החלונית Configure cross-bucket replication.

            • כדי לסנן אובייקטים לשכפול לפי קידומת של שם האובייקט, מזינים קידומת שרוצים לכלול או להחריג אובייקטים ממנה, ואז לוחצים על הוספת קידומת.
            • כדי להגדיר סוג אחסון לאובייקטים המשוכפלים, בוחרים סוג אחסון בתפריט סוג אחסון. אם מדלגים על השלב הזה, האובייקטים המשוכפלים ישתמשו בסוג האחסון של קטגוריית היעד כברירת מחדל.
            • לוחצים על סיום.
      3. בקטע Choose how to store your data, מבצעים את הפעולות הבאות:
        1. בוחרים default storage class לקטגוריה או Autoclass לניהול אוטומטי של סוג האחסון (storage class) של נתוני הקטגוריה.
        2. כדי להפעיל מרחב שמות היררכי, בקטע Optimize storage for data-intensive workloads, בוחרים באפשרות Enable hierarchical namespace on this bucket.
      4. בקטע Choose how to control access to objects, בוחרים אם הקטגוריה אוכפת public access prevention או לא, ואז בוחרים שיטת בקרת גישה לאובייקטים של הקטגוריה.
      5. בקטע Choose how to protect object data, מבצעים את הפעולות הבאות:
        • בוחרים באחת מהאפשרויות בקטע הגנה על נתונים שרוצים להגדיר לקטגוריה.
          • כדי להפעיל מחיקה עם אפשרות שחזור, מסמנים את התיבה Soft delete policy (For data recovery) ומציינים את מספר הימים שבהם רוצים לשמור אובייקטים אחרי המחיקה.
          • כדי להגדיר ניהול גרסאות של אובייקטים, מסמנים את התיבה Object versioning (For version control) (ניהול גרסאות של אובייקטים (לניהול גרסאות)), ומציינים את מספר הגרסאות המקסימלי לכל אובייקט ואת מספר הימים שאחריהם הגרסאות הלא עדכניות יפוגו.
          • כדי להפעיל את מדיניות שמירת הנתונים על אובייקטים וקטגוריות, לוחצים על תיבת הסימון שמירת נתונים (לצורך תאימות), ואז מבצעים את הפעולות הבאות:
            • כדי להפעיל את הנעילה של שמירת אובייקטים, מסמנים את התיבה הפעלת שמירת אובייקטים.
            • כדי להפעיל את נעילת הקטגוריה, מסמנים את תיבת הסימון הגדרת מדיניות שמירת נתונים בקטגוריה ובוחרים יחידת זמן ואת משך הזמן של תקופת השמירה.
        • כדי לבחור איך להצפין את נתוני האובייקט, מרחיבים את הקטע Data encryption () ובוחרים Data encryption method.
    4. לוחצים על יצירה.

גיבוי של סכימת Ranger

  1. משתמשים ב-SSH כדי להתחבר לצומת הראשי של אשכול Managed Service for Apache Spark עם סכימת Ranger. מריצים את הפקודות שבקטע הזה בסשן הטרמינל של SSH שפועל בצומת הראשי.

  2. מגדירים משתני סביבה.

    BUCKET_NAME=bucket name \
      MYSQL_PASSWORD=MySQL password
      SCHEMA_FILE=schema filename
    

    מחליפים את מה שכתוב בשדות הבאים:

    • MySQL password: אפשר לפתוח את /etc/mysql/my.cnf בצומת הראשי של האשכול כדי להעתיק את הסיסמה של MySQL.

    • bucket name: השם של קטגוריית Cloud Storage שבה רוצים לאחסן את סכימת Ranger.

    • schema filename: מציינים שם קובץ, בלי סיומת שם הקובץ .sql. סכימת Ranger נשמרת בקובץ הזה בצומת הראשי, ואז נשמרת ב-bucket name ב-Cloud Storage .

  3. הפסקת השירותים של Hive.

    sudo systemctl stop hive-metastore.service
    sudo systemctl stop hive-server2.service
    

  4. מונעים שינויים בטבלאות של סכימת Ranger.

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE ALL PRIVILEGES ON ranger.* from 'rangeradmin'@'localhost';
    GRANT SELECT ON ranger.* TO 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  5. שומרים את סכימת Ranger בקובץ .sql.

    mysqldump -u root -p${MYSQL_PASSWORD} ranger > ${SCHEMA_FILE}.sql
    
  6. איפוס ההרשאות של Ranger.

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE SELECT ON ranger.* from 'rangeradmin'@'localhost';
    GRANT ALL PRIVILEGES ON ranger.* to 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  7. מפעילים מחדש את שירותי Hive ו-Ranger.

    sudo systemctl start hive-metastore.service
      sudo systemctl start hive-server2.service
      sudo systemctl restart ranger-admin.service
      sudo systemctl restart ranger-usersync.service
    
  8. מעתיקים את סכימת Ranger ל-Cloud Storage.

    gcloud storage cp ${SCHEMA_FILE}.sql gs://${BUCKET_NAME}
    

שחזור סכימת Ranger

  1. משתמשים ב-SSH כדי להתחבר לצומת הראשי של Managed Service for Apache Spark באשכול שבו רוצים לשחזר את סכימת האשכול. מריצים את הפקודות שבקטע הזה בסשן הטרמינל של SSH שפועל בצומת הראשי.

  2. מגדירים משתני סביבה.

    BUCKET_NAME=bucket name \
      MYSQL_PASSWORD=MySQL password
      SCHEMA_FILE=schema filename
    

    מחליפים את מה שכתוב בשדות הבאים:

    • MySQL password: אפשר לפתוח את /etc/mysql/my.cnf בצומת הראשי של האשכול כדי להעתיק את הסיסמה של MySQL.

    • bucket name: השם של קטגוריית Cloud Storage שמכילה את סכימת Ranger שנשמרה.

    • schema filename: שם קובץ הסכימה של Ranger, בלי סיומת שם הקובץ .sql, שנשמר ב-bucket name ב-Cloud Storage.

  3. הפסקת השירותים של Hive.

    sudo systemctl stop hive-metastore.service
    sudo systemctl stop hive-server2.service
    

  4. מונעים שינויים בטבלאות של סכימת Ranger.

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE ALL PRIVILEGES ON ranger.* from 'rangeradmin'@'localhost';
    GRANT SELECT ON ranger.* TO 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  5. מעתיקים את קובץ הסכימה של Ranger‏ .sql ב-Cloud Storage לצומת הראשי של האשכול.

    gcloud storage cp ${BUCKET_NAME}/${SCHEMA_FILE}.sql .
    
  6. משחזרים את סכימת Ranger. בשלב הזה, התוכן של סכמת Ranger הקיימת יידרס.

    mysqldump -u root -p${MYSQL_PASSWORD} ranger < ${SCHEMA_FILE}.sql
    
  7. איפוס ההרשאות של Ranger.

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE SELECT ON ranger.* from 'rangeradmin'@'localhost';
    GRANT ALL PRIVILEGES ON ranger.* to 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  8. מעדכנים את קובצי ההגדרה של Ranger. משנים את מארח מסד הנתונים של Ranger למארח חדש של מסד נתונים בקבצים הבאים עם המאפיינים הבאים:

    קובץ מאפיין (property)
    ranger-hdfs-security.xml ranger.plugin.hdfs.policy.rest.url
    ranger-yarn-security.xml ranger.plugin.yarn.policy.rest.url
  9. מפעילים מחדש את שירותי Hive ו-Ranger.

    sudo systemctl start hive-metastore.service
      sudo systemctl start hive-server2.service
      sudo systemctl restart ranger-admin.service
      sudo systemctl restart ranger-usersync.service