佈建 Oracle Zero Downtime Migration

安裝並設定 Oracle Zero Downtime Migration 。

關於零停機移轉必備條件

執行資料庫移轉的「零停機移轉」公用程式之前,必須先滿足某些先決條件。

零停機移轉服務主機需要在資料庫移轉期間存取來源和目標資料庫伺服器。因此,若要執行移轉至 Oracle Autonomous Database on Dedicated Exadata Infrastructure ,Zero Downtime Migration 服務主機還需要 root 使用者存取或 SSH 金鑰存取其中一個來源資料庫伺服器。請先確定符合這些網路路由和連線需求,再繼續進行作業。

安裝零停機移轉主機

Oracle 建議在 Oracle Linux 7 或 8 上執行的個別主機上安裝「零停機移轉」。可在來源資料庫資料中心佈建或在 OCI 中設定。在此範例中,已在 OCI 中設定「零停機移轉」服務主機。
  1. 在 Oracle Linux 上佈建至少 100 GB 的儲存體。
  2. 請確定這些必要的套裝程式可供使用:
    • glibc-devel
    • expect
    • unzip
    • libaio
    • oraclelinux-developer-release-el7

    附註:

    對於較高版本 (例如 Oracle Linux 8),也需要使用 libnsl 和 ncurses-compat-libs 套裝軟體。
  3. 執行下列命令:
    [root@zdmhost ~]# yum install glibc-devel expect unzip libaio oraclelinux-developer-release-el7 -y
  4. 執行下列命令,建立名為 zdm 的群組,以及新增至群組的 zdmuser 使用者:
    [root@zdmhost ~]# groupadd zdm
    [root@zdmhost ~]# useradd zdmuser -g zdm
    [root@zdmhost ~]# mkdir -p /home/zdmuser/zdminstall
    [root@zdmhost ~]# mkdir /home/zdmuser/zdmhome
    [root@zdmhost ~]# mkdir /home/zdmuser/zdmbase
    [root@zdmhost ~]# chown -R zdmuser:zdm /home/zdmuser/
  5. 執行下列命令,將 zdmuser 的必要環境變數更新為在 ZDM 服務主機上安裝 ZDM:
    echo "ORACLE_HOME=/home/zdmuser/zdmhome; export ORACLE_HOME" >> ~/.bashrc
    echo "ORACLE_BASE=/home/zdmuser/zdmbase; export ORACLE_BASE" >> ~/.bashrc
    echo "ZDM_BASE=\$ORACLE_BASE; export ZDM_BASE" >> ~/.bashrc
    echo "ZDM_HOME=/home/zdmuser/zdmhome; export ZDM_HOME" >> ~/.bashrc
    echo "ZDM_INSTALL_LOC=/home/zdmuser/zdminstall; export ZDM_INSTALL_LOC" >> ~/.bashrc

在 ZDM 主機上安裝其他工具

  1. 以 root 身分在 ZDM 服務主機上安裝 OCI 命令行介面 (OCI CLI):
    [root@zdmhost ~]# yum install python36-oci-cli
  2. 在 ZDM 主機上安裝 Oracle Database SQL 從屬端,以建立與來源和目標資料庫的連線。
  3. 確定您已下載 Oracle Instant Client 的 RPM 套裝程式 (請參閱「下載軟體套裝程式」段落):
    • 基本包裝 (RPM)
    • SQL*Plus 套裝程式 (RPM)
    • 工具套件 (RPM)
  4. 以 root 使用者的身分,依序執行以下命令,安裝 RPM 套裝程式:Basic、SQL*Plus、Tools:
    [root@zdmhost software]# yum install -y oracle-instantclient19.20-basic-19.20.0.0.0-1.x86_64.rpm
    [root@zdmhost software]# yum install -y oracle-instantclient19.20-sqlplus-19.20.0.0.0-1.x86_64.rpm
    [root@zdmhost software]# yum install -y oracle-instantclient19.20-tools-19.20.0.0.0-1.x86_64.rpm
  5. 執行下列命令來更新 TNS_ADMIN 和 PATH 之 zdmuser 的環境變數:
    TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
    PATH=/usr/lib/oracle/19.20/client64/bin:$PATH; export PATH

在主機上安裝零停機移轉

主機就緒後,請安裝「零停機移轉」。

  1. 確定先前已從「下載軟體套裝程式」區段下載二進位檔案,然後將其傳輸至「零停機移轉」服務主機。
  2. 執行下列命令以解壓縮主機上的 zdmuser 套裝程式:
    • [zdmuser@zdmhost ~]$ cd $ZDM_INSTALL_LOC
    • [zdmuser@zdmhost zdminstall]$ unzip /tmp/V1037236-01.zip
    • [zdmuser@zdmhost zdminstall]$ ls -rlt
  3. 執行下列命令,將「零停機移轉」安裝為主機上的 zdmuser:[zdmuser@zdmhost zdm21.4.1]$ ./zdminstall.sh setup oraclehome=$ZDM_HOME oraclebase=$ZDM_BASE ziploc=./zdm_home.zip -zdm
  4. 執行下列命令,在主機上啟動「零停機移轉」服務:[zdmuser@zdmhost ~]$ $ZDM_HOME/bin/zdmservice start
  5. 執行下列命令來檢查狀態:
    • [zdmuser@zdmhost ~]$ $ZDM_HOME/bin/zdmcli -build
    • [zdmuser@zdmhost ~]$ $ZDM_HOME/bin/zdmservice status
    如果執行「零停機移轉」,Running 應等於 true。

設定零停機移轉

  1. 在「零停機移轉」服務主機設定 /etc/hosts 檔案,透過以 root 使用者身分新增來源資料庫資訊,確保「零停機移轉」服務主機與來源資料庫之間的連線。
    [root@zdmhost ~]# cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.0.1.179 hr9246.appsubnet.exadatainfrastr.oraclevcn.com hr9246
    10.0.1.78 zdmhost.appsubnet.exadatainfrastr.oraclevcn.com zdmhost
    [root@zdmhost ~]#
  2. 根據沒有 zdmuser 密碼詞組的 SSH 金鑰,設定從「零停機移轉」主機至來源資料庫的 SSH 連線。
    1. 若為 zdmuser,請執行以下命令以產生 SSH 金鑰:
      • [zdmuser@zdmhost~]$ ssh-keygen -t rsa
      • [zdmuser@zdmhost~]$ cd ~/.ssh
      • [zdmuser@zdmhost~]$ cat id_rsa.pub>>authorized keys
      • [zdmuser@zdmhost~]$ chmod 600 authorized keys
    2. 將 /home/zdmuser/.ssh/id_rsa.pub 檔案的內容新增至來源資料庫伺服器的 opc_user_home/.ssh/authorized_keys 檔案中,以更新授權的金鑰檔案。
    3. 驗證從「零停機移轉」主機到 PSFT 主機的 SSH 連線。

設定 API 存取

  1. 執行下列命令以產生 zdmuser 公開金鑰:
    [zdmuser@zdmhost ~]$ mkdir zdmhome/.oci
    [zdmuser@zdmhost ~]$ cd zdmhome/.oci
    [zdmuser@zdmhost .oci]$ openssl genrsa -out /home/zdmuser/zdmhome/.oci/oci_api_key.pem 2048
    [zdmuser@zdmhost .oci]$ openssl rsa -pubout -in /home/zdmuser/zdmhome/.oci/oci_api_key.pem -out /home/zdmuser/zdmhome/.oci/oci_api_key_public.pem
  2. 將 API 金鑰新增至 OCI 主控台。
    1. 在 Oracle Cloud 儀表板中,按一下設定檔圖示,然後按一下您的帳戶 (電子郵件)。
    2. 按一下 API 金鑰。
    3. 按一下新增 API 金鑰。
    4. 選取貼上公開金鑰。
    5. 在公開金鑰欄位中,輸入 oci_api_key_public.pem
    6. 按一下「新增」。
  3. 複製對應 API 金鑰的組態檔內容。
  4. 以 zdmuser 身分建立組態檔,並以私密金鑰檔案路徑更新 key_file 路徑。
  5. 產生 OCI 認證權杖。
    CLI 的權杖型驗證可讓您建立暫時階段作業權杖來驗證 CLI 指令要求。

設定 SSH

設定 SSH 連線、產生 SSH 金鑰組,以及更新授權金鑰檔案。

  1. 在「零停機移轉」主機作為 zdmuser 中,根據沒有密碼詞組的 SSH 金鑰,設定與來源資料庫主機的 SSH 連線。
  2. 產生 SSH 金鑰作為 zdmuser。
    [zdmuser@zdmhost ~]$ ssh-keygen -t rsa
    [zdmuser@zdmhost ~]$ cd ~/.ssh
    [zdmuser@zdmhost .ssh]$ cat id_rsa.pub >> authorized_keys
    [zdmuser@zdmhost .ssh]$ chmod 600 authorized_keys
  3. 將 /home/zdmuser/.ssh/id_rsa.pub 檔案的內容新增至來源資料庫伺服器的 opc_user_home/.ssh/authorized_keys 檔案中。