移轉至 Databases for Redis

如果您需要資料移轉

升級至下一個 Databases for Redis主要版本時,如果您絕對必須保留持續保存的資料,請採取步驟以順利移轉所有資料。 將所有鍵值組複製到新部署。 使用適合您使用案例的方法,從舊實例執行此動作至新部署。

Databases for Redis 提供不受支援的範例 Script 來協助簡化此處理程序。

移轉 Script

警告! 此 Script 不受支援,並且作為您可以建置以在版本升級期間將 Databases for Redis 資料從一個實例移至另一個實例的範例而存在。 本文件所附加之所有原始碼及二進位檔在這裡稱為「本程式」。 IBM 不會為「本程式」提供任何類型的程式服務。 IBM 係依「現狀」提供「本程式」,不提供任何保證。 IBM 對於任何實際、直接、特殊、附帶或間接損害,或任何衍生性經濟損害 (包括利潤損失或儲蓄損失),或 IBM或其轉銷商已被告知這類損害的可能性,概不負責。

將資料從舊 Databases for Redis 部署複製到新版本涉及執行簡式 Python Script 在 GitHub 上可用。 該 Script 會將來源資料庫中的所有金鑰複製到新的 Databases for Redis 部署。 下載 Script 並確定您已安裝 Python 3.x。 如果您使用的是macOS,請使用 homebrew 運行命令 brew install python3 來安裝它,這將為您提供最新版本。

接下來,建立移轉視窗,讓您的使用者知道您正在進行一些維護。 這樣您就有時間將所有資料移轉至新的 Databases for Redis 部署。 如果您使用 Redis 作為金鑰值儲存庫,並在金鑰上具有到期時間,則會將這些到期時間複製到新的資料庫。 我們的範例在資料庫中使用一千萬個金鑰來執行此動作,根據您的頻寬,移轉所花費的時間不會太多。

取得目的地及來源資料庫認證

在使用者介面中取得目的地及來源資料庫認證

現在,具有舊來源資料庫及新 Databases for Redis 部署的認證。 從「資源」頁面中選取資料庫,以取得 Databases for Redis 部署的認證。 然後,按一下 服務認證 鏈結。 從該處按一下 新建認證,為目的地資料庫建立新的認證。 使用您為來源建立的任何認證。

在 CLI 中取得目的地及來源資料庫認證

使用 Cloud Databases CLI 外掛程式,取得目的地及來源資料庫認證。

執行類似下列的指令:

ibmcloud cdb deployment-connections <INSTANCE_NAME_OR_CRN>

這為您提供包含主機名稱和埠的 Databases for Redis 連線 URI。 若要取得資料庫的已解碼 CA 憑證,請執行:

ibmcloud cdb deployment-cacert <INSTANCE_NAME_OR_CRN>

在 CA 憑證解碼之後,請將它儲存至檔案,稍後再連接至資料庫。 如果您不知道部署的密碼,請從產生的服務認證取得它,或執行下列指令來建立新密碼:

ibmcloud cdb deployment-user-password <INSTANCE_NAME_OR_CRN> admin <NEW PASSWORD>

使用此資訊,您具有目的地及來源資料庫所需的項目。

執行 Script 並移轉資料

由於您同時具有資料庫 (來源及新的 Databases for Redis 目的地) 的所有認證,因此您已準備好執行 pymigration.py Script。 使用先前步驟中的認證,從終端機執行程式碼:

python pymigration.py <SOURCE HOST> <SOURCE PASSWORD> <SOURCE PORT>
<DESTINATION HOST> <DESTINATION_USERNAME:DESTINATION_PASSWORD> <DESTINATION PORT>
<DESTINATION CA CERTIFICATE PATH> --sslsrc --ssldst

對於較新版本的Redis作為來源,請使用 <SOURCE USER:SOURCE PASSWORD>

由於您要從Databases for Redis資料庫之外的來源複製數據,--sslsrc 如果您的Databases for Redis資料庫啟用了SSL /TLS。 如果不是,則不要新增旗標。

這可確保 Redis 連接至已啟用 SSL/TLS 的資料庫。 同時新增 --ssldst,因為目的地資料庫是新的 Databases for Redis 部署,這也已啟用 SSL/TLS。

您可能新增的增補旗標為 --db--flush--db 指出從中複製金鑰的資料庫,即它們在新部署中複製到的資料庫。

在從來源資料庫匯入金鑰之前,--flush 旗標會先清除目的地資料庫。 如果您想要在新的部署中保持新鮮,--flush 會刪除所有金鑰,然後從來源資料庫匯入新的金鑰。

執行 Script (使用 OldDB 作為資料移轉的來源,並使用 NewDB 作為已移轉資料的目的地),您會看到如下輸出:

python pymigration.py OldDB.databases.appdomain.cloud OldDBpassword1 88888 NewDB.databases.appdomain.cloud NewDBpassword1 99999 ~/NewDBCA  --sslsrc --ssldst  10000000 keys: 100% |###################################################| Time: 0:00:00 Keys disappeared on source during scan: 0 Keys already existing on destination: 0

此 Script 將一千萬個金鑰從 OldDB 複製到 NewDBOldDB 資料庫上未刪除任何金鑰。 如果您將新的金鑰新增至 OldDB 部署,並再次嘗試移轉資料,則會注意到目的地上的金鑰計數變更為 10000000,因為該資料庫中已存在原始一千萬個金鑰。

10000000 keys: 100% |###################################################| Time: 0:00:00
Keys disappeared on source during scan: 0
Keys already existing on destination: 10000000

下一步

在資料移轉之後,請使用新的連線字串及認證來交換應用程式的資料庫連線字串。