附註:

將在 MongoDB Atlas 或內部部署上執行的 MongoDB 資料庫移轉至 Oracle Autonomous JSON Database

簡介

MongoDB 是常用的開放原始碼資料庫之一,用來以類似 JSON 的彈性文件建立和儲存資料,這表示欄位會因文件而異,而資料結構可隨時間變更。

Oracle 是世界知名的關聯式多模型資料庫之一,稱為融合式資料庫,具有良好的處理 JSON 功能。Oracle 導入了 v12c 的 JSON 支援,將 JSON 資料儲存為 varchar2 或大型物件 (LOB) (字元大型物件 (CLOB) / 二進位大型物件 (BLOB))。

MongoDB 的挑戰:

在 Oracle 中使用 JSON 資料類型的優點:

注意:請確定在 Oracle Cloud Infrastructure (OCI) GoldenGate 大數據部署、來源和目標資料庫之間建立連線。

目標

必要條件

工作 1:安裝 MongoDB 二進位檔案並啟動 MongoDB 服務

  1. 建立三個 OCI Compute 執行處理以進行複寫設定,並連附區塊磁碟區以進行資料目錄。

    圖像

  2. 使用下列命令更新 yum 儲存區域以下載 MongoDB 二進位檔。

    vi /etc/yum.repos.d/mongodb-enterprise-8.0.repo
    [mongodb-enterprise-8.0]
    name=MongoDB Enterprise Repository
    baseurl=https://repo.mongodb.com/yum/redhat/8/mongodb-enterprise/8.0/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://pgp.mongodb.com/server-8.0.asc
    sudo yum install -y mongodb-enterprise
    

    圖像

  3. 使用下列命令建立資料目錄並授予必要的權限。

    cd /data
    ls
    chmod 755 mongo
    cd
    chmod 755 -R /data/mongo
    chown mongod:mongod -R /data/mongo
    chmod 400 /etc/mongod.Keyfile
    chown mongod:mongod -R /etc/mongod.Keyfile
    

    圖像

    圖像

    注意:安全認證需要使用金鑰檔案。為了進行測試,可以使用 open-ssl 指令產生金鑰檔案。

  4. 使用下列指令建立配置檔案。

    cat /etc/mongod.conf
    

    圖像

  5. 停用 selinux,並使用下列指令啟動 mongod 服務。

    setenforce 0
    getenforce
    systemctl start mongod
    systemctl status mongod
    

    圖像

  6. 在將作為次要節點的其餘兩個節點上執行相同的作業。

工作 2:建立 MongoDB 複本集

  1. 連線至第一個節點並連線至管理資料庫。

  2. 執行下列命令以起始複製並建立第一位管理員使用者。此複製使用者將用於複製組態和管理。

    mongosh
    use admin
    

    圖像

    rs.initiate()
    db.createUser({
    ...  user: "admin",
    ...  pwd: "password",
    ...  roles: [
    ...         { role: "root", db: "admin" }
    ...   ]
    ...  })
    

    圖像

    db.auth("admin","password")
    rs.conf()
    

    圖像

  3. 使用下列命令新增其餘兩個節點。這些節點將會新增為次要節點。

    rs.add("10.0.1.163;27017")
    

    圖像

    rs.add("10.0.1.51:27017")
    

    圖像

  4. 使用下列命令檢查複本集的組態和狀態。

    db.auth("admin","password")
    rs.conf()
    

    圖像

    rs.status()
    

    圖像

    圖像

    圖像

    圖像

    rs.printReplicationInfo()
    

    圖像

工作 3:將資料載入 MongoDB 複本集

  1. 使用 mongorestore 指令將傾印復原至 MongoDB 複本集。

    mongorestore --username admin --password password dump/
    

    圖像

    圖像

    圖像

    注意:以上傾印是使用 mongodump 命令從另一個 MongoDB 複本集取得,用於該複本集下執行的所有資料庫。

  2. 執行下列命令來檢查所有資料庫及其個別的集合是否已回復至 MongoDB 複本集。

    mongosh
    use admin
    db.auth("admin","password")
    show dbs
    

    圖像

作業 4:在 OCI 中設定 Oracle Autonomous JSON Database

  1. 登入 OCI 主控台,瀏覽至 Oracle DatabaseAutonomous Database ,然後輸入下列資訊 (如影像中所示),以建立自治式資料庫。

    圖像

    圖像

    圖像

    注意:為了達到 MongoDB 相容性,必須將網路存取設為僅限允許的 IP 和 VCN 或專用端點存取的安全存取。

  2. 按一下編輯工具組態,啟用 MongoDB API 並複製 URL

    圖像

    圖像

    圖像

    注意:您必須變更上方連線字串中的使用者名稱和密碼。

作業 5:建立資料庫從屬端機器以存取 Oracle Autonomous JSON Database 並安裝必要的 MongoDB 工具

  1. 使用下列命令下載公事包檔案並設定 Oracle Autonomous JSON Database 的連線。

    cat tnsnames.Oracle
    

    圖像

    cat sqlnet.Ora
    

    圖像

    圖像

  2. 使用下列命令下載 MongoDB 工具進行連線。

    wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.5.2.tgz
    

    圖像

    tar -xvf mongodb-database-toosl-rhel70-x86_64-100.5.2.tgz
    

    圖像

    wget https://downloads.mongodb.com/compass/mongosh-1.3.1-linux-x64.tgz
    

    圖像

    tar -xvf mongosh-1.3.1-linux-x64.tgz
    

    圖像

  3. 使用下列指令將 PathURI (Oracle Autonomous Transaction Processing (ATP) 端點) 設為環境變數。

    cd
    export PATH=/home/oracle/mongosh-1.3.1-linux-x64/bin/:$PATH
    export PATH=$PATH:/home/oracle/mongodb-database-tools-rhel70-x86_64-100.5.2/bin
    echo $path
    

    圖像

    圖像

    圖像

  4. 請檢查是否能夠使用下列命令連線至 Oracle Autonomous JSON Database。

    export URI='mongodb://admin:xxxx@xxxxxx-ADBJ.adb.us-ashburn-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true'
    mongosh $URI
    

    圖像

作業 6:上傳傾印至 OCI 物件儲存的儲存桶並匯入 ATP

  1. 使用 mongoexport 指令傾印集合。

    圖像

    mongoexport --host=mrep1 --port 27017 --username=admin --authicationDatabase=admin --collection=data --db=sample_weatherdata --out=wheather_data.Json
    

    圖像

  2. 按一下上傳,即可上傳在 MongoDB 複本集上使用 mongoexport 命令所採用的單一資料庫集合傾印。

    圖像

  3. 按一下檢視物件詳細資訊即可取得物件端點詳細資訊。

    圖像

    圖像

  4. 執行 curl 命令,以使用端點從該物件讀取資料,並使用 mongoimport 命令讀取 ATP。

    curl -X GET https://objectstorage.us-ashburn-1.oraclecloud.com/p/ujXv8Pmhxt9EyLlA9ogm_X524pDRGEymJwbDVyUExAACra1VpAql32U0XaRnaxLt/n/orasenatdoracledigital01/b/jsonbucket/o/wheather_data.json | mongoimport --collection data --uri $URI
    

    圖像

  5. 檢查收集是否已匯入 ATP 資料庫。

    圖像

  6. 交叉檢查文件數目是否與來源相同。

    圖像

    測試成功。現在,我們建議您將來源 MongoDB 複本中多個資料庫下執行的所有資料搬移至目標 Oracle Autonomous JSON Database,並部署 OCI GoldenGate 服務,以進行近乎零停機移轉。

  7. 對於資料移動,您可以使用 mongodump 命令,一次性將資料從來源複製到目標資料庫。

    export URI="mongodb://mrep1:27017 --username admin --authenticationDatabase admin"
    mongodump --uri=$URI
    

    圖像

    圖像

  8. 將此傾印複製到目標系統,您可以從中執行 mongorestore 命令 (已在「工作 3」中說明,以載入目標 Oracle Autonomous JSON Database)。

    注意:請務必在 Oracle Autonomous JSON Database 中,為要移轉的資料庫集合建立相同的綱要名稱。

    create user sample_airbnb identified by <password>;
    grant connect, resource to sample_airbnb;
    grant unlimited tablespace to sample_airbnb;
    BEGIN
    ORDS_ADMIN.ENABLE_SCHEMA(p_schema => 'SAMPLE_AIRBNB');
    commit;
    END;
    /
    

作業 7:部署 OCI GoldenGate

  1. 移至 OCI 主控台,瀏覽至 Oracle DatabaseGoldenGate部署,然後按一下建立部署

    對於 MongoDB 至 Oracle Autonomous JSON Database,我們需要將技術選取為大數據,並將部署類型選取為資料複製

    圖像

    圖像

  2. 從 OCI 主控台預先建立管理員使用者登入與管理的加密密碼。

    圖像

    圖像

    圖像

作業 8:建立 MongoDB 和 Oracle Autonomous JSON Database 的連線

  1. 移至 OCI 主控台,瀏覽至 Oracle DatabaseGoldenGate連線,然後按一下建立連線

    圖像

  2. 輸入下列資訊 (如影像中所示),以建立來源資料庫連線。

    圖像

  3. 重複步驟 1 並輸入影像中所示的下列資訊,以建立目標資料庫連線。

    圖像

作業 9:指定並測試 OCI GoldenGate 部署的連線

  1. 移至 OCI 主控台,瀏覽至 Oracle DatabaseGoldenGate連線,然後按一下在 Task 8 中建立的連線。

  2. 按一下指派的部署指派部署

    圖像

  3. 選取部署,然後按一下指派部署

    圖像

  4. 按一下三個點和測試連線,確定連線成功。

    圖像

    圖像

工作 10:建立 Extract 和 Replicat 處理作業

  1. 移至 OCI 主控台,瀏覽至 Oracle DatabaseGoldenGate部署,然後按一下在任務 7 中建立的部署。

    按一下啟動主控台,這將會開啟 OCI GoldenGate 組態主控台。

    圖像

  2. 輸入建置期間所建立的使用者名稱密碼

    圖像

    登入主控台頁面後,您可以看到擷取Replicat 組態的所有必要選項。您可以建立 Extract 和 Replicat 服務,如後續步驟所示。

  3. 設定擷取處理程序。

    選取已為來源 MongoDB 資料庫建立的連線別名

    圖像

    圖像

    參數檔中,sample_airbnb 是 MongoDB 中的資料庫,* 代表該資料庫中的所有集合。

    圖像

  4. 設定 Replicat 處理作業。

    1. 選取 Classic Replicat 作為 Replicat 類型

      圖像

    2. 輸入下列必要資訊。

      您必須選取擷取處理建立時已命名的相同軌跡檔案名稱。選取目標作為 Oracle Autonomous JSON Database ,然後輸入已在「工作 8」中建立的連線別名

      圖像

      Replicat 處理作業會將 MongoDB 中 sample_airbnb 資料庫的所有交易複製到 Oracle Autonomous JSON Database 中的 sample_airbnb 綱要。

      圖像

    注意:您必須在組態中分別變更來源和目標資料庫名稱和綱要名稱。

  5. 完成 Extract 和 Replicat 處理作業組態之後,請相應地啟動處理作業。

    注意:Oracle Autonomous JSON Database 必須設定專用端點。如果憑證未使用,您可以像不使用雙向 TLS (mTLS) 一樣變更認證。

    如果沒有正確的證明,複製日誌檔中可能會發生下列錯誤:

    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    

    圖像

任務 11:開始擷取與複製處理並驗證

按一下管理服務,檢查處理狀態及其個別報表和日誌檔是否有任何問題。

圖像

作業 12:測試資料同步化

  1. 在來源和目標中,使用下列命令插入部分資料之前,請先檢查集合詳細資訊中的文件計數。

    • 來源資料庫:

      show dbs
      use sample_airbnb
      show collections
      db.emp.countDocuments()
      

      圖像

    • 目標資料庫:

      show dbs
      use Sample_airbnb
      show collections
      db.emp.countDocuments()
      

      圖像

  2. 請使用下列命令檢查來源和目標資料庫的資料。

    • 來源資料庫:

      db.emp.find({"name":"joe"})
      db.emp.find({"name":"John"})
      

      圖像

    • 目標資料庫:

      db.emp.find({"name":"joe"})
      db.emp.find({"name":"John"})
      

      圖像

  3. 在來源上插入資料,並使用下列命令檢查是否已將資料複製到目標。

    • 來源資料庫:

      dm.emp.insertOne(
      { "name":"John","job":"Data Analyst","Salary":7000})
      db.emp.countDocuments()
      db.emp.find({"name":"John"})
      

      圖像

    • 目標資料庫:

      show DBs
      show collections
      db.emp.find({"name":"John"})
      

      圖像

      圖像

      圖像

工作 13:連線至 MongoDB Atlas

連線至 MongoDB Atlas 與連線至內部部署 MongoDB 資料庫不同。

注意:請確定建立 NAT 閘道,並連附 OCI GoldenGate 部署目前使用的專用子網路,以及是否需要在公用網路中建立連線。

圖像

連線問題造成的常見錯誤

目標 Oracle Autonomous JSON Database 的連線問題在啟動複製處理作業時可能會導致其他錯誤:

認可

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center