dockerがredisを再起動するとmysqlデータが失われる問題を解決する

dockerがredisを再起動するとmysqlデータが失われる問題を解決する

公式ドキュメント:

したがって、mysql は次のように起動する必要があります。

docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=password -v /windows ドライブ/指定したフォルダ パス:/var/lib/mysql mysql:5.7

レディス:

docker run -p 6379:6379 -d -v /windows ドライブ/指定したフォルダ パス:/data redis:5.0 redis-server --appendonly yes

詳細な手順が記載された公式文書をもっと読む

追加知識: Dockerはコンテナにファイルをマウントし、変更後に変更されないため、再起動する必要があります。

今日、非常に奇妙な現象を発見しました。ホスト上のファイルをdockerにマウントした後、ホスト上のファイルを削除し、同じ名前に変更したファイルを再アップロードしましたが、コンテナ内のファイルは同期されませんでした。

まず Linux についてお話しましょう。Linux のストレージは iNode とブロックに分かれています。iNode は、ファイルのサイズやディスク上の場所などの属性情報を格納します。ブロックは、ファイルの実際の情報を格納する 4k ブロックです。サイズが 4k 未満のファイルも 4k のスペースを占有します。

上記を理解した上で、docker について説明しましょう。docker にマウントされたファイルは、実際には docker が記憶している iNode です。この iNode を通じて、ブロック、つまり実際のファイル情報を見つけることができます。> を使用してリダイレクトを追加してファイルを書き込むと、docker に同期できます。ただし、rm で名前を変更すると、ファイルの iNode は変更されますが、docker 内の iNode は以前のディスクの場所を指しているため、ファイルは変更されていません。

rm の原則: rm は iNode のみを削除します。iNode がないと、ディスク上のブロックを通常の方法で見つけることができません。削除されたように見えますが、ファイル情報はまだ残っています。ファイル情報は、次にここに書き込まれるときに上書きされます。したがって、削除されたデータを回復する方法があります。ただし、ファイルが開いているときに削除すると、ファイルは削除されません。

vim でも同様です。vim ファイルを作成すると、既存のファイルがコピーされます。同じレベルのディレクトリに、. で始まり swp で終わるファイルがあります。保存して終了すると、vim はソースファイルを削除し、このファイルの名前をソースファイルの名前に変更し、iNode も自然に変わります。

上記のdockerでredisを再起動するとmysqlデータが失われる問題を解決する記事は、編集者が皆さんと共有する内容のすべてです。この記事が皆さんの参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Spring Boot は、高同時実行データストレージにおける Redis キャッシュ + MySQL バッチストレージの問題を解決します
  • MySQLとRedis間のデータの一貫性を確保する方法
  • PythonはMysqlから定期的にデータを抽出し、Redisに保存します
  • PHPとRedis+MySQLを組み合わせたホット・コールドデータ交換の応用事例を詳しく解説
  • PHP の Laravel フレームワークと MySQL および Redis データベースのデプロイメントを組み合わせたもの
  • MySQLからRedisにデータベースを移行する方法
  • Python を MySQL、MongoDB、Redis、memcache などのデータベースに接続する方法
  • MySQL と Redis 間のデータ一貫性の問題

<<:  JS配列の一般的な方法とテクニックを学び、マスターになりましょう

>>:  XHTML 1.0 リファレンス

推薦する

CSS でよく発生する問題の整理 (ロゴのハッキング/コンテナの固定/画像の垂直方向の中央揃え)

1. IEブラウザモードハックロゴ1. CSSハックロゴコードをコピーコードは次のとおりです。 ie...

Vueは買い物数量を変更できるショッピングカートを実装します

この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...

HTML チュートリアル、optgroup 要素の理解

カテゴリ選択を選択します。テストの結果、IE と FF はこの要素を適切にサポートできることがわかり...

react-virtualized を使用して、動的な高さを持つ画像の長いリストを実装する

目次開発中に発生した問題解決具体的な実装実績まとめバーチャルリストは、スクロールコンテナ要素の表示領...

単一のdivの正多角形変換を実現する純粋なCSS

前回の記事では、beforeとafterの擬似要素を使用してMaterial Designスタイルの...

データベースミドルウェアMyCatの紹介

1. Mycatの適用シナリオMycat は幅広いシナリオに合わせて開発されており、新しいユーザーが...

Vueモバイル端末の適応化問題の詳細説明

1. vue uiでプロジェクトを作成する 2. 基本設定項目を選択する 3. プロジェクトを実行す...

コンテンツ領域の周囲を回転する CSS 動的グラデーション ボーダーの効果 (サンプル コード)

レンダリング ネットで関連情報を調べたところ、現在のダイナミックグラデーションボーダーの実装方法のほ...

MySQLデータベースについて学びましょう

目次1. データベースとは何ですか? 2. データベースの分類は? 3. データベースとデータ構造の...

MySQLユーザー権限テーブルについての簡単な説明

MySQL はインストール時に自動的に mysql という名前のデータベースを作成します。mysql...

ウェブサイトのユーザビリティを向上させる10のヒント

企業の Web サイト、個人のブログ、ショッピング Web サイト、ゲーム Web サイトなど、どの...

MySQL 5.7.17 zip パッケージ バージョンを Windows 10 にインストールするチュートリアル

mysql5.7.17のインストールチュートリアルを参考までに共有します。具体的な内容は次のとおりで...

Reactでコンポーネントがどのように通信するかの詳細な説明

1. 何ですかコンポーネント間の通信は、次の 2 つの単語に分けることができます。コンポーネントコ...

ウェブインターフェースデザインでウェブサイトのスタイルガイドを作成する方法(画像とテキスト付き)

スタイル ガイドとは何でしょうか? 簡単に言えば、ストーリーを伝える方法を説明するドキュメントです。...

MySQL の結合テーブルにインデックスを作成する方法

この記事では、MySQL で 2 つのテーブルを関連付ける結合テーブルにインデックスを作成する方法を...