sql >> データベース >  >> NoSQL >> Redis

Redis-Shakeを使用してRedis™データを移行する方法

    ScaleGrid forRedis™*データをあるサーバーから別のサーバーに移行することは、お客様からよく聞かれる要件です。私たちが耳にする主な理由の2つは、多くの場合、ハードウェアの移行、またはサーバー間でデータを分割する必要があるためです。

    通常、標準のRedisツールを使用しながら、最小限のダウンタイムで移行する必要があります。このブログ投稿では、オープンソースツールのRedis-Shakeを使用したプロセスについて説明します。アリババ-クラウドデータベース部門のNoSQLチームによって開発および保守されているRedis-Shakeを使用すると、Redisクラスター間でRedisデータを簡単に移行できます。このガイドは、ScaleGrid forRedis™*のデプロイメントを対象としていますが、このガイドは、若干の変更を加えて、他のタイプのRedisデプロイメントにも使用できます。

    これ以上面倒なことはせずに、移行ガイドを始めましょう!

    前提条件

    移行を実行するには、LinuxまたはWindowsマシンが必要です。 (必要に応じて、これはソースマシンまたはターゲットマシンのいずれかになります。)

    続行する前に確認する重要なことは、現在、Redis-ShakeがSSL対応クラスターをサポートしていないことです。ソースクラスターとターゲットクラスターの両方でSSLが有効になっていないことを確認してください。

    ファイアウォールルール

    Linux / Windowsマシンがソースクラスターとターゲットクラスターの両方に接続できるようにするために、ファイアウォールルールが作成されていることを確認してください。 ScaleGridでこれを設定する方法の詳細については、このリンクを参照してください。

    Redis-Shakeをダウンロード

    このリンクから最新/安定バージョンを選択した後、Linux/WindowsマシンでRedis-Shakeをダウンロードして解凍します。以下のコマンドを使用して、本日現在の最新バージョン(v2.1.1)をダウンロードすることもできます。

    wget https://github.com/alibaba/RedisShake/releases/download/release-v2.1.1-20210903/release-v2.1.1-20210903.tar.gz
    tar -xvzf release-v2.1.1-20210903.tar.gz
    cd release-v2.1.1-20210903/
    

    次に、Redis-Shakeの2つの異なるユースケースを紹介します。

    • スタンドアロンおよびマスタースレーブからのデータの移行
    • クラスターモードでのデータの移行

    データの移行–スタンドアロンおよびマスタースレーブ

    このセクションでは、これらのさまざまな設定でデータを移行する方法を説明します。

    • スタンドアロンからスタンドアロン
    • マスタースレーブからマスタースレーブへ
    • スタンドアロンからマスタースレーブ(およびその逆)

    1。情報を収集する

    ソースクラスターとターゲットクラスターの両方のクラスター詳細ページの[概要]タブから、次の情報を書き留めます。

    • ホスト名 :接続文字列の形式は[hostname:port]です。次のようになります: EX-redms-00-redis-master.example.domain.io
      • (マスタースレーブクラスターの場合は、マスターに接続します)。
    • ポート :6379
    • パスワード :パスワードを見つけて、コンソールの[資格情報]からリセットできます

    2。構成ファイルの編集

    メインフォルダーにある「redis-shake.conf」ファイルを開き、次の変数を編集します。

    source.type=スタンドアロン
    source.address = :6379
    source.password_raw =

    target.type=スタンドアロン
    target.address = :6379
    target.password_raw =

    3。データの同期

    次のコマンドを実行して、ソースクラスターとターゲットクラスターの間でデータを同期します。

    $ ./redis-shake -type sync -conf redis-shake.conf

    4。ログを待つ

    ログに次の情報が表示されるまで待ちます:

    syncrdbが完了しました。

    これは、完全同期が完了し、増分同期が開始されることを意味します。

    5。インクリメンタル同期を停止する

    + writeBytes =0の場合 が長い間見られる場合、それは新しいデータがインクリメントされないことを意味します。 Ctrl + C を押すと、増分同期を停止できます。 。次のようになります:

    sync:+ forwardCommands =0 + filterCommands =0 + writeBytes =0

    6。キーの数を一致させる

    このリンクをたどってヘルプドキュメントにアクセスすると、redis-cliを使用して両方のクラスターに接続し、 infokeyspace<を使用してクラスター間のキーの数を一致させることができます。 / code> 両方のクラスターでコマンドを実行します。

    これで完了です。これで、Redis-Shakeを使用して1つのクラスターから別のクラスターにデータを正常に移行できました。クラスターモードのクラスターがある場合は、このガイドの次のセクションを参照して、そのタイプのクラスターを実行している場合に何をする必要があるかを確認することをお勧めします。

    データの移行–クラスターモード

    このセクションでは、クラスターモードの1つのRedisデプロイメントから別のクラスターにデータを移行する方法を示します。

    1。情報を収集する

    ソースクラスターとターゲットクラスターの両方のクラスター詳細ページの[概要]タブから、次の情報を書き留めます。

    • ホスト名 :接続文字列の形式は、[hostname1:port]、[hostname2:port]、[hostname3:port]です。次のようになります。EX-redms-03-redis-master.example.domain.io、EX-redms-06-redis-master.example.domain.io、EX-redms-09-redis- master.example.domain.io
    • ポート :6379
    • パスワード :パスワードを見つけて、コンソールの[資格情報]からリセットできます

    2。構成ファイルの編集

    メインフォルダーにある「redis-shake.conf」ファイルを開き、次の変数を編集します。

    source.type=クラスター
    source.address = :6379; :6379; :6379
    source.password_raw =

    target.type=スタンドアロン
    target.address = :6379; :6379; :6379
    target.password_raw =

    3。データの同期

    次のコマンドを実行して、ソースクラスターとターゲットクラスターの間でデータを同期します。

    $ ./redis-shake -type sync -conf redis-shake.conf

    4。ログを待つ

    ログに次の情報が表示されるまで待ちます:

    syncrdbが完了しました。

    これは、完全同期が完了し、増分同期が開始されることを意味します。

    5。インクリメンタル同期を停止する

    + writeBytes =0の場合 が長い間見られる場合、それは新しいデータがインクリメントされないことを意味します。 Ctrl + C を押すと、増分同期を停止できます。 。次のようになります:

    sync:+ forwardCommands =0 + filterCommands =0 + writeBytes =0

    6。キーの数を一致させる

    このリンクをたどってヘルプドキュメントにアクセスすると、redis-cliを使用して両方のクラスターに接続し、 infokeyspace<を使用してクラスター間のキーの数を一致させることができます。 / code> 両方のクラスターでコマンドを実行します。

    これで完了です。これで、Redis-Shakeを使用して、クラスターモードの1つのクラスターから別のクラスターにデータを正常に移行できました。 Redis-Shakeとその機能の詳細については、GitHubページにアクセスして詳細を確認し、最新バージョンを入手してください。

    ScaleGridについて詳しく知りたいですか?

    ScaleGrid Hosting forRedis™*がデータベースの管理にどのように役立つかについて詳しくは、ScaleGridServiceforRedis™ページをご覧ください。 Redis™用のScaleGridホスティングにより、データベースの管理ではなく、製品の開発に集中できるようになる方法をご覧ください。

    *RedisはRedisLabsLtdの商標です。その中の権利は、Redis Labs Ltdに帰属します。ScaleGridによる使用は、参照のみを目的としており、スポンサーシップ、承認を示すものではありません。またはRedisとScaleGridの提携。


    1. RedisをHerokuで開始するにはどうすればよいですか?

    2. spring-redisがリモートホストに接続できません

    3. Docker:Dockerボリュームを保存するフォルダーを変更します

    4. ClusterControlを使用してMongoDBを自動化および管理する方法