7.さまざまな災害でエンタープライズレベルのredisデータバックアップとデータリカバリを行う方法を教えてください。

1.エンタープライズレベルの永続的な構成戦略

企業では、RDB生成戦略はデフォルトとほぼ同じです

60 10000を節約:RDBができる限り最大1分のデータを失うことを確認したい場合は、1分ごとにスナップショットを生成してみてください。低ピーク期間中、データの量は少なく、不要です

10000-> RDBを生成、1000-> RDB、独自のアプリケーションとビジネスデータに従って、自分で決定

AOFをオンにする必要があります、fsync、毎秒

auto-aof-rewrite-percentage 100:現在のAOFサイズが前回の100%を超え、前回の2倍になった
auto-aof-rewrite-min-size 64mb:データ量に応じて、16mb、32mb

 

2.エンタープライズレベルのデータバックアップソリューション

RDBはコールドバックアップに非常に適しています。世代ごとに、変更はありません。

データバックアップソリューション

(1)データバックアップを実行するcrontabスケジュールスケジューリングスクリプトを記述します
(2)RDBバックアップを1時間ごとにコピーしてディレクトリに移動し、最後の48時間のバックアップのみを保持します
(3)毎日のRDBのコピーを毎日保持しますバックアップ、ディレクトリに移動し、最新の月のバックアップのみを保持し
ます(4)バックアップをコピーするたびに、古いバックアップを削除します
(5)バックアップして、現在のサーバー上のすべてのデータを毎晩送信しますリモートクラウドサービスに移動する

/ usr / local / redis

1時間ごとにコピーしてバックアップし、48時間前にデータを削除する

crontab -e

0 * * * * sh /usr/local/redis/copy/redis_rdb_copy_hourly.sh

redis_rdb_copy_hourly.sh

#!/ bin / sh 

cur_date = `date +%Y%m%d%
k` rm -rf / usr / local / redis / snapshotting / $ cur_date 
mkdir / usr / local / redis / snapshotting / $ cur_date 
cp / var / redis / 6379 / dump.rdb / usr / local / redis / snapshotting / $ cur_date 

del_date = `date -d -48hour +%Y%m%d%
k` rm -rf / usr / local / redis / snapshotting / $ del_date

  

1日に1回コピーする

crontab -e

0 0 * * * sh /usr/local/redis/copy/redis_rdb_copy_daily.sh

redis_rdb_copy_daily.sh

#!/ bin / sh 

cur_date = `date +%Y%m%d` 
rm -rf / usr / local / redis / snapshotting / $ cur_date 
mkdir / usr / local / redis / snapshotting / $ cur_date 
cp / var / redis / 6379 / dump.rdb / usr / local / redis / snapshotting / $ cur_date 

del_date = `date -d -1month +%Y%m%d` 
rm -rf / usr / local / redis / snapshotting / $ del_date
1日に1回、すべてのデータをリモートクラウドサーバーにアップロードする

3.データ復旧計画

(1)redisプロセスがハングした場合は、redisプロセスを再起動し、AOFログファイルに基づいてデータを直接復元します

これ以上のデモはありません。AOFデータリカバリの部分で、デモ、fsync毎秒、最大1秒が失われます

(2)redisプロセスが配置されているマシンがハングした場合、マシンを再起動した後、redisプロセスを再起動して、AOFログファイルに基づいて直接データリカバリを実行してください。

AOFは破損しておらず、AOFに基づいて直接回復することもできます

AOF追加のみ、順次書き込み、AOFファイルが破損している場合は、redis-check-aof修正を使用

(3)redis内の最新のAOFおよびRDBファイルが失われた/破損した場合、現在マシン上にある最新のRDBデータのコピーに基づいてデータを復元することができます

現在の最新のAOFおよびRDBファイルは、回復できないために失われている/損傷している。一般に、人為的なマシンの誤動作ではない

ビッグデータシステム、hadoop、hadoopに保存されている多数のデータファイルに対応するディレクトリを誤って配置した人、rm -rf、私の友人の小さな会社、操作とメンテナンスが信頼できず、アクセス許可があまり良くありません。

/ var / redis / 6379の下のファイルが削除されました

最新のRDBバックアップを見つけます。時間レベルのバックアップは問題ありません。時間レベルのバックアップは最新である必要があります。redisにコピーすると、1時間のデータに復元できます

災害復旧訓練

appendonly.aof + dump.rdb、データを回復するためにappendonly.aofを優先しますが、redisによって自動的に生成されたappendonly.aofにはデータがないことがわかりました

次に、私たち自身のdump.rdbにはデータがありますが、明らかに私たちのデータは使用されていません

redisが起動すると、メモリ内のデータに基づいて自動的にリベースし、空のデータを直接使用して最新のRDBスナップショットを生成し、データを上書きし、過去のdump.rdbをコピーします

redisを停止したら、appendonly.aofを実際に削除してから、dump.rdbをコピーして、redisを再起動する必要があります。

appendonly.aofを削除しても非常に簡単ですが、AOF永続性がオンになっているため、ファイルがそこになくてもredisはまずAOFに基づいて復元し、次に新しい空のAOFファイルを作成します

Redisを停止し、構成内のAOFを一時的に閉じてから、RDBのコピーをコピーしてから、Redisを再起動します。データを回復できますか、それを回復できますか

脳が熱くなったら、redisをオフにし、手動で構成ファイルを変更し、aofを開いて、redisを再起動します。データがなくなり、aofファイルが空になり、すべてのデータがなくなります

データ損失の場合、AOFとRDBを二重に保ちながら、RDBコールドバックアップに基づいてデータを完全に復元する方法

redisの停止、aofのクローズ、rdbバックアップのコピー、redisの再起動、データ回復の確認、コマンドラインでのredis設定の直接変更、aofのオープン、このredisはメモリ内のデータに対応するログをaofファイルに書き込みます

このとき、aofとrdbの2つのデータファイルのデータが同期されます

config set appendonly yes構成パラメーターをホット変更します。構成ファイルの実際のパラメーターは永続的に変更されない可能性があります。redisを再度停止し、手動で構成ファイルを変更し、aofコマンドを開いて、redisを再起動します。

(4)現在のマシン上のすべてのRDBファイルが破損している場合は、リモートクラウドサービスから最新のRDBスナップショットをプルしてデータを回復します

(5)たとえば、特定の時間オンラインになったプログラムがデータを完全に汚染し、データが完全に間違っているなど、重大なデータエラーが見つかった場合は、より早い時点を選択してデータを回復できます。

たとえば、コードは12時にオンラインになり、コードにバグがあることが判明したため、コードによって生成されたすべてのキャッシュデータがredisに書き込まれましたが、すべて間違っていました。

11ポイントのRDBのコールドバックアップを見つけ、上記の手順に従ってデータを11ポイントに復元しますが、問題ありませんか?

おすすめ

転載: www.cnblogs.com/hg-super-man/p/12716579.html