Redisデータバックアップのリストアとプライマリ・スレーブ・レプリケーション


Redisはメモリ・データベースとして、データ・セキュリティおよびクラスタの導入に関する一連のツールを提供しています.
一.Redisデータベースのデータバックアップとリカバリ
Redisはメモリ型データベースですが、データセキュリティのためには「データ永続化」(ディスクにデータを格納する)というメカニズムが必要で、バックアップにはRDBとAOFの2つのツールが用意されています.
1.RDBバックアップとリカバリ
RDBはスナップショットを利用してデータの永続化を実現し、特定の条件を満たすと、redisはメモリ中のデータを自動的にハードディスクに保存し、redisが起動すると、ディスク上のデータを自動的にメモリにロードしてデータ環境の回復を実現する.
(1)Redis条件でRDBのバックアップを行い、A.プロファイルredisを変更する.conf:
save 900 1    # 900     1          
save 300 10   # 300     10          
save 60 10000 # 60     10000          

dir path #path redis          
dbfilename rdbname #rdb       ( dump.rdb)

B.Redisの再起動
注意:この方法の実装は、Redisのプライマリ・スレッドが条件トリガ後、forkサブプロセス後、サブプロセスでデータ永続化を完了することです.
(2)RedisはRDBバックアップを強制し、以下のようにする.redis-cliでは、以下のコマンドを使用する.
redis-cli>SAVE  #              
  
redis-cli>BGSAVE  #   fork         

2.AOFバックアップとリカバリ
AOF(append only file)は、「redisが実行する各命令をディスクファイルに格納する」ことで、データの永続化を実現します.
(1)AOF機能をオンにするデフォルトでは、RedisはAOFをオンにしないので、この機能を使用するにはredis.confでの構成:
appendonly yes

AOFファイルの保存場所はRDBと同じで、AOFファイルを設定できます.
dir path #      
appendfilename appendonly.aof #aof      aof

AOFの書き換え構成:
auto-aof-rewrite-percentage 100  #     AOF             AOF                  ,         ,      AOF       
auto-aof-rewrite-min-size 64mb   #        AOF    

注意:「書き換え」は、listに対して3つのpushを行ったなど、既存のaofファイルの再書き込みやその他の操作ではなく、既存の命令を簡略化します.
lpush li_key 1
lpush li_key 2
lpush li_key 3

書き直した結果、
lpush li_key 1 2 3

同様に,HASH table,SET,SORTED SETに対しても同様の処理方式である.書き換えることでaofファイルの圧縮を実現した.
もちろん、注意深い友达はAOFの書き換えにredisのリクエストアクセスに影響を与える問題を発見しますが、redisはどのように解決しますか?A.Redisはforkサブプロセスによって書き換えを完了する.B.書き換える時、メモリの中でまずAOFキャッシュを作成し、書き換える同時に、新しい命令を古いAOFファイルとAOFキャッシュに同時に書き込む.C.書き換え完了後、AOFキャッシュの内容をディスクに書き込み、古いAOFファイルに置き換える
(2)AOFバックアップのプロアクティブ化
redis-cli> BGREWRITEAOF

二.データ移行とプライマリ・スレーブ・レプリケーション
1.直接バックアップファイルデータ移行
Redisのデータ移行は比較的簡単で、ステップは以下の通りである:(1)ターゲットRedisサービスを閉じる;(2)対応するRDBファイルまたはAOFファイルを過去にコピーする.(3)REDISのDIRを設定するか、AOF機能をオンにする.(4)ターゲットREDISサービスを起動する;
2.マスターコピー
プライマリサーバ構成redis.conf:
bind 127.0.0.1 192.168.1.158 #   IP              ip

サーバからredisを構成する.conf:
slaveof <masterip> <masterport> #masterip 192.168.1.158 masterport   6379

プライマリ・サーバーとスレーブ・サーバーの起動
また,マスタスレーブレプリケーションによりデータ移行を実現し,ターゲットredisサービスをスレーブサービスに設定し,データ同期を行い,完了後,マスタスレーブ関係をキャンセルしてデータ移行を完了した.