IBM Cloud Docs
Databases for Redis へのマイグレーション

Databases for Redis へのマイグレーション

データ・マイグレーションが必要な場合

次のメジャーバージョンのDatabases for Redisにアップグレードする際に、永続化されたデータを絶対に保持しなければならない場合は、すべてのデータを正常に移行するための手順を踏んでください。 すべてのキーと値のペアを新規デプロイメントにコピーします。 このことは、ユース・ケースに適した方法を使用して、旧インスタンスから新しいデプロイメントに対して行います。

Databases for Redisは、このプロセスを簡単にするための未サポートのサンプルスクリプトを提供しています。

マイグレーション・スクリプト

警告! このスクリプトはサポートされず、バージョンアップの一環として Databases for Redis のデータをインスタンス間で移動するためにどのようなものを作成できるかの例として存在します。 この文書に添付されているすべてのソース・コードとバイナリを、ここでは「プログラム」と呼びます。 IBM はこのプログラムに対していかなる種類のプログラム・サービスも提供しません。 IBM はこのプログラムを現存するままの状態で提供し、いかなる保証も提供しません。 IBM は、IBM の予見の有無を問わず発生した直接損害、特別損害、付随的損害、間接損害およびその他の拡大損害 (逸失利益または節約すべかりし費用を含む) については責任を負いません。

古いDatabases for Redisデプロイメントから新しいバージョンにデータをコピーするには、GitHubで公開されているシンプルなPythonスクリプトを実行します。 このスクリプトによって、ソース・データベースからすべてのキーが、新しい Databases for Redis デプロイメントにコピーされます。 スクリプトをダウンロードし、Python 3.x がインストール済みであることを確認します。 macOS,ている場合は、「homebrewbrew install python3 実行し、最新バージョンをインストールする。

次に、移行ウィンドウを作成し、メンテナンス中であることをユーザーに知らせます。 こうすることで、すべてのデータを新しいDatabases for Redisデプロイメントに移行する時間ができます。 Redisをキーバリューストアとして使用し、キーに有効期限を設定している場合、これらの有効期限は新しいデータベースにコピーされます。 ここで示す例ではデータベースのキーは 1,000 万件ありますが、帯域幅によってはマイグレーションにそれほど時間はかかりません。

宛先とソースのデータベースの資格情報の取得

UI での宛先およびソース・データベースの資格情報の取得

ここで、古いソースデータベースと新しいDatabases for Redisデプロイメントの両方の認証情報を用意します。 「リソース」ページからデータベースを選択して、両方の Databases for Redis デプロイメントの資格情報を取得します。 次に、 「サービス資格情報」 リンクをクリックします。 そこから、[New credential]をクリックして、宛先データベースの新しいクレデンシャルを作成します。 ソース用に作成した資格情報を使用します。

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>

これで、宛先とソースのデータベースに関して必要な情報を得ることができました。

スクリプトを実行し、データをマイグレーションします。

両方のデータベース(ソースと新しいDatabases for Redis宛先)の認証情報がすべて揃ったので、「pymigration.py スクリプトを実行する準備ができた。 前のステップの資格情報を使用して、端末からコードを実行します。

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データベース以外のソースからデータをコピーしているため、Databases for RedisデータベースがSSL/TLSを有効にしている場合は「--sslsrc フラグを追加する。 それ以外の場合、フラグは追加しません。

これにより、Redis が確実に SSL/TLS が有効なデータベースに接続するようにします。 また、宛先データベースが新しい Databases for Redis デプロイメントであり、これも SSL/TLS が有効になっているため、 --ssldst を追加します。

追加する可能性がある補足フラグは、 --db および --flush です。 --db は、鍵のコピー元のデータベースを示します。これは、新しいデプロイメントで鍵がコピーされたデータベースです。

--flush フラグは、ソース・データベースからキーをインポートする前に、デスティネーション・データベースをフラッシュする。 新しいデプロイメントで新鮮さを保ちたい場合は、'--flush ですべてのキーを削除してから、ソースデータベースから新しいキーをインポートします。

データ移行元として「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

このスクリプトは、1000 万個の鍵を OldDB から NewDB にコピーしました。 OldDB データベース上で削除されたキーはありません。 OldDB 配置に新しいキーを追加し、データを再度移行しようとすると、移行先のキーカウントが10000000に変更されていることに気づく。

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

次のステップ

データ移行後、アプリケーションのデータベース接続文字列を、新しい接続文字列と認証情報で入れ替えます。