redisデータの冷却、リカバリ

3634 ワード

redisデータの冷却、リカバリ
データリカバリスキーム(1)redisプロセスがオフになっている場合は、redisプロセスを再起動すればよい.AOFログファイルに直接基づいてデータを復元してプレゼンテーションを行わない.AOFデータがそのブロックを復元し、プレゼンテーションを行った.fsync everysecは、最大1秒の数を失う(2)redisプロセスがマシンでオフになっている場合は、マシンを再起動した後、redisプロセスを再起動しようとする.AOFログファイルに直接基づいてデータ復旧を試みたが、AOFは破損せず、AOFリカバリに直接基づいてもよい.AOF append-only、順次書き込み、AOFファイルが破損した場合、redis-check-aof fix(3)でredisの現在の最新のAOFとRDBファイルに紛失/破損が発生した場合、では、このマシン上の現在の最新のRDBデータコピーに基づいてデータリカバリを試みることができる.
現在の最新のAOFとRDBファイルはすべて紛失/破損して回復できないまで現れて、普通は機械の故障ではありませんて、人為的なrm-rfはちょっと、/var/redis/bin/drum.rdbファイルはRDBの最新の1部のバックアップを探し当てて、時間級のバックアップはできて、時間級の肯定は最新で、copyはredisの中に行って、ある1時間のデータに回復することができます
(4)現在のマシン上のすべてのRDBファイルが破損している場合、リモートのクラウドサービスから最新のRDBスナップショットを引き出してデータを復元する
(5)重大なデータエラーが発見された場合、例えばある時間にオンラインになったプログラムが一気にデータを全部汚染し、データが全部間違っていた場合、あるより早い時点を選択し、データを復元する例を挙げると、12時にコードをオンラインにし、コードにバグが発見され、コード生成を招いたすべてのキャッシュデータがredisに書き込まれ、全部間違って11時のrdbの冷備を見つけて、上の手順に従って、11時のデータに復元すればいいのではないでしょうか.
災害対応訓練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ファイル、すべてのデータはまたデータの安全が失われた情況の下で、rdbの冷備に基づいて、どのように完璧にデータを回復して、同時にaofとrdbの双開停止redisを維持して、aofを閉じて、rdbのバックアップをコピーして、redisを再起動して、データの回復を確認して、直接命令行の熱でredisの配置を修正して、aofを開いて、このredisはメモリのデータに対応するログを、aofファイルに書き込むとaofとrdbの2つのデータファイルのデータが同期してredis config set熱修正構成パラメータが、プロファイルの実際のパラメータが永続化されていない可能性があり、再びredisを停止し、手動でプロファイルを修正する
データのバックアップと実戦の再開この実戦は、前のlinuxシステムredisのインストール手順に基づいている[https://blog.csdn.net/weixin_43606738/article/details/100032285]shellスクリプトタスクを使用する必要があります.redisのrdbファイルを指定したフォルダに1時間ごとにコピーしてログアーカイブします.redisでtaskディレクトリとrdbkogsディレクトリを作成します.
mkdir/usr/local/redis/task mkdir/usr/local/redis/rdbkogs
taskディレクトリの下
  • スクリプト作成
  • touch redis_rdb_task_hourly.sh直接viこのファイルが保存されていない場合にこのファイルvi redis_を生成することもできます.rdb_task_hourly.sh
  • スクリプトコンテンツを1時間ごとにバックアップする
  • #!/bin/sh
    cur_date= date +%Y%m%d%H
    rm -rf/usr/local/redis/rdblogs/$cur_date
    mkdir/usr/local/redis/rdblogs/$cur_date
    cp/usr/local/redis/bin/dump.rdb/usr/local/redis/rdblogs/$cur_date
    del_date= date -d -48hour +%Y%m%d%H rm -rf/usr/local/redis/rdblogs/$del_date
    以上の内容の相を説明します:#変数curを定義しますdateが現在時刻2019082308年月日に等しい場合は自分で定義#実行コマンド指定フォルダを削除#指定名称のフォルダを作成#指定ファイルを指定フォルダ内にコピー#定義変数が現在時刻-48時間に等しい場合#その時間に命名されたファイルを削除
    これで簡単なshellスクリプトが実行されます./redis_rdb_task_hourly.shは以上を実行する
    毎日1回実行
    vi redis_rdb_task_day.sh内容:#!/bin/sh cur_date= date +%Y%m%d rm -rf/usr/local/redis/rdblogs/$cur_date
    mkdir/usr/local/redis/rdblogs/$cur_date
    cp/usr/local/redis/bin/dump.rdb/usr/local/redis/rdblogs/$cur_date
    del_date=date -d -1month +%Y%m%d#先月のバックアップrm-rf/usr/local/redis/rdblogs/$delを削除date
  • タイミングタスク実行コマンド
  • を追加する.
    crontab -e
    crontab構造は左から[分][時間][毎月のある日][毎年のある月][毎週のある日][実行するコマンド]の順である.
    次の内容を追加
    #0***sh/usr/local/redis/task/redis_を1時間ごとにバックアップrdb_task_hourly.sh#1日1回0 0**sh/usr/local/redis/redis_rdb_task_day.sh
    データ復旧仮定/usr/local/redis/bin/でのdump.rdbが誤って削除されたAOF永続化がオンでない場合は、/usr/local/redis/rdblogs/ディレクトリの下に最新のrdbバックアップファイルを直接見つけ、/usr/local/redis/bin/ディレクトリの下にコピーします.
    AOF持続化をオンにすると、災害対応の訓練手順に従って実行されますが、実際には最新のバックアップファイルをredis起動時に読み取ることができるように工夫されています.