看到网上一片文章说:数据库不适合Docker及容器化?
PHP中文网
PHP中文网 2017-04-27 09:01:42
0
5
876

文章连接
刚开始用docker,有点疑惑?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(5)
phpcn_u1582

データベースが docker に配置するのに適していないことに関しては、Waiguoren による 2 つの記事があり、1 つは元の投稿者によって投稿されたもので、もう 1 つはこの記事を翻訳したものです

依然として同じ視点:

ボリュームが小さい場合は気軽に実行できますが、ボリュームが大きい場合は、従来のデータベースや Docker は適切な方法ではないため、データベースを直接コンテナ化しないことをお勧めします。 、ミドルウェア システム、コンテナ化されたシステムなど、さまざまなシステムのサポートが必要です。

データベースが自動的にスケーリング、災害復旧、切り替えが可能で、独自のマルチノード ソリューションが付属している場合などには、docker の方が優れたソリューションです。

ただし、そうでない場合は、docker を使用しないでください。

原文にも非常に明確に書かれています:

リーリー

トラフィックが少ない場合は、あらゆるものをコンテナ化できます。データベース、アプリケーション、Hadoop、各種ノード、nginx。


大容量の場合、ストレージ関連のサービスはコンテナ化に適していません。アプリケーション層やビジネス層などのステートレス サービスは、キャッシュなどのメモリを大量に使用するサービスをコンテナ化できます。

簡単に言うと、災害復旧、パフォーマンス、データの整合性という 3 つの問題があります。

mysql のような従来のデータベースに関する限り、列挙できるほど多くの問題があります:

  1. mysqlをコンテナ化するには?

  2. メインデータベース mysqld がダウンした場合はどうすればよいですか?

  3. メインライブラリ dockerd がひざまずいたらどうすればよいですか?

  4. スレーブ mysqld がひざまずいた場合はどうすればよいですか?

  5. dockerd ライブラリがクラッシュした場合はどうすればよいですか?

  6. ピークが近づいたときに、コンテナーを使用して mysql を迅速に拡張できますか?プラン?

  7. データマスター/スレーブ切り替えソリューション?一貫性を確保するにはどうすればよいでしょうか?

  8. ピーク時にはボリュームが十分に大きいため、物理マシンの容量が 1 つの mysql プロセスにのみ十分である場合があります。

  9. では、これも単一のマシンですが、なぜ mysql を直接起動できないのでしょうか?

  10. なぜコンテナを外に置く必要があるのですか?パフォーマンスの低下はどの程度ですか?

  11. mysqlをアップグレードするには?

  12. データ量が増えるとデータが失われますか? (何度も破損したコンテナに遭遇しました…)

しかし、mysql はコンテナ化が完全にできないわけではありません。
データ損失に敏感でないビジネス (JD 検索で見つかった製品など) はデジタル化でき、データベース シャーディングを使用してインスタンスの数を増やすことでスループットを向上できます。

元の記事で言及されている問題については、いくつかの欠陥がありますが、よく考えられています。たとえば、次の質問は非常に問題があります (共有データ ディレクトリに関する):

リーリー

私がこれまで接したデータベースの中で、コンテナ化に適しているのはcassandraなどのデータベースだけです(tidbやcockroachdbもありますが、今のところ大企業でのユースケースには遭遇したことがありません)。

しかし、cassandra 自体もステートレスに近づいています。独自の災害復旧、容量拡張、スイッチング ソリューションを提供します。


JD.comについて触れてみましょう。

JD.com は異常値ですが、JD.com も同様の問題や注意が必要なことについて言及しています。

リーリー

さらに、docker には多くのカスタマイズが行われています。

JD.comで視聴できます。

いいねを押す +0
伊谢尔伦

適さない、できないではない。

単体のマシンで問題がなければ、それでも有利な場合もあります。たとえば、以前、私の会社の Oracle データベースがパラメータを調整していたときに、データベースがクラッシュして起動できなくなりました。したがって、それを直接実行して、元のディレクトリをポイントするだけです。

クラスターを作成する方法に関係なく、Docker や swarm などのツールを使用してクラスターを手動でセットアップするのは簡単ではありません。トラブルを避けるために、物理マシン上に直接構築することをお勧めします。

海外にはflockerやrancher’s convoyなどのdockerデータストレージソリューションを専門とする会社があります。
いいねを押す +0
PHPzhong

Docker はステートレスに適しており、サービスを変更しません。

クラスターの数が多い場合:
docker ファイルを書き込みます。次に、コードがコード ウェアハウスにアップロードされるときに、docker ファイルをデプロイした後、リリース スクリプトで docker サービスをバッチで構築し、そこにサービス コードを組み込みます。

MySQLに限らず、redisやmcもdockerに入れるのには向いていません。 つまり、dockerにデータベースを入れるだけで、あまりメリットがありません。

いいねを押す +0
曾经蜡笔没有小新

はい、docker の特性により、データベースだけでなく、ストレージ関連のすべてのサービスが docker の使用に適していないことがデータ ストレージにあると判断されるためです。

いいねを押す +0
世界只因有你

公式の mysql イメージがデータを保存するディレクトリさえわかりません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート