预配 Oracle Zero Downtime Migration

安装和配置 Oracle Zero Downtime Migration

关于零停机时间迁移的前提条件

在运行零停机迁移实用程序进行数据库迁移之前,它需要满足某些先决条件。

在数据库迁移期间,零停机迁移服务主机需要访问源数据库服务器和目标数据库服务器。因此,要迁移到 Oracle Autonomous Database on Dedicated Exadata Infrastructure ,零停机迁移服务主机还需要 root 用户访问或通过 SSH 密钥访问其中一个源数据库服务器。继续之前,请确保满足这些网络路由和连接要求。

安装零停机迁移主机

Oracle 建议在 Oracle Linux 7 或 8 上运行的单独主机上安装 Zero Downtime Migration。它可以在源数据库数据中心进行预配,也可以在 OCI 中进行配置。在此示例中,在 OCI 中配置了零停机迁移服务主机。
  1. 在 Oracle Linux 上预配主机,存储空间至少为 100 GB。
  2. 确保以下必需的软件包可用:
    • glibc-devel
    • expect
    • unzip
    • libaio
    • oraclelinux-developer-release-el7

    注意:

    对于更高版本(如 Oracle Linux 8),也需要软件包 libnslncurses-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 用户身份依次按 Basic、SQL*Plus 和 Tools 的顺序安装 RPM 程序包:
    [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. 确保该二进制文件较早地从“Download Software Packages(下载软件包)”部分下载,并将其传输到零停机迁移服务主机。
  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. 在 Zero Downtime Migration 服务主机上配置 /etc/hosts 文件,通过以 root 用户身份添加源数据库信息来确保 Zero Downtime Migration 服务主机与源数据库之间的连接。
    [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. 根据 SSH 密钥配置从零停机迁移主机到源数据库的 SSH 连接,而不使用口令短语作为 zdmuser
    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. zdmuser 身份生成 SSH 密钥。
    [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 文件中。