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 リファレンス

推薦する

nginx.pid を開く際の失敗と無効の解決策

目次1. 問題の説明2. 問題分析3. 解決策解決策1: ディレクトリを作成する解決策2: 構成ファ...

Xtrabackup を使用して MySQL をバックアップおよび復元する方法

目次1. バックアップ1.1 万全の準備1.2 追加の準備2 バックアップとリカバリ2.1 データの...

MySQL インデックスの長所と短所、およびインデックス作成のガイドライン

1. インデックスを作成する理由(メリット)インデックスを作成するとシステムのパフォーマンスが大幅に...

Vue3 Vue イベント処理ガイド

目次1. 基本的なイベント処理2. 親コンポーネントにカスタムイベントを送信するマウス修飾子4. キ...

javascript:void(0) の意味と使用例

voidキーワードの紹介まず、void キーワードは JavaScript で非常に重要なキーワード...

IDEA 構成の Tomcat 起動エラーの問題を解決する

異なるサーブレット パスを構成するときに、次の 2 つのエラーが発生しました。 java.lang....

バックエンドから返される 100,000 個のデータをフロントエンドでより適切に表示するにはどうすればよいですか?

目次予備作業バックエンド構築フロントエンドページダイレクトレンダリングsetTimeout ページン...

2 級コンピュータ試験のための MySQL の知識ポイントとよく使用される MYSQL コマンド

2級コンピュータ試験のMySQL知識ポイントの基礎、一般的なMYSQLコマンドは次のとおりです。よく...

VUEの基本を理解するのに役立つ記事

目次VUEとはVueのコアプラグインVueルーターヴュークスアクシオス要素UI Vue フロントエン...

Docker で Rancher をデプロイする方法 (落とし穴なし)

操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...

クロスドメイン js フロントエンドの 8 つの実装ソリューション

目次1. jsonp クロスドメイン2. document.domain + iframe クロスド...

マーキー要素は、スクロールするフォントや画像などの効果を実装します。

マーキー要素を使用すると、単純なフォント(画像など)のスライドやその他の効果を実現できます。コードを...

zabbix 4.04 の詳細なインストール チュートリアル (CentOS 7.6 ベース)

1. インストール前の準備: 1.1 JDKをインストールするopenjdkをアンインストールする...

Linux 環境に nginx をインストールするチュートリアル

目次1. 必要な環境をインストールする //gccをインストールする yum で gcc-c++ を...

テーブルタグ(TAGS)の詳細な紹介

テーブルの基本構文<table>...</table> - テーブルを定義し...