Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

データベースの永続性とバックアップの重要性

最近、Cohesityチームと協力して、Redisテクニカルパートナープログラムへのオンボーディングのステップとして、HeliosとRedisEnterpriseの統合を検証する機会がありました。 Helios上で実行されるサービスであるCohesitySmartFilesは、データが存在する場所に関係なく、非構造化データの単一のビューとグローバル管理を提供します。 Redis Enterpriseのコンテキストでは、SmartFilesはデータベーススナップショットの単一のビューを提供します。

なぜ永続性とバックアップに悩むのですか?確かに、Redisがキャッシュとして使用され、システムへの影響を最小限に抑えてバックエンドデータベースから再水和できる場合は、どちらも必要ありません。一方、Redisを運用データベースとして使用して、低速データへの高速アクセスを提供する場合を検討してください(トランザクション履歴、在庫数、顧客検索など)。 Redisデータベースは、ハードウェアの問題から迅速に回復するか、別のデータセンターにフェイルオーバーする必要があります。

永続性

Redisデータベース内のすべてのデータは、RAMまたはRAM +フラッシュメモリ(Redis on Flash)のいずれかに排他的に保存および管理されます。プロセスまたはサーバーに障害が発生すると、失われるリスクがあります。このリスクを軽減するために従うことができるいくつかの戦略があります。プライマリおよびセカンダリデータシャードを備えた高可用性(HA)データベース、地理的に分散されたアクティブ-アクティブデータベース、そしてもちろんディスクベースの永続性。パフォーマンスの観点から、プライマリデータベースシャードから同期されたセカンダリデータベースシャードにフェールオーバーすることが常に推奨されます。これがRedisEnterpriseの動作方法です。プライマリシャードとセカンダリシャードが失われた場合にのみ、データベースがディスクから復元されます。同様に、データセンターに障害が発生した場合、別のデータセンターにある同期されたアクティブ-アクティブデータベースへのフェイルオーバーは、ディスクからのリカバリよりも高速になります。

永続性の問題に対して、Redisは、より多くのリソースを必要とするが、耐久性を向上させるために追加専用ファイル(AOF)をサポートし、スナップショット(RDB)は、より少ないリソースを必要とし、耐久性が低くなります。すべてのものと同様に、RedisEnterpriseのドキュメントでさらに詳しく調べることができるトレードオフがあります。この記事では、耐久性を高めるためにAOFが必要であると想定します。

データベースの永続性とバックアップの重要性 バックアップ

Redis Enterpriseは、プライマリデータベースシャードとセカンダリデータベースシャードの両方が失われた場合のリカバリを永続性に依存しています。アクティブ-アクティブが使用されておらず、データベースと接続されたストレージを収容しているラックが失われた場合、バックアップからの復元が残ります。 Redis Enterpriseの場合、バックアップは常にスナップショットであり、永続性のためにAOFと組み合わせると、復元力と耐久性のあるデータプラットフォームが作成されます。

ここでCohesitySmartFilesが役立ちます。 Redis Enterpriseは、SmartFilesが提供するS3互換エンドポイントを利用して、クラウド全体の管理されたバックアップを実現します。これを設定するには、次の前提条件でRedis EnterpriseRESTAPIを使用します。

  • $S3_IPはCohesityS3オブジェクトストアのIPアドレスに設定され、$BUCKETはバケット名に設定されます
  • $USERと$PASSは、それぞれRedisEnterprise管理者のユーザー名とパスワードに設定されます
  • $ACCESS_KEYと$SECRET_KEYは、それぞれS3オブジェクトストアのアクセスキーとシークレットキーに設定されています

データベースの永続性を有効にします。

curl -s -k -u $USER:$PASS -H content-type:application/json -XPUT 
https://localhost:9443/v1/bdbs/1 -d '{"data_persistence": "aof"}'

S3 URLを設定して、S3オブジェクトストアを使用するようにクラスターを設定します。バケット名はS3URLに含まれていないことに注意してください。

curl -s -k -u $USER:$PASS -H content-type:application/json -X PUT 
https://localhost:9443/v1/cluster -d '{"s3_url": '\"$S3_IP\"'}'

プライバシーのみを目的としてクラスターS3バックアップを構成します。

curl -s -k -u $USER:$PASS -H content-type:application/json -X PUT 
https://localhost:9443/v1/cluster -d 
'{"s3_certificate_verification":false}'

バックアップの場所を検証します。成功した場合の唯一の応答はHTTP200OKであることに注意してください。

curl -s -k -u $USER:$PASS -H content-type:application/json -X POST 
https://localhost:9443/v1/bdbs/actions/validate_backup_location -d 
'{"backup_location": {"type": "s3", "bucket_name": '\"$BUCKET\"', 
"subdir": "","access_key_id": '\"$ACCESS_KEY\"', "secret_access_key": 
'\"$SECRET_KEY\"'}}'

バックアップを作成します。成功した場合の唯一の応答はHTTP200OKであることに注意してください。

curl -s -k -u $USER:$PASS -H content-type:application/json -X POST 
https://localhost:9443/v1/bdbs/1/actions/export -d 
'{"export_location": {"type": "s3", "bucket_name": '\"$BUCKET\"', 
"subdir": "", "access_key_id": '\"$ACCESS_KEY\"', "secret_access_key": 
'\"$SECRET_KEY\"'}}'

30分ごとに定期的なバックアップを構成します。成功した場合の唯一の応答はHTTP200OKであることに注意してください。

curl -s -k -u $USER:$PASS -H content-type:application/json -X PUT 
https://localhost:9443/v1/bdbs/1 -d '{"backup":true, 
"backup_interval":1800, "backup_interval_offset":360, 
"backup_location": {"type": "s3", "bucket_name": '\"$BUCKET\"', 
"subdir": "", "access_key_id": '\"$ACCESS_KEY\"', "secret_access_key": 
'\"$SECRET_KEY\"'}}'
最終的な考え

摩擦のない世界では、HAとActive-Activeで構成されたRedis Enterpriseにより、永続性とバックアップについて心配する必要がなくなります。私たちは摩擦のない世界に住んでおらず、Redisがシステム障害から回復することが期待される場合、永続性とバックアップの両方(およびHA)が必要です。 Dell EMC、NetApp、Pure Storageなどのアプライアンス製品で見られるように、S3バックアップエンドポイントがよく見られます。幸い、Cohesity SmartFilesとの統合が検証されているため、このエンドポイントを簡単に利用でき、運用戦略にバックアップを含めることができます。


  1. Redis ZADD –並べ替えられた設定値に要素を作成して追加する方法

    このチュートリアルでは、redis ZADD を使用して、キーに格納されている並べ替えられた設定値に要素を作成して追加する方法について学習します。 コマンド。 ZADDコマンドは、指定されたキーに格納されているソートされた設定値に、それぞれのスコアを持つ1つ以上の要素を追加するために使用されます。指定された要素がすでに存在する場合、要素のスコアが更新され、要素が正しい位置に再挿入されて、正しい順序になります。スコア値は、倍精度浮動小数点数の文字列表現である必要があります。 + inf および-inf 値は有効な値です。 キーがデータストアに存在しない場合、挿入操作を実行する前

  2. Redis SADD –セットに要素を作成して追加する方法

    このチュートリアルでは、コマンド– SADD を使用して、キーに格納されている設定値に要素を作成および追加する方法について学習します。 redis-cliで。キーがデータストアに存在する場合、指定されたすべての要素がセットに追加されます(すでに存在する要素は無視されます)。そうでない場合は、セットに追加する前に新しいセットが作成されます。 redis SADDコマンドの構文は次のとおりです:- 構文:- redis host:post> SADD <key name> <value 1> [ <value 2> ] 出力:- - (integ