Redis データ移行方法

1. redis-dump コマンドを使用する方法

  1. Ruby のインストール(Rocky Linux 9)
  2. dnf -y install ruby ruby-devel
    
  3. Rubygems のデフォルトミラーを変更
  4. # 登録済みミラーの確認
    gem sources
    
    # 公式ソースの削除
    gem source -r https://rubygems.org/
    
    # 腾讯雲ミラーの追加
    gem source -a http://mirrors.tencent.com/rubygems/
    
  5. redis-dump のインストール
  6. gem install redis-dump -V
    
  7. データのエクスポート
  8. redis-dump -u password@10.32.161.130:6379 > redis_6379.json
    
  9. JSONデータのインポート
  10. < redis_6379.json redis-load -u password@10.32.161.130:6379
    
  11. クラスター環境でのエクスポート(各ノード個別実行)
  12. redis-dump -u password@10.32.161.131:6379 -d 0 > node1.json
    redis-dump -u password@10.32.161.132:6379 -d 0 > node2.json
    redis-dump -u password@10.32.161.133:6379 -d 0 > node3.json
    
  13. クラスター環境でのインポート(各ノード個別実行)
  14. cat node1.json | redis-load -u password@10.32.161.134:6379 -d 0
    cat node2.json | redis-load -u password@10.32.161.134:6379 -d 0
    cat node3.json | redis-load -u password@10.32.161.134:6379 -d 0
    

2. AOF ファイルを利用する方法

  1. AOF 機能が有効な Redis インスタンスの appendonly.aof ファイルをターゲットインスタンスにコピー
  2. AOF ファイルをターゲットインスタンスに適用
  3. redis-cli -h 10.32.161.130 -a password --pipe < appendonly.aof
    

3. RDB ファイルを利用する方法

  1. ソースインスタンスで AOF 機能を無効化
  2. RDB ファイルを生成するコマンドを実行
  3. redis-cli -h 10.32.161.130 -p 6379 -a password save
    
  4. ソースインスタンスの Redis サービスを停止
  5. ソースインスタンスの dump.rdb ファイルをターゲットインスタンスのデータディレクトリにコピー後、Redis サービスを再起動(ファイル名は dump.rdb に統一)
  6. systemctl restart redis
    

4. 特定キーの同期方法

  1. 同期用スクリプトの作成
  2. #!/bin/bash
    redis-cli -h 10.32.161.130 -p 6379 -a password -n 0 keys "*" | while read key
    do
    	redis-cli -h 10.32.161.130 -p 6379 -a password -n 0 --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h 10.32.161.131 -p 6379 -a password -n 1 -x restore $key 0
    	echo "key $key を移行しました"
    done
    
  3. スクリプトの実行
  4. chmod +x redis-sync.sh
    ./redis-sync.sh
    

タグ: redis データ移行 redis-dump RDB aof

7月28日 04:04 投稿