1. redis-dump コマンドを使用する方法
- Ruby のインストール(Rocky Linux 9)
dnf -y install ruby ruby-devel
- Rubygems のデフォルトミラーを変更
# 登録済みミラーの確認
gem sources
# 公式ソースの削除
gem source -r https://rubygems.org/
# 腾讯雲ミラーの追加
gem source -a http://mirrors.tencent.com/rubygems/
- redis-dump のインストール
gem install redis-dump -V
- データのエクスポート
redis-dump -u password@10.32.161.130:6379 > redis_6379.json
- JSONデータのインポート
< redis_6379.json redis-load -u password@10.32.161.130:6379
- クラスター環境でのエクスポート(各ノード個別実行)
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
- クラスター環境でのインポート(各ノード個別実行)
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 ファイルを利用する方法
- AOF 機能が有効な Redis インスタンスの
appendonly.aof ファイルをターゲットインスタンスにコピー
- AOF ファイルをターゲットインスタンスに適用
redis-cli -h 10.32.161.130 -a password --pipe < appendonly.aof
3. RDB ファイルを利用する方法
- ソースインスタンスで AOF 機能を無効化
- RDB ファイルを生成するコマンドを実行
redis-cli -h 10.32.161.130 -p 6379 -a password save
- ソースインスタンスの Redis サービスを停止
- ソースインスタンスの
dump.rdb ファイルをターゲットインスタンスのデータディレクトリにコピー後、Redis サービスを再起動(ファイル名は dump.rdb に統一)
systemctl restart redis
4. 特定キーの同期方法
- 同期用スクリプトの作成
#!/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
- スクリプトの実行
chmod +x redis-sync.sh
./redis-sync.sh