הגדרה של Data Guard observer ב-Compute Engine Google Cloud

בהתאם לדרישות הזמינות הגבוהה, יכול להיות שתרצו להגדיר מעבר אוטומטי לגיבוי בין מסדי נתונים. אחרי שמאמתים את הפריסה של Data Guard, אפשר להגדיר ב-Compute Engine משקיף של Data Guard שיבצע את הפעולה הזו. תהליך הצפייה הוא תהליך שמנטר את ההגדרות של Data Guard כדי ליזום מעבר גיבוי אוטומטי אם התנאים מצדיקים זאת.

במדריך הזה מוסבר איך להתקין את לקוח מסד הנתונים Oracle 19c במכונה וירטואלית (VM) של observer ואיך להגדיר מעבר גיבוי מהיר.

בדוגמאות הבאות נעשה שימוש לאורך המדריך הזה:

שם ייחודי של מסד הנתונים שמות מארחים של שרתים שמות של מכונות RAC תפקיד
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 ראשי
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 מצב המתנה

התקנה של תוכנת הלקוח של Oracle Database

  1. יוצרים מכונה וירטואלית (VM) ב-Compute Engine שעומדת בקריטריונים הבאים:

    • מערכת הפעלה. ‫Red Hat Enterprise Linux 7.

    • רשת. רשת משנה עם כללי חומת אש שמאפשרים גישה מה-ענן וירטואלי פרטי (VPC) למארחים של Bare Metal Solution שבהם פועלים מסדי הנתונים הראשיים ומסדי הנתונים למקרה חירום.

    • אחסון. ‫– לפחות 20 GB שהוקצו לדיסק האתחול.

  2. מתחברים למכונה הווירטואלית ומוודאים ששם המארח של ה-SCAN של כל אשכול מסד נתונים עובר המרה ב-DNS:

    host DBDG_SITE1_SCAN_HOSTNAME
    host DBDG_SITE2_SCAN_HOSTNAME
    

    אם שמות המארח לא נפתרים, מוסיפים את כתובות ה-IP של כל שם מארח של SCAN לקובץ /etc/hosts במכונה הווירטואלית. מחליפים את כתובות ה-IP שבדוגמה בכתובות ה-IP של כל אשכול:

    # Site 1 SCAN Hosts
    192.0.2.10 DBDG_SITE1_SCAN_HOSTNAME
    192.0.2.11 DBDG_SITE1_SCAN_HOSTNAME
    192.0.2.12 DBDG_SITE1_SCAN_HOSTNAME
    
    # Site 2 SCAN Hosts
    198.51.100.10 DBDG_SITE2_SCAN_HOSTNAME
    198.51.100.11 DBDG_SITE2_SCAN_HOSTNAME
    198.51.100.12 DBDG_SITE2_SCAN_HOSTNAME
    
  3. מתקינים את Oracle Database RPM. מתקינים רק את התוכנה. אין צורך להגדיר מסד נתונים במכונה הווירטואלית של האובזרבר.

  4. חבילת ה-RPM של Oracle Database מתקינה תוכנה בספרייה מוגדרת מראש. מוסיפים את הרשומות הבאות ל-/home/oracle/.bash_profile כדי להוסיף את ספריית הבית של תוכנת Oracle לנתיב:

    cat >> /home/oracle/.bash_profile << EOL
    export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
    export PATH=\$PATH:\$ORACLE_HOME/bin
    EOL
    
  5. מפעילים את משתני הסביבה של Oracle בסשן הטרמינל:

    source ~/.bash_profile
    

הגדרת הקישוריות למסד הנתונים

  1. מגדירים את ההגדרות של Oracle Net בקובץ $ORACLE_HOME/network/admin/tsnames.ora:

    DBDG_SITE1 =
      (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
          (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = DBDG_SITE1) (UR=A)
          )
      )
    
    DBDG_SITE2 =
      (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
          (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = DBDG_SITE2) (UR=A)
          )
      )
    
  2. גרסה 12.2 ואילך של Oracle Database כוללת תמיכה בהרצת הכלי observer במצב רקע. לשם כך, צריך ליצור ארנק כדי לבצע אימות ללא סיסמה למסד הנתונים. מתחברים למכונה הווירטואלית של ה-observer כמשתמש oracle ומבצעים את המשימות הבאות כדי ליצור ארנק:

    1. מוסיפים את הרשומות הבאות ל-$ORACLE_HOME/network/admin/sqlnet.ora:

      WALLET_LOCATION =
         (SOURCE =
            (METHOD = FILE)
            (METHOD_DATA = (DIRECTORY = /home/oracle/wallet))
      )
      SQLNET.WALLET_OVERRIDE = TRUE
      
    2. יוצרים את ספריית הארנק ב-VM שמארח את האובזרבר:

      mkdir /home/oracle/wallet
      
    3. מאתחלים את הארנק ומזינים סיסמה לארנק כשמוצגת בקשה:

      mkstore -wrl /home/oracle/wallet -create
      
    4. יוצרים רשומה בארנק לכל מסד נתונים בהגדרת Data Guard. הפקודה mkstore תבקש את הסיסמה של SYS למסד הנתונים, ואחריה את סיסמת הארנק שצוינה בשלב הקודם:

      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE1 sys
      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE2 sys
      
    5. מוודאים שארנק מכיל אישורים לכל מסד נתונים בהגדרת Data Guard. הארגומנט -listCredential של mkstore יבקש את הסיסמה של הארנק:

      mkstore -wrl /home/oracle/wallet -listCredential
      
  3. מתחברים למכונה הווירטואלית של ה-observer בתור Oracle ואז בודקים את הקישוריות למסדי הנתונים הראשיים ולמסדי הנתונים של הגיבוי. מתחברים למסדי הנתונים הראשי והמשני באמצעות SQL*Plus באמצעות פרטי הכניסה של הארנק:

    sqlplus /@DBDG_SITE1 as sysdba
    sqlplus /@DBDG_SITE2 as sysdba
    

    אם הגדרת הארנק מצליחה, הפקודה sqlplus מתחברת ישירות למסד הנתונים בלי לבקש סיסמה.

הגדרה והפעלה של מעבר גיבוי מהיר

  1. יוצרים ספרייה לאחסון קובצי היומן וקובץ התצורה של הכלי Observer:

    mkdir /home/oracle/fsfo
    
  2. מתחברים למתווך Data Guard במסד הנתונים הראשי באמצעות הארנק:

    dgmgrl
    CONNECT /@DBDG_SITE1;
    
  3. בודקים את הסטטוס של Data Guard כדי לוודא שההגדרה מסומנת כSUCCESS:

    SHOW CONFIGURATION;
    
  4. הפעלת מעבר גיבוי אוטומטי מהיר (FSFO):

    ENABLE FAST_START FAILOVER;
    

    הפעלת FSFO לא הופכת את ההגדרה למוכנה למעבר אוטומטי לגיבוי. כדי להפעיל מעבר אוטומטי לגיבוי נדרש משקיף.

  5. מפעילים את Data Guard Observer:

    START OBSERVER observer1 IN BACKGROUND FILE IS '/home/oracle/fsfo/observer1_DBDG.dat' LOGFILE IS '/home/oracle/fsfo/observer1_DBDG.log';
    
  6. בסשן מסוף נפרד, מאמתים את ההגדרה:

    SHOW CONFIGURATION VERBOSE;
    

    בדוגמה הבאה מוצג מצב מפורט של הפקודה show configuration. אם סטטוס ההגדרה הוא SUCCESS, ההגדרה הושלמה.

    Configuration - DBDG
    
      Protection Mode: MaxAvailability
      Members:
     DBDG_SITE1 - Primary database
       DBDG_SITE2 - Physical standby database
    
      (*) Fast-Start Failover target
    
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '45'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
        ConfigurationWideServiceName    = 'DBDG_CFG'
    
    Fast-Start Failover: Enabled in Potential Data Loss Mode
      Lag Limit:          45 seconds
      Threshold:          30 seconds
      Active Target:      DBDG_SITE2
      Potential Targets:  "DBDG_SITE2"
        DBDG_SITE2   valid
      Observer:           observer1
      Shutdown Primary:   TRUE
      Auto-reinstate:     TRUE
      Observer Reconnect: (none)
      Observer Override:  FALSE
    
    Configuration Status:
    SUCCESS