84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
文章连接刚开始用docker,有点疑惑?
认证0级讲师
データベースが docker に配置するのに適していないことに関しては、Waiguoren による 2 つの記事があり、1 つは元の投稿者によって投稿されたもので、もう 1 つはこの記事を翻訳したものです
依然として同じ視点:
ボリュームが小さい場合は気軽に実行できますが、ボリュームが大きい場合は、従来のデータベースや Docker は適切な方法ではないため、データベースを直接コンテナ化しないことをお勧めします。 、ミドルウェア システム、コンテナ化されたシステムなど、さまざまなシステムのサポートが必要です。
データベースが自動的にスケーリング、災害復旧、切り替えが可能で、独自のマルチノード ソリューションが付属している場合などには、docker の方が優れたソリューションです。
ただし、そうでない場合は、docker を使用しないでください。
原文にも非常に明確に書かれています:
トラフィックが少ない場合は、あらゆるものをコンテナ化できます。データベース、アプリケーション、Hadoop、各種ノード、nginx。
大容量の場合、ストレージ関連のサービスはコンテナ化に適していません。アプリケーション層やビジネス層などのステートレス サービスは、キャッシュなどのメモリを大量に使用するサービスをコンテナ化できます。
簡単に言うと、災害復旧、パフォーマンス、データの整合性という 3 つの問題があります。
mysql のような従来のデータベースに関する限り、列挙できるほど多くの問題があります:
mysqlをコンテナ化するには?
メインデータベース mysqld がダウンした場合はどうすればよいですか?
メインライブラリ dockerd がひざまずいたらどうすればよいですか?
スレーブ mysqld がひざまずいた場合はどうすればよいですか?
dockerd ライブラリがクラッシュした場合はどうすればよいですか?
ピークが近づいたときに、コンテナーを使用して mysql を迅速に拡張できますか?プラン?
データマスター/スレーブ切り替えソリューション?一貫性を確保するにはどうすればよいでしょうか?
ピーク時にはボリュームが十分に大きいため、物理マシンの容量が 1 つの mysql プロセスにのみ十分である場合があります。
では、これも単一のマシンですが、なぜ mysql を直接起動できないのでしょうか?
なぜコンテナを外に置く必要があるのですか?パフォーマンスの低下はどの程度ですか?
mysqlをアップグレードするには?
データ量が増えるとデータが失われますか? (何度も破損したコンテナに遭遇しました…)
しかし、mysql はコンテナ化が完全にできないわけではありません。 データ損失に敏感でないビジネス (JD 検索で見つかった製品など) はデジタル化でき、データベース シャーディングを使用してインスタンスの数を増やすことでスループットを向上できます。
元の記事で言及されている問題については、いくつかの欠陥がありますが、よく考えられています。たとえば、次の質問は非常に問題があります (共有データ ディレクトリに関する):
私がこれまで接したデータベースの中で、コンテナ化に適しているのはcassandraなどのデータベースだけです(tidbやcockroachdbもありますが、今のところ大企業でのユースケースには遭遇したことがありません)。
しかし、cassandra 自体もステートレスに近づいています。独自の災害復旧、容量拡張、スイッチング ソリューションを提供します。
JD.comについて触れてみましょう。
JD.com は異常値ですが、JD.com も同様の問題や注意が必要なことについて言及しています。
さらに、docker には多くのカスタマイズが行われています。
JD.comで視聴できます。
適さない、できないではない。
クラスターを作成する方法に関係なく、Docker や swarm などのツールを使用してクラスターを手動でセットアップするのは簡単ではありません。トラブルを避けるために、物理マシン上に直接構築することをお勧めします。
Docker はステートレスに適しており、サービスを変更しません。
クラスターの数が多い場合: docker ファイルを書き込みます。次に、コードがコード ウェアハウスにアップロードされるときに、docker ファイルをデプロイした後、リリース スクリプトで docker サービスをバッチで構築し、そこにサービス コードを組み込みます。
MySQLに限らず、redisやmcもdockerに入れるのには向いていません。 つまり、dockerにデータベースを入れるだけで、あまりメリットがありません。
はい、docker の特性により、データベースだけでなく、ストレージ関連のすべてのサービスが docker の使用に適していないことがデータ ストレージにあると判断されるためです。
公式の mysql イメージがデータを保存するディレクトリさえわかりません。
データベースが docker に配置するのに適していないことに関しては、Waiguoren による 2 つの記事があり、1 つは元の投稿者によって投稿されたもので、もう 1 つはこの記事を翻訳したものです
依然として同じ視点:
ボリュームが小さい場合は気軽に実行できますが、ボリュームが大きい場合は、従来のデータベースや Docker は適切な方法ではないため、データベースを直接コンテナ化しないことをお勧めします。 、ミドルウェア システム、コンテナ化されたシステムなど、さまざまなシステムのサポートが必要です。
データベースが自動的にスケーリング、災害復旧、切り替えが可能で、独自のマルチノード ソリューションが付属している場合などには、docker の方が優れたソリューションです。
ただし、そうでない場合は、docker を使用しないでください。
原文にも非常に明確に書かれています:
リーリートラフィックが少ない場合は、あらゆるものをコンテナ化できます。データベース、アプリケーション、Hadoop、各種ノード、nginx。
大容量の場合、ストレージ関連のサービスはコンテナ化に適していません。アプリケーション層やビジネス層などのステートレス サービスは、キャッシュなどのメモリを大量に使用するサービスをコンテナ化できます。
簡単に言うと、災害復旧、パフォーマンス、データの整合性という 3 つの問題があります。
mysql のような従来のデータベースに関する限り、列挙できるほど多くの問題があります:
mysqlをコンテナ化するには?
メインデータベース mysqld がダウンした場合はどうすればよいですか?
メインライブラリ dockerd がひざまずいたらどうすればよいですか?
スレーブ mysqld がひざまずいた場合はどうすればよいですか?
dockerd ライブラリがクラッシュした場合はどうすればよいですか?
ピークが近づいたときに、コンテナーを使用して mysql を迅速に拡張できますか?プラン?
データマスター/スレーブ切り替えソリューション?一貫性を確保するにはどうすればよいでしょうか?
ピーク時にはボリュームが十分に大きいため、物理マシンの容量が 1 つの mysql プロセスにのみ十分である場合があります。
では、これも単一のマシンですが、なぜ mysql を直接起動できないのでしょうか?
なぜコンテナを外に置く必要があるのですか?パフォーマンスの低下はどの程度ですか?
mysqlをアップグレードするには?
データ量が増えるとデータが失われますか? (何度も破損したコンテナに遭遇しました…)
しかし、mysql はコンテナ化が完全にできないわけではありません。
データ損失に敏感でないビジネス (JD 検索で見つかった製品など) はデジタル化でき、データベース シャーディングを使用してインスタンスの数を増やすことでスループットを向上できます。
元の記事で言及されている問題については、いくつかの欠陥がありますが、よく考えられています。たとえば、次の質問は非常に問題があります (共有データ ディレクトリに関する):
リーリー私がこれまで接したデータベースの中で、コンテナ化に適しているのはcassandraなどのデータベースだけです(tidbやcockroachdbもありますが、今のところ大企業でのユースケースには遭遇したことがありません)。
しかし、cassandra 自体もステートレスに近づいています。独自の災害復旧、容量拡張、スイッチング ソリューションを提供します。
JD.comについて触れてみましょう。
JD.com は異常値ですが、JD.com も同様の問題や注意が必要なことについて言及しています。
リーリーさらに、docker には多くのカスタマイズが行われています。
JD.comで視聴できます。
適さない、できないではない。
単体のマシンで問題がなければ、それでも有利な場合もあります。たとえば、以前、私の会社の Oracle データベースがパラメータを調整していたときに、データベースがクラッシュして起動できなくなりました。したがって、それを直接実行して、元のディレクトリをポイントするだけです。クラスターを作成する方法に関係なく、Docker や swarm などのツールを使用してクラスターを手動でセットアップするのは簡単ではありません。トラブルを避けるために、物理マシン上に直接構築することをお勧めします。
海外にはflockerやrancher’s convoyなどのdockerデータストレージソリューションを専門とする会社があります。Docker はステートレスに適しており、サービスを変更しません。
クラスターの数が多い場合:
docker ファイルを書き込みます。次に、コードがコード ウェアハウスにアップロードされるときに、docker ファイルをデプロイした後、リリース スクリプトで docker サービスをバッチで構築し、そこにサービス コードを組み込みます。
MySQLに限らず、redisやmcもdockerに入れるのには向いていません。 つまり、dockerにデータベースを入れるだけで、あまりメリットがありません。
はい、docker の特性により、データベースだけでなく、ストレージ関連のすべてのサービスが docker の使用に適していないことがデータ ストレージにあると判断されるためです。
公式の mysql イメージがデータを保存するディレクトリさえわかりません。